Full stack engineer who builds with AI agents, and builds them.
I build web apps with TypeScript, React, and Node, and AI agents are a big part of how I work every day. I write specs they can follow and check their work with tests and screenshots before anything ships. I also know when a problem doesn't need AI at all.
Before software, I spent eight years as a high school band director. I still build for teachers, and I still care most about the people using what I make.

A Claude Code plugin that takes a feature or bug from a plain-English request to a reviewed, tested change.
Each model gets the job it's best at. Haiku scouts the codebase in parallel, Sonnet plans and builds, and Opus only steps in at three review checkpoints. You get Opus-level review without paying Opus prices for every step, and no run counts as done without screenshot proof.
Claude Code plugin / subagents / Haiku, Sonnet, Opus
An AI agent that posts Counter-Strike 2 match and career cards to Discord from Leetify data.
The model writes exactly one sentence. The stats, ratings, badges, and whether the note roasts or praises you are decided by plain code, which keeps it cheap, testable, and unable to invent a number.
eve agent / AI SDK / OpenAI / Turso / Discord API
Software for school band directors that keeps rosters, concert seasons, the music library, seating charts, and instrument inventory in one place.
I built it for the job I used to do. The product, its vocabulary, and every architecture decision are written down in PRODUCT.md, CONTEXT.md, and ADRs, so AI agents build to the spec instead of guessing.
React Router 8 / Cloudflare Workers / D1 / Drizzle / Better Auth
Shipment tracking for a cargo company shipping to Nicaragua. Staff update each shipment's status and clients check it with a short code.
Clients get a lookup code instead of an account, because a code on a paper receipt is all they need. English and Spanish from day one, and WhatsApp updates that staff send with one tap.
TanStack Start / Cloudflare Workers / D1 / DrizzleSave any article and get an AI summary of it.
Firecrawl pulls clean text out of the page before the model sees it, so the summary covers the article, not the navigation and ads around it.
Next.js / Convex / Firecrawl / OpenAI
An OBS overlay that plays a clip of another streamer when the streamer or a mod types the shoutout command in chat.
No login and no bot account. The overlay reads chat anonymously and your settings live in the OBS URL itself, while the Twitch API keys stay on the server. Shoutouts queue up, avoid repeating clips, and fall back to a creator card when there's no video to play.
Astro / React / Twitch API / Netlify