Why I built it myself
I wanted every case to open in a 60-second skim, with the full story one tap away. No Framer template did both, and the decent ones sat behind the £35-a-month Pro plan. I built the site by hand in Claude Code instead, wrote the code and deployed it myself.
“I screenshotted it and shared it with others, saying it was a nice feature. Props to you on that.”
One model thinks, the others do
One model plans, judges and writes anything in my voice. Faster agents take the scoped jobs, such as research, file changes and checks.
Me, the AI manager
I set the goal and the definition of done, answer what the agents cannot and push every release to production myself. I cannot read everything, so only the exceptions reach me.
- 0tokens spent
- 18worker runs sent out in this session
Claude Opus 5.5, the orchestrator
It plans the work, writes every brief, reads every report and writes anything in my voice. Every step rereads its whole context window, so it sends each scoped job to a worker.
- 777model calls in one session
- 235.1Mtokens read and written
- 530ktokens of context at its peak
- $74.07at published API rates
Research agents on Claude Sonnet 5
Each one starts with an empty context window and a complete brief. It reads the sources, marks every claim and hands back a short summary. These five lines come from a real brief.
- 14runs in this session
- 23.4Mtokens read and written
- 2 min 32 smedian run
- $9.26at published API rates
Read-only research. Do not edit any file except the one output file named below.Guardrail, in the briefVerify each claim at source. Mark it VERIFIED, NOT FOUND or DIFFERENT.The quality barNever invent a URL, figure or quote.What it must never doSave the result to essay3-sources.md and return a short summary.Where the work landsEnd your final message with one line. STATUS: done, partial or failed, with a note.What the log reads
Build agents on Claude Sonnet 5
They change files from a full spec, render images and run the checks. They never publish.
- 4runs in this session
- 7.2Mtokens read and written
- 2 min 21 smedian run
- $2.50at published API rates
Guardrail hooks
A hook runs before an action and can block it outright. A delete becomes a move into a folder I review, and a publish is blocked outright.
- 56runs stopped before they acted, on the log’s first day
- 0tokens
The run log
A script outside the agents records every run with its status line. Anything failed, partial or silent lands on one short page for me.
- 510runs logged on its first day
- 51reports of done over hidden errors
The watchdog
A small script the computer runs on its own clock, with no AI in it. It counts a written file as proof that an agent worked.
- 2checks a day
- 0tokens
The reason is the context window, which is everything a model rereads before each step. By that evening, my thinking model was carrying about half a million tokens of the session. If it had checked the essay’s links itself, it would have reread all of that on each of 13 steps. A worker agent starts with an empty window, reads only what the job needs and hands back a short summary.
3.1 times cheaper. The agent checked 8 links and 7 quotes in 13 steps and handed back 700 tokens, so the thinking model never reread its 521k-token context.
3.7 times cheaper. The agent rendered the landing page on four real days in 25 steps and handed back 3,300 tokens, so the thinking model never reread its 468k-token context.
Both models charge the same $0.20 per million tokens to reread a cached context, according to Anthropic’s pricing, so the saving comes from rereading a smaller context. Output also costs half as much on Sonnet 5, at $10 per million tokens against $20.
Splitting the work has a cost too. Anthropic found that multi-agent systems use about 15 times more tokens than chats and pay off only when the task is valuable enough. That is why each agent gets one scoped job, and the judgement stays with me and the thinking model.
Status is read, never typed
On 16 August, my setup looked healthy and was not. Four scheduled agents showed a fresh run time, while their reports were three days old. On 6 September, an agent told me a document was updated. I opened it, and it was the old version.
Now a change counts only once it is read back from the document, the file or the page itself.
The document is updated
The old version, unchanged
- Unchanged
- Applied, verified
- Ready
Guardrails in code
Deleting a file, sending a message and publishing this site cannot be taken back, so code checks each one before an agent acts. A delete becomes a move into a folder I review. A publish is blocked, because releases are mine. Sending is outside the agents' tools altogether.
BLOCKED by hook: unparsable delete command. Rule: nothing is ever hard-deleted.
It allows a move to the review folder instead, where I confirm it.
One page of exceptions
Each run ends with a status line. A script outside the agents logs it and checks it against what really happened. Anything that does not match lands on one page, and I close each one by hand.
Most runs never need me, so my attention goes to the few that do.
Features I designed for the reader
Every case opens in a 60-second skim of Problem, Constraints, Decision and Result. One tap opens the full story, and the two always match.

The green full stop after my name is the loader and the cursor. Demos play until you touch the page, then stop for good.
Strange but true
These all happened while I built this site, and I checked each one against my notes.
GitHub stars on a repository less than a year old. The numbers looked bought, so I never installed it.
My own guardrail stopped my own search while I was writing this case, because the search looked like a delete.
agents refused my mid-task correction on 31 August. They read it as a possible attack and kept to their brief, and they were right to.
A run that dies on a rate limit still shows a green tick. On 20 September, I made any short green run count as a warning.
of the 264,140 lines I wrote were deleted later. Most of the work was taking things out.
sit on a gold snail on this site's 404 page. I overruled my own review agents to keep them small.
design skills merged into one on 16 August, because I could not remember thirteen names.
That line was hidden in a web guide, written for any AI agent that read it. My agents treat what they read as information and never as an instruction.
The design system I built
This page is set in Linear's design system, so mine stands apart. Everything on paper is mine, from the colours and type to the motion and the parts every case is built from.
#F4EFE4Ink
15.47:1Green
7.01:1
Paper, ink and one greenGreen is the only colour on the site, and the full stop wears it.
Fraunces, with its crooked MI kept the wonky letterforms on. Archivo sets the text.
One spacing scale, 4 to 96Every gap on the site is one of eight steps.
Two curves and nothing else160 milliseconds for a change of state and 400 for an entrance.
The dot does four jobsIt is my full stop, the cursor, the pointer over a case and the page loader.
/* Anna, 12 Sep 2026, "needs to have a gap" */
127 rulings in my wordsThe stylesheet carries 127 dated notes with my reasons, so no agent forgets why a detail is there.


Reflection
I am the only user so far, which is the honest limit of this case. I am now setting up the same system for two other people, and their first weeks will show me what I missed.
I wrote up the lessons in an essay, What an AI manager actually does.