How I build
A career page tells you what somebody was hired to do. This one is closer to what the work actually looks like: how many surfaces are live at once, what the tooling underneath it is, and how the load moves across a year.
21 surfaces in twelve months
Web is the bulk of it, but a browser extension and a native macOS client are in the same year, and the data services under all of it are mine too. Breadth here means the whole stack, not a wide list of similar things.
- Web applications10Client-facing and internal product surfaces at Katch.
- Katch VerifiedKatch Verified WhitelabelKatch AIAudience Analysis PlatformIdentity Passport PortalMy Katch OSCreator PlaybookWho Am IJoin KatchInvestor Portal
- Data & ML services3The pipelines and models the product surfaces sit on top of.
- Identity GenomeIdentity to SongKatch External API
- Browser extension1Chrome extension putting creator and audience data where the work happens.
- Katch Chrome Extension
- Desktop application1Native macOS client, written in Swift.
- Katch Desktop
- Independent ventures6Built outside the day job, on my own time.
- Superbloom / Creative CollectiveMirror MirrorSideskickDrone DetectionAI & video researchPrototypes
In the wild

Katch Data
The platform layer. Semantic analysis across film, television, social, music, and books, exposed for anything downstream to query.

Katch Party
Taste learned from poster swipes. The artwork is both the thing being rated and the thing being personalized, which is the whole reason it works on a title nobody has watched yet.

Identity Passport
An identity layer for personal AI. You author your profile once and share it selectively, instead of every assistant guessing from scratch.

Identity to Song
A consumer product that turns an identity genome into a composed song and a written report. Built the job and asset model behind it and the report surface on top.
Agents as the execution layer
Agents are the execution layer, not an autocomplete. Most of my time goes into the harness: how the problem is constrained, what context the agent gets, what it is allowed to touch, and how it reports back. Long-running work checks in on a heartbeat, so a stalled or drifting run surfaces itself instead of quietly burning tokens. A triage step classifies the task and picks the model tier before real work starts.
~15,000 tool calls, Apr to Jul 2026. What the mix shows is that most of the work is reading, running, and verifying against a real system rather than generating text into a void.
- ShellGit, data pipelines, and system automation5,815
- Targeted editsDiff-based changes across the codebase2,972
- File readsGrounding every change in the real code1,996
- Browser verificationChecking UI changes in a live browser766
- File writesAuthoring new modules and reports627
- Sub-agent delegationFanning work out to parallel agents513
- Tool discoveryLoading capabilities on demand349
- SQL over MCPQuerying and shaping production data261
- Schema migrationsApplied against live databases35
Languages, by files authored
- TypeScript1,049
- Python791
- React (TSX)771
- Swift704
- JavaScript511
A year of it
Commits per month by track, across 27 repositories. The shape is the point: the day job and the independent work run at the same time, and neither one stops.
Built on my own time
Superbloom / Creative Collective
2026STOVE, a brief-to-talent engine for a creative collective. A producer describes what they need in plain language, the system extracts format, archetype, industry, and location, then ranks the roster and returns a short list with the reasoning behind each name. Built solo for a live demo at Cannes.
Next.js · TypeScript · Gemini · Supabase
Mirror Mirror
2025 to 2026A consumer product venture, built and shipped on nights and weekends alongside the day job.
TypeScript · React
Sideskick
2026A personal tooling venture. One of several side builds kept alive across the year rather than abandoned at the prototype stage.
TypeScript · Python
Drone Detection
2026A computer-vision side project on detection against cluttered backgrounds. The same detection and estimation problem I started on at Lincoln Laboratory, with better hardware.
Python · Computer vision
Where these numbers come from
Commits, file counts, and languages come from local git history across 27 repositories, August 2025 through July 2026, with vendored and virtual-environment paths stripped. Tool-call figures come from the local Claude Code session store, which retains April through July 2026 on this machine. Surface counts are products and applications worked on during the year, which is not a claim that each one reached general availability. No client data, message content, or source code is included in any of it.