← work Case study · platform · 2026

email innovation hub: nine agents behind a quality gate.

A centralised platform where AI agents scaffold, fix and review production email, and a ten-point automated gate decides what ships. Designed and built solo, on my own time, around the hardest consistency problem in design.

9
specialised agents
10
automated gate checks
261
API endpoints
7,055
tests

The context

Ten years inside agency email teams showed me the same day, everywhere. A designer hands off a comp. A developer rebuilds it in table-based HTML, by hand, for the fourth brand this week. It renders in the browser and breaks in Outlook. Dark mode inverts a logo. QA is a person squinting at ninety Litmus screenshots at 6pm. The expensive part was never the first version; it was holding one design consistent across dozens of rendering engines that disagree about the meaning of a pixel. The web solved cross-browser twenty years ago. Email never did.

The bet

If the consistency rules can be written down, machines can hold them. So the platform treats email craft as a system: agents do the scaffolding, the dark-mode surgery, the Outlook fixes and the copy variants, and an automated ten-point gate checks rendering, accessibility, file weight, spam signals and dark mode before a human ever reviews. People spend their judgement on the brief and the brand; machines hold the pixels.

The email hub workspace: agent crew panel on the left, live email build in the centre, pipeline activity and a human-in-the-loop approval prompt on the right
The workspace: agent crew left, the live build centre, pipeline activity and a human-in-the-loop pause right. An agent-generated surface, built against the platform's own token contract. tap to enlarge

The design decisions

The workspace is a single surface.

Code editor, live preview and agent chat sit together, because email work is a conversation between intent and rendering, and every tab switch between those was waste.

The gate is a UX, not a report.

Each of the ten checks returns a verdict a non-developer can act on, next to the thing it refers to, so a failed check becomes a task rather than a finding.

The design system is built from the tokens up.

Tiered tokens, primitives beneath a semantic contract, atomic components above, one icon sprite, one shell. Agents generated the platform's densest surfaces (workspace, QA engine, approvals, render views) against that single contract, and they read as one product. Because components touch only the semantic tier, the system re-skins in one file and can adopt any component library without breaking. The AI never drives the UX decisions; it presents the data inside a system a human designed.

Design syncs from Figma.

The design source of truth stays where designers work; the platform pulls it into coded, versioned components, so the system in Figma and the system in production cannot quietly diverge.

Approval is part of the product.

Clients review, comment and sign off inside the platform with an audit trail, because in agency life the approval loop is where weeks actually go.

Personas make QA honest.

Test profiles for device, email client and dark mode, so "does it work" is a checklist run by machines, not a hope.

The platform remembers.

A retrieval-backed knowledge module, pgvector with hybrid search, answers from the team's own accumulated craft: past fixes, client rules, rendering quirks and the decisions behind them. Agents consult it before proposing, so the platform's judgement compounds instead of resetting with every brief. It is the working version of the design knowledgebase described on the practice page.

The approval view: client verdicts, comments and an audit trail inside the platform
Approval in-product: verdicts, comments and the audit trail, so sign-off stops living in email threads. tap to enlarge
The QA engine: deterministic checks with scores and verdicts, a repair pipeline of eight stages, and an adversarial pass summary
The QA engine: deterministic checks with verdicts, a self-repair pipeline and an adversarial pass. A failed check is a task next to the thing it refers to, not a PDF at the end of the week. tap to enlarge

What shipped

The MVP is deployed and live: FastAPI and Next.js, 261 endpoints, 7,055 tests, 867 commits, designed and built solo on my own time, with the IP mine. Several of its features were put forward for adoption at Dentsu before my role was made redundant.

What I learned

Craft scales when you stop shipping it as effort and start shipping it as infrastructure. The gate outperforms the most careful reviewer at 6pm, and it never gets tired of Outlook. That idea, quality held by machines so people can spend taste where it counts, is now the centre of my whole practice.