I built the portfolio end to end because no Framer template offered the skim I wanted
I built the skim for hiring managers, who have minutes for each portfolio. I wanted every case to open in 60 seconds, with the full story one tap away. No Framer template came close. On Framer, I would still have built it from scratch and paid £42 a month for the Pro plan, plus the domain. So I designed the site and built it myself in Claude Code.
“I screenshotted it and shared it with others, saying it was a nice feature. Props to you on that.”
I am the only human in the loop, with more than 900 agent runs logged in two days. I have to catch the AI slop, verify that each task is finished and stop a new session from breaking what an earlier one built.
I designed the agent team so one model plans and faster agents carry out complete briefs
At every step, a model rereads its context window, everything it holds for the session. Every reread is billed. By the evening of 23 September, my thinking model held about half a million tokens, the units a model reads and pays by. A worker agent starts empty, reads only what the job needs and hands back a short summary.
So one model plans, judges and writes anything in my voice, and faster agents take the scoped jobs, such as research, file changes and checks.
Select a level
Me, the AI manager
I set the goal and the definition of done, and I sign off every release myself.
- 0tokens spent
- 18worker runs sent out in this session
Claude Opus 5.5, the orchestrator
It plans the work, writes every brief and reads every report.
- 777model calls in one session
- 530ktokens of context at its peak
Research agents on Claude Sonnet 5
Each one starts empty with a complete brief, checks 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 delete becomes a move into a folder I review, and a publish is blocked outright.
- 118runs stopped before they acted, over two days
- 0tokens
The run log
A script outside the agents records every run, and anything failed, partial or silent lands on one page for me.
- 911runs logged over two days
- 89reports of done over hidden errors
The watchdog
It runs on the computer’s own clock with no AI in it, and it counts a written file as proof that an agent worked.
- 2checks a day
- 0tokens
3.1 times cheaper
The agent checked 8 links and 7 quotes in 13 steps.
3.7 times cheaper
The agent rendered the landing page on four real days in 25 steps.
Every task status is read back from the result before it counts
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 had been updated. I opened it, and it was the old version.
Until then, I relied on the standard spot checks and QA. A spot check sees only the runs I open, and the log held over 400 runs a day.
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 check every irreversible action before an agent acts
At first, every rule lived in writing, in the briefs, the instruction files, the skills and the PRDs. A written rule guides an agent, and only code can stop one.
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 I release the site myself. 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.
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.
Two of the three 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.
stars on a repository less than a year old. The numbers looked bought, so I never installed it.
An observability layer turned 911 agent runs into one page of exceptions
Each run ends with a status line. A script outside the agents logs it and checks it against the result. 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. Across 911 runs on 23 and 24 September, the log flagged 89 that said done over a hidden error. Guardrails stopped 118 before a risky action went ahead.
Since 21 June, the site has grown to four case studies, this page and three essays over 443 commits, and I published every release myself.
I built the design system the other case studies run on
This page borrows Linear’s design system. Mine is on the paper-coloured cards below, and the colours, type, motion and components in it are all my own. Every other case study is built from them. I also merged 14 design skills into one, so every build starts from the same design rules.


One 8px corner radius on every component
Over 120 design decisions, logged for the agentsEach rule in the stylesheet records its rationale and its date, so the reasoning stays with the decision.
The same orchestration now runs my research, writing and design work
I designed this system to build one portfolio. Every rule I learned here now goes into the first brief of each new piece of work.
A former colleague has since run a task on it too, from my brief, inside my guardrails and checked on the run log.
I wrote up the lessons in an essay, What an AI manager actually does.