Skip to content
All builds

HatchStartup-in-a-Box

What it does for you

One line in, a launch kit out: six agents on a typed blackboard, a live DAG, and a critic that sends quoted fixes back.

Hatch screenshot

Screenshots

Hatch screenshot 1

In more detail

You type a one-line business idea, and a team of six AI agents builds a launch kit: strategy, brand, offer, copy, and a one-page site. A critic agent reviews the work and sends pieces back for fixes. Most multi-agent demos bury the coordination in a log. I wanted to show it: who waits on whom, what runs in parallel, what each agent is allowed to touch, and what happens when the reviewer says no.

Honest limits

Claude mode is tested only against the fake API. It has never run against the live Messages API. The rerun, lock, and export buttons were checked by reading the code and the demo DOM, not by a scripted browser. Idea parsing is simple: it once read "in the park for seniors" as a city until the pattern learned to stop at "for".

How I built it

Claude Code built this on September 24, in one session of about half an hour of wall clock. It wrote the core as small modules (orchestrator, a shared blackboard with a schema check, six local agents, the critic, a Claude adapter, and a ZIP writer) and a 319-assertion test suite. That suite includes a fake Messages API that exercises repair, refusal, HTTP errors, the budget cutoff, and invented critic quotes.

I set the rules. The Critic must quote the exact text it objects to, and the core verifies the quote. Code owns the facts: contrast ratios, the logo SVG, ad scores, and the HTML are computed, not generated. And the Site Builder stays local even in Claude mode.

The dependencies are derived from data. An agent depends on another when it reads a key the other writes, and the blackboard refuses any write to a key the agent did not declare. Brand and Offer run in parallel once the Strategist finishes; the Copywriter waits for both.

What I learned

  • A budget has to know which steps cost money. My first version checked the budget before every step, so once Claude spent the cap, the free local Site Builder refused to run and the Critic stalled. Marking which runners are paid fixed it.
  • Retries and repairs are different failures. A network blip deserves a retry. A refusal, a missing key, or a reply still invalid after one repair does not, so those carry a noRetry flag and the orchestrator never pays twice for the same bad answer.
  • Making the reviewer quote its evidence, and checking the quote exists, is a cheap guard against a model inventing problems. The test feeds it a fake quote and confirms the Offer agent is never sent back.
  • Deterministic local agents are not just a fallback. Same idea in, same kit out, same trace. That made the whole pipeline testable, and their output doubled as realistic fake API replies.

What carried forward

The stream kept dropping long replies that day, so everything was written as files under about 4 KB, the rule we adopted after the September 20 stall. The core ended up as 18 modules, which also made each one easier to test. One bug was a Write that turned an escape code into a literal em dash character; the fix (building that character with String.fromCharCode plus a repo-wide dash test) is the same one #88 needed the same day.

If I took it further

I would stream each agent's output into its card as it arrives, and let you edit the Critic's checklist in the UI.

#087 Built with Claude Code September 24, 2026 319 automated checks

Want one like this?