How I build with AI
I work with AI tools daily, and I don't outsource thinking. This page is the receipts version of that sentence: what actually gets delegated, what gets verified by hand, and where the line sits on real, shipped work — not a demo built for a blog post.
AI accelerates. Judgment is not delegatable.
The loop is always the same: plan first — the model gets a spec, not a vibe. Scaffold fast — generation is where AI genuinely multiplies pace. Review like it's a stranger's PR — because functionally, it is. Writing code stopped being the bottleneck; deciding what code should exist, and whether this code is that code, is the job now.
Tools change. Standards don't. The verification bar — spec-checked accessibility, tested edge cases, honest metrics — is identical whether the first draft came from my hands or a model.
Receipts, not vibes
Four examples from shipped work. Each one names what the AI did, what I did, and which artifact you can inspect.
- RAG pipeline scaffoldingWaco3.io · production
Claude Code scaffolded the retrieval-augmented generation pipeline; the scaffold reached a working pipeline in hours. Then the real work: output quality was validated through user testing and real proposal scenarios, and the tuning took weeks. Hours to working, weeks to right — that ratio is the honest shape of AI leverage. Case study →
- Prompt architectureWaco3.io · 20+ iterations
The tone-matching prompt architecture went through more than twenty iterations. AI made exploring alternatives fast; the evaluation stayed manual — reading generated proposals against real-world examples, because "sounds plausible" and "a freelancer would send this" are different bars. Case study →
- Combo state machine@reactzero/combo · npm
Claude Code scaffolded the combobox state machine. Every ARIA attribute was then verified by hand against the WAI-ARIA 1.2 specification. The machine runs correctly because a model drafted it; the accessibility is correct because a human read the spec. Case study →
- Bundle strategyReactZero · all four libraries
AI assistance surfaced tree-shakeable entry points and subpath export patterns early in the architecture. But the constraint isn't held by a model's good intentions — size-limit budgets in CI enforce it on every commit. AI proposes; tooling holds the line. Case study →
Where the line sits
Delegated, gladly
- Scaffolding: pipelines, state machines, component shells, test harnesses
- Exploring alternatives fast — twenty prompt variants, three layout directions, parallel prototypes
- Mechanical refactors and repetitive transformations
- First-draft documentation that a human then makes true
Never delegated
- Accessibility: every ARIA role, every keyboard path, verified against the spec and with real screen readers
- Interaction edge cases and state transitions — the places users actually get hurt
- Design fidelity and taste calls: spacing, motion, hierarchy
- Money paths: Stripe webhooks and billing logic get human eyes, every time
- The decision of what to build at all
I also build for AI
Using AI well and designing for it are the same literacy. Every ReactZero library ships an ai-reference.md — structured documentation written for AI coding assistants, so when someone integrates a component through Claude Code or Cursor, the model generates correct, accessible code instead of a plausible guess. And Waco3.io is an AI product whose interface work — streaming as a design material, edit-in-place trust patterns, human-in-the-loop by default — is documented in its case study.
I think about this in public
A selection from the writing section — the workflow above, argued one piece at a time.
- The best AI workflow ends with human reviewThe operating rule, argued in full.
- Agents should show their workWhy visible reasoning beats confident output.
- Hooks are where AI coding gets seriousGuardrails as configuration, not vigilance.
- How to give an LLM a design systemThe thinking behind ai-reference.md.
- Subagents are not employeesDelegation models that actually work.
- Claude Code skills: procedures with memoryEncoding workflow so it compounds.