Introducing the “what I made this afternoon” series
Two weeks ago Ioana Teleanu consolidated thirty designers’ AI workflows into a map of how the field actually works now, and closed it with the question nobody in the thread had answered: if judgment is our remaining value, what is our quality control for judgment itself? Cem Kurtaraner put the economics of it in one line in the same thread: “We’ve lowered the cost of proposing solutions, but not the cost of judging them.”
This series is me building an answer in public. Today’s piece: the contract.
What exists as of tonight
A file called DESIGN.md now sits as the first commit of a repo I’ll be building in for the next month. Every design tool this year has converged on the same move, feeding agents a context file so generation follows the rules: Google published a DESIGN.md spec in April, Anthropic’s design tools infer systems from your repo, and there’s a public collection of fifty-five DESIGN.md files reverse-engineered from real brands. Almost all of them are token lists. Colors, type scales, spacing. Spec sheets.
The file I wrote today is trying to be a different kind of document, because tokens were never the hard part. The hard part is the layer above them: what I refuse, why, and how anyone, including a machine, could check whether a page is actually mine.
Three decisions from the session
The purpose line came first, and it’s the sentence the rest of the file answers to: output judged against this contract should read as the work of a principal-level designer, not as tool-default output. Which forced an uncomfortable rule: a page that passes every mechanical assertion and carries no visible opinion fails the contract’s purpose. Compliance is the floor, not the grade.
The palette got reversed, and the reversal is staying in the record. I started by reaching for a fashionable one: warm cream, saturated ultramarine, a sharp red, a combination that looked considered in isolation and started competing with the work it was meant to frame. I threw the accent system out and kept the site deliberately neutral, each project owning its color while the site’s identity comes from typography, composition, annotation, figures, and rhythm. I’m publishing the reversal because the discarded decision is part of the design reasoning: showing where a plausible choice failed the larger system says more about judgment than presenting the final palette as if it had been inevitable.
The refusals took the longest and matter most. Eight prohibitions with replacements: no cards as the default container, no pill UI as decoration, no bento grids, no decorative gradients or glow, no gratuitous rounding, no sparkle icons, no ambient AI motion, no template case-study anatomy. Written out, the list turned out to be something else too: a description of what AI-generated design looks like by default in 2026. A taste file and a detector are the same document read in two directions.
What the checker can and can’t know
The part I’d defend hardest: the file separates enforcement into three classes. Hard assertions a linter can verify (token discipline, no gradients, reduced-motion compliance). Proxy tripwires that measure geometry and flag suspicion (pill shapes, card density). And review tripwires that only summon a human, never auto-fail, because a linter cannot infer design judgment and the contract says so in writing. Refusals describe intent; mechanical checks enforce only what can be observed reliably.
The judgment layer gets a different instrument: a four-question rubric a vision model scores against frozen anchor pages, every score required to cite the region of the page that justifies it. No cited evidence, no valid score. The fourth question is the one I’d steal if I were you: does the page contain at least one compositional decision specific to this content, such that another portfolio’s screenshots could not drop in unchanged? If they could, the system produced a template, not authorship.
What comes next
The contract is the easy half. Next week I wire the checker: Playwright for the hard assertions, vision calls for the judgment clauses, evidence packets for every run, and my own verdicts stored against the machine’s so the agreement rate becomes a measurable curve. That curve, how often an automated judge matches one designer’s judgment, and where it fails, is the thing I most want to see, because as far as I can tell nobody has published one.
This log continues weekly. The repo is public Here. Subscribe if you’re a designer and want to follow along.
