arbiter
See the demo

Part 4

How Vercel teaches its agents design

One team has shown how it runs design decisions for its agents, week after week. What does it track, who decides, and how does that compare with Arbiter?

Edmond Hua · 13 Oct 2026 · about 6 minutes · follows Part 3: A hundred decisions later

In part 2 I called a team’s own design calls its case law, and said one team was keeping it: Vercel. In part 3 an agent kept up with 100 written decisions, and what grew was the reading for people.

So what does it take for a team to keep up? In June, John Phamous, a design engineer at Vercel, described how they do it.1 Others record pieces of this. Evil Martians, for example, require a written reason for every exception to a design-system component.2 Vercel’s is the only full practice for AI-built UI I’ve found published. Here’s what it looks like, and where it meets what I’m building.

The problem they start from

Agents copy a product’s style and patterns well. What they can’t see is why those patterns exist, because the reasons live in design reviews, pull request comments, Slack threads and people’s heads. As the post puts it: “For an agent, context that isn’t in the codebase doesn’t exist.”

Vercel’s answer is to treat accepted product decisions like code: kept in the repository, reviewed, and available to every agent working there.

What they built

A product-design skill

What it does
Sorts each request into one of five modes (shape, implement, review, copy or harden), loads only the guidance that applies, and has the agent name the evidence for each change. A modal, for example, pulls in the guidance on destructive actions.

Lint

What it does
Catches what code can check, and explains the fix. One rule suggests radio buttons instead of a dropdown when there are only two or three fixed options.

A weekly review

What it does
Gathers new design feedback from Slack, with the Figma files, pull requests and previews it links to, and prepares changes for a person to approve.

Their test for what goes in lint is worth borrowing. If code can spot the problem without rendering the page, without false alarms, and there’s a concrete fix, it’s a lint rule. If it needs product judgment, it’s written guidance. If it sets a new standard, a person decides. A rule that needs many exceptions goes back to being guidance. It’s the spellchecker from part 1, with a clear test for what belongs in it.

What a decision looks like

Each decision is written up the same way.

Decision and status

What it holds
The call, marked proposed, accepted or rejected

Scope

What it holds
Where it applies

Rationale and evidence

What it holds
Why, and what supports it

Exceptions

What it holds
Where it doesn’t apply

Bad and good example

What it holds
What to avoid, and what to do instead

Assumptions and open decisions

What it holds
What’s taken on trust, and what’s still undecided

Their advice on wording matches what I found in part 3. Skip adjectives like clear, polished or intuitive, and write decisions you can see in the result. “Destructive buttons use a verb and a noun” tells the agent what to build. A rule that buttons should be clear doesn’t. Rules also get stable IDs that state the rule, like rule/destructive-names-action. In part 3 the agent found the decisions it needed by their titles alone, so this is the same idea.

An accepted decision doesn’t always end up as text, either. It can become guidance next to the design system component, guidance in the skill, or a lint rule.

The weekly review

The weekly review is the part I find most interesting, because it’s an answer to the question part 3 left open.

Collect

Who
Automated
What happens
Searches Slack for design feedback and keeps the links to Figma files, pull requests, review comments and previews. Proposes nothing.

Judge

Who
Automated
What happens
Groups the evidence, checks the sources, and separates facts from guesses and open questions. Keeps everything pending and edits nothing.

Packet

Who
Automated
What happens
Lists candidates, topics it turned down, follow-ups and gaps, each linked to its source.

Decide

Who
A person
What happens
Turns each candidate into guidance, a reference, an example, a lint rule, a test, a known gap, or nothing.

Merge

Who
Checks
What happens
Puts the change in the narrowest file that fits. It has to pass the checks before it merges.

Two details stand out. A comment from an experienced reviewer can raise a candidate’s priority, but the candidate still needs evidence. And no single screenshot, file or comment becomes a universal rule on its own.

The automation stops at the packet. Every change to the guidance goes through a person.

Who wins

The skill ranks its sources for conflicts. The higher one wins:

  1. What the person asking wants, and the limits they set
  2. Verified evidence about users and how the product behaves
  3. The repository’s own guidance and the design system
  4. Accepted decisions and examples, where the evidence holds
  5. Patterns already shipped in the same area
  6. General interface rules of thumb

Two things are worth noticing. The design system outranks the team’s accepted decisions. And shipped code ranks low, because it shows what exists, not why it’s right. In part 3, one sentence settled who wins between the decisions and DESIGN.md. Vercel wrote down the whole order.

The difference is when it’s caught

Arbiter works on the same layer. It records the design calls an agent makes while it builds, and a designer decides which become rules. Here’s Vercel’s decision template next to an Arbiter entry.

# Decision: {name}
Status: proposed | accepted | rejected
Scope:
Decision:
Rationale:
Evidence:
Exceptions:
Bad example:
Good example:
Assumptions:
Open decisions:

Vercel’s decision template, as published. The post doesn’t show a filled-in decision.

When it’s caught

Vercel
Weekly, from Slack and what it links to
Arbiter
In the session, as the agent builds

Who decides

Vercel
A person, candidate by candidate
Arbiter
The designer, in a short review

Evidence

Vercel
Links to the discussion
Arbiter
The commit, the files changed and a screenshot

What lost

Vercel
A bad example
Arbiter
Each option that lost, and why

Exceptions

Vercel
Yes
Arbiter
Not yet

Vercel finds decisions after the fact, in the evidence a team already leaves behind. That gives every decision a source, but only if someone discussed it somewhere the collector can search. Arbiter catches calls as the agent makes them, including the option that lost, but it only sees the session, not the Slack thread or the review that led there.

Vercel’s record is stronger on evidence, exceptions and what’s still undecided. Arbiter’s keeps the option that lost, a screenshot, and a board for people who don’t read the code.

Case law, in practice

This is what case law looks like when a team takes it seriously: a written record, evidence behind each call, a person who decides, an order for conflicts, and tests. None of it needs Vercel’s size to start. Their own advice is to pick one surface where the same review comment keeps coming back, and write those decisions down first.

  • Vercel treats design decisions like code: kept in the repository, reviewed and tested.
  • Each week, automation gathers and sorts the evidence. A person decides every change.
  • Vercel writes decisions up weekly, after the fact. Arbiter catches them in the session, as the agent builds.

Sources

  1. John Phamous, Teaching agents product design at Vercel, Vercel, June 2026. vercel.com/blog
  2. Anton Lovchikov and Yuri Mandrikov, AI makes design system guardrails mandatory; this framework delivers them, Evil Martians, September 2026. evilmartians.com/chronicles
Next · Part 5Who wins: you, your rules or DESIGN.md?Your design system is set when the project starts. Your rules change every week you build. When they disagree, or you ask for something they don’t allow, what should the agent do?