Colophon
I built this site the way I build products
The agent wrote the code. I defined what the site had to accomplish, what it was not allowed to compromise, and what had to be checked before it could ship.
- 16Static pages
- 0Client-side scripts on content pages
- 22 / 22Colour pairs passing
- 10Old essay URLs preserved
The brief came before the build
I wrote the standard before touching the design, so disagreements resolved against it rather than against taste — and while changing course was still cheap.
Every requirement names its verifier. Most are enforced by a script that fails the build. The rest are read by a person, and the page says which is which.
A hiring manager can place me in the first minute
Time constrained, highly trained, hard to impress.
Every important claim has evidence
A working product, a component library, a design artifact, or a visible result should sit close to the claim it supports.
Leadership reads as capability
The site should show how I establish direction, improve decisions, and raise the quality of other people’s work — not simply state the title I have held.
The site demonstrates the practice it describes
I claim that I direct AI agents to produce production code. The portfolio should provide evidence of that practice in its own construction.
What changed
I read the previous site end to end first: nine essays, three project cards, a summary, three references.
The leadership argument was clear. The evidence was not. Most of it ended in a deck, and almost nothing could be opened.
BeforeLeadership claims came first
NowRunning work comes first
BeforeProjects linked mostly to decks
NowClaims sit beside inspectable evidence
BeforeEvidence appeared late
NowThree projects establish the story immediately
BeforeThe hero pushed work below the fold
NowLeadership writing follows the product work
BeforeAccessibility depended on manual attention
NowAccessibility decisions are part of the build
Product work comes first because it establishes what I can make. The essays explain how I lead the people and systems around it.
Directing the agent
The agent wrote the implementation. I set the objective, the boundaries, the design system, the review criteria, and the actions that needed approval.
I read every consequential change, and rejected plausible work that weakened the argument, introduced an unsupported fact, or cost more than it returned.
Code made those decisions cheap to test. A background change is one token. A typography change took an unused font out of the whole build. Every change is checked against the same system before it ships.
Generation made options cheaper. It did not make judgment optional.
The quality gates
Some things a machine can check. Some it cannot. The build draws that line.
The first gate matters most. The site argues that every claim can be opened, so a dead deployment fails the build the same way a broken link does.
Every deployment and design file the site points at still answers.
Every colour pair meets WCAG AA at the smallest size where it appears.
No unfinished slot or unapproved line ships unnoticed.
Every URL preserved from the previous portfolio still resolves.
No internal link returns a 404 or points to a missing anchor.
Content pages ship without client-side JavaScript.
Every image has alt text, and no two images share it.
Every page has one H1 and a logical heading sequence.
The first line of every page lands in the same place.
Scripts hold the rules that can be stated exactly. People hold meaning, hierarchy, and whether the argument lands.
Contrast is computed, not assumed
Every pairing is checked at the smallest size it appears. It failed twice during the redesign. Both times the token changed rather than the component, so the fix propagated everywhere.
22 of 22 documented colour pairs pass.
| Pair | Ratio | Needs |
|---|---|---|
| Aaink on paper | 17.43 | 4.50 |
| Aaink-2 on paper | 7.71 | 4.50 |
| Aasignal on paper | 5.91 | 4.50 |
| Aaink-2 on header | 6.19 | 4.50 |
View all 22 colour-pair results
| Pair | Ratio | Needs | Used for |
|---|---|---|---|
| Aaink on paper | 17.43 | 4.50 | body + headings |
| Aaink-2 on paper | 7.71 | 4.50 | secondary prose |
| Aaink-3 on paper | 5.50 | 4.50 | mono labels @ 11px |
| Aasignal on paper | 5.91 | 4.50 | links, section numbers |
| Aalive on paper | 5.99 | 4.50 | live-product marker |
| Aaink on paper-raised | 16.84 | 4.50 | card text |
| Aaink on paper-sunk | 14.49 | 4.50 | sunk panel text |
| Aaink on row | 16.00 | 4.50 | banded row text |
| Aaink-3 on row | 5.05 | 4.50 | banded row detail @ 16px |
| Aamachine-ink on machine | 14.17 | 4.50 | terminal body text |
| Aamachine-ink-2 on machine | 6.41 | 4.50 | terminal dim text |
| Aamachine-ink on machine-raised | 12.72 | 4.50 | raised panel text |
| Aasignal-ink on signal | 5.91 | 4.50 | inverted signal label |
| Aaink on header | 14.00 | 4.50 | wordmark on the header |
| Aaink on note | 16.71 | 4.50 | disclosure body text |
| Aaink-2 on note | 7.39 | 4.50 | disclosure eyebrow @ 11px |
| Aaink-2 on header | 6.19 | 4.50 | reference attribution @ 11px on the band |
| Aaink-2 on header | 6.19 | 4.50 | header sentence @ 11px |
| Aasignal on header | 4.74 | 4.50 | current-page marker on the header |
| Aaheader-rule on header | 1.44 | 1.40 | header hairline |
| Aarule-strong on paper | 2.07 | 1.40 | hairline rules |
| Aarule on paper | 1.61 | 1.40 | hairline rules (subtle) |
What the result proves
The point is not that an agent can build a portfolio. It is that a clear operating system turns fast generation into work someone will sign.
The site is static, accessible and inspectable. The code is public, the claims connect to running work, and the checks encode standards that outlast whoever set them.
That is the problem I work on elsewhere: make intent explicit enough that people — and now agents — can act on it without lowering the standard.