Primer AI

Designing Against the Model

Three questions about AI-native design, tested before trusted.

Product

Hero, product GIF: the live prototype mid-generation against real data, staged progress visible, version tabs and contextual titles in frame.

Designing against the model means the prototype includes the model.

Role

Staff Product Designer

Timeline

Feb 2026 – Ongoing

Overview

Context
Our product is conversational and LLM-powered, so the experience is non-deterministic by nature. Static mocks can’t represent the model’s latency, variance, or failure modes, and those are the design. Meanwhile the industry handed every designer a coding agent, with two plausible endings: collapsed handoffs, or inconsistency at machine speed.
Decision
I adopted the AI-native workflow the way I’d ship a feature: as a hypothesis, instrumented and tested. I design verification systems for intelligence analysts, people trained to disbelieve AI until it earns trust, and my own workflow got the same treatment, question by question.
Impact
37 → 6Days, median request-to-production cycle: what took a month now ships in under a week.
Codebase growth over the period, and the craft survived: design-system health rose across the codebase.
4Teams beyond mine where design multiplied: the design system now guides anyone's coding agent.

The Challenge

A Mock Promises What It Can’t Verify

For an AI product, the model’s behavior is the experience. A polished Figma flow shows one happy path with placeholder text, and promises an interaction feel it cannot verify: what thirty seconds of generation feels like, what happens when the same question returns different answers, what real data volume does to a layout.

A sprawling Figma canvas of hundreds of static screens wired together by hand to fake one LLM-powered conversational flow
Hand-wiring every branch as a static frame: exhausting to build, and it still tests against guessed output. One of these frames can always be wrong.

An Emerging Workflow: AI-Native

Agentic coding promised a way out: prototype against the live model, ship the validated direction as production code, skip the translation steps. The promise came with a known failure mode, though. Unguided agents reinvent spacing, states, and patterns on every generation. Speed without standards is inconsistency at machine speed. Whether this workflow is an upgrade or a mess is not a matter of opinion; it’s measurable.

The Setup

Everyone Ships More Now

Over nineteen weeks I merged 115 PRs from my first ever at Primer. That is the least interesting fact in this story, because everyone with a coding agent ships more now. The questions worth testing are whether the output holds up, whether it keeps its craft, whether it still needs a designer.

WEEK 1MERGEDMatch dropdown size+3linesthe probe: review → CI → mergeWEEK 6DRAFTInteractive prototype+9,295linesagainst the live model, real data
The big numbers are the easy part.

Question 1

Does Faster Mean Better?

The first PR was three lines on purpose: probe review, CI, and merge before trusting the pipeline with anything consequential. Trust expanded only as evidence did.

0 of 115 shipped changes rolled back

Shipped changes per week

01020Week 1 · 2 shippedWeek 2 · 3 shippedWeek 3 · 2 shippedWeek 4 · 7 shippedWeek 5 · 4 shippedWeek 6 · 5 shippedWeek 7 · 6 shippedWeek 8 · 10 shippedWeek 9 · 5 shippedWeek 10 · 11 shippedWeek 11 · 1 shippedWeek 12 · 9 shippedWeek 13 · 0 shippedWeek 14 · 0 shippedWeek 15 · 10 shippedWeek 16 · 1 shippedWeek 17 · 4 shippedWeek 18 · 4 shippedWeek 19 · 20 shippedWeek 20 · 11 shipped (partial week)2011†W1W5W10W15W20

Accepted without corrections, running share

0%50%100%Week 5 · 77.8% accepted without correctionsWeek 6 · 82.6% accepted without correctionsWeek 7 · 79.3% accepted without correctionsWeek 8 · 76.5% accepted without correctionsWeek 9 · 74.4% accepted without correctionsWeek 10 · 72% accepted without correctionsWeek 11 · 70.6% accepted without correctionsWeek 12 · 66.7% accepted without correctionsWeek 13 · 66.7% accepted without correctionsWeek 14 · 66.7% accepted without correctionsWeek 15 · 67.1% accepted without correctionsWeek 16 · 66.2% accepted without correctionsWeek 17 · 68% accepted without correctionsWeek 18 · 68.4% accepted without correctionsWeek 19 · 70.7% accepted without correctionsWeek 20 · 71.8% accepted without corrections77.8%71.8%W1W5W10W15W20

Quality = merged changes approved with zero corrections requested, cumulative (n=110 reviewed). The line begins at week 5, once the sample reaches a meaningful size (n=18). † Final week partial at time of measurement.

Output climbed; the quality line never moved.
  1. Every session ended in verification, not vibes

    A full UX audit, then a thorough code review before pushing, in addition to my own review.

  2. The process itself got evaluated on a cadence

    Every few weeks I measured the output (review outcomes, defect patterns) and the process (where sessions stalled, what the agent got wrong), and changed the workflow when the numbers disagreed with it.

  3. I only kept what I could evaluate myself

    Backend code was beyond my ability to review to standard, so rather than letting one agent grade another agent’s homework, I handed that work to engineers, and used the boundary to learn: 1:1s and guild sessions on standard engineering practice, and shared skills built with FE and BE engineers so the next non-engineer starts further ahead.

Every sessionAll decisions pass the centerThe designerReads, decidesPlanBuildUX auditCode reviewPushAfter push: engineers review, every PREvery few weeksThe loop that tunes the loopMeasure the outputMeasure the processChange the loopCorrections retune the loopThe output and the process go under review
  • Human judgment
  • Agent work
  • Agent runs it, a human reads it
Every change passes the designer; every few weeks, so does the loop.

The Verdict

Quality didn’t drift as volume grew

Zero of 115 shipped changes were rolled back; the codebase norm over the same period was a small but real rollback rate (0.24% frontend, 1.07% backend). 7 in 10 changes were accepted by engineering with no corrections at the start; the rate was the same nineteen weeks and six times the volume later.

Real use judged it good, not just fast

The strongest signal wasn’t how quickly things merged; it was that the field team staked live customer demos on features built this way, and internal users asked for changes and kept them. Fast iteration on their feedback was a bonus, not the proof.

Question 2

Does AI Dull the Craft?

Left unguided, it does. Every agent reaches for the same borrowed conventions, which is why AI-built products converge on the same look: the model’s defaults become the design. The fix wasn’t reviewing harder after the fact. It was moving the design system into the context the agent reads before it writes a line.

01Initial prompting result
02Design refinement
The agent's first pass: an overview dashboard using the design system, but with awkward spacing and unfinished facets.The refined overview: summary cards, timeline, and facets held to a consistent standard.

The design system applied on its own: on-brand tokens, but generic and uneven. The floor, not the finish.

Rules and guidelines, moved into code and iterated on a cadence: consistent, legible, and unmistakably ours.

A design system is the floor; rules, code, and iteration are the craft.

4 of 5 health markers improved while the codebase tripled

Semantic heading structure

▲ 11% → 34%

What screen readers navigate by

Hard-coded pixel spacing

▼ −38%

Magic numbers, per 1k lines

Off-system brand color

▼ 11 → 5

Cut in half from peak

Correct color-token adoption

▲ 3.6×

Sanctioned interactive tokens

Manual font-weight overrides

◆ 0.72 → 0.86

Rose, then reversed

Six monthly snapshots, first to latest. Rate markers are per 1k lines, so growth can’t hide drift. Codebase grew 188k to 541k lines.

A health check that only shows green isn't a health check.
  1. Encoded the judgment layer, not just the component library

    An agent-consumable design system of tokens and components is table stakes now; the real leverage was encoding our design principles and user personas as skills the agent reasons from before it writes a line. Rules still enforce the mechanical standards on every edit and audits verify each change, but principles and personas are what keep the output ours instead of generic.

  2. Let the agent own the standard 80% so design owns the 20%

    The agent applies correct components, tokens, spacing, and established patterns automatically, so design attention goes to the 20% that should be novel.

  3. Measured the skills and let the measurement correct them

    In-session design iteration dropped 35%, but only structurally forced rules changed agent behavior. Polite prose was ignored, so the skills got stricter, not longer.

  4. Spent the velocity surplus on the backlog no team ever funds

    Half of everything I shipped was refinement of existing production UI, the death-by-a-thousand-cuts debt.

Verified against the same context it was written fromCONTEXT, READ BEFORE WRITINGSkills / judgmentThe why · the whoDesign principlesUser personasRules / standardsAuto-injectedJudgment gets the most room, on purposeReadsAgentWritesThe change+++Consistent across promptsVerifiesAuditA structureddesign report,every change,before review
Judgment is read first; the change is verified against the same context that produced it.

The Verdict

The codebase got measurably healthier even as it nearly tripled in size

Of five markers we track for design-system health, four improved: the semantic structure screen readers depend on rose from 11% to 34% of headings, hand-coded spacing fell 38%, off-system brand color was cut in half, and correct color-token use more than tripled.

The output didn’t come out generic

You can see it in the product: our workspace overview gives a demo a visual argument to make, where competitor tools show a table of documents. Craft that survives machine speed is craft the user can see.

Question 3

Does the Agent Replace the Designer?

The opposite happened: demand for design rose. The cleanest evidence is a null result: everyone has the same agent, yet cycle times and output per engineer stayed flat across the team. The tool without design judgment lifted nobody. The agent doesn’t replace the designer; it makes the designer the differential.

79% of all prompting effort went to novel design work

Routine fix6 prompts · 3 hours

One instruction — the element, the property, the value.

Entity card before the fix: dense, misaligned label and metadata.
Before
Entity card after the fix: tightened hierarchy and spacing.
After
Novel feature23+ prompts · days to weeks

Nine in ten sessions opened with a plan or a mock before any code.

An explored workspace concept: one of several mocked directions.
Concept exploration
The shipped workspace, chosen after several mocked directions.
Implementation
  1. Plan
  2. Mocked directions
  3. Decision
  4. Refinement
A routine fix vanishes into a prompt; novel work still runs the full design process.
  1. Straightforward tasks vanish into a prompt; novel work still needs the full design process

    The session logs show the split. A routine fix is a single design instruction naming the element, the property, and the value (median 6 prompts total, most of that the shipping pipeline), live in about 3 hours. Novel work ran a median of 23 prompts, 9 in 10 of those sessions opening with a plan or a mock before any code, and the deepest explorations ran for weeks. Novel design absorbed 79% of all prompting effort. The agent cleared the routine; it never once skipped the design thinking.

  2. Collaboration stopped being a relay

    Work starts wherever momentum is: engineers and PMs begin building and hand to design for refinement, or design pushes code that engineers review. The one rule that survived is alignment up front, on ownership and intent, so a non-linear process doesn’t become overlapping work.

  3. Giving the judgment away extended design’s reach and grew the job

    The skills live in a shared repo, packaged by an engineer as a plugin, extended by rules PMs file in; a PM’s first reaction: “I want it. When can I get it?” Routine UI now comes out right no matter who starts it, and the team’s taste sharpened with it: engineers argue their own PRs in design vocabulary. My role moved up the stack, authoring and tuning the system, with the attention once spent on pixel corrections (down from 73% to 47% of my sessions) now going to the judgment no file can hold, formed in front of live behavior and real users.

Said ina reviewOne PRWritten asa ruleEvery edit I makeShipped asa skillAnyone’s agentCited in otherteams’ auditsNot directly involvedMonth 1Month 1Month 3Month 5“Let’s use color tokens3 and 4, not raw hex.”
The design job, moving up the stack.

The Verdict

Demand for design went up

Engineers pull design review onto their own work, and the design system became something people contribute to rather than consult.

Design multiplied instead

Judgment now ships in four other teams’ work, in changes I never review, versioned like software.

What’s Next

Still Learning, Still Testing

This workflow was never a destination. Everything here is younger than a year, so the posture is a student’s: keep learning the engineering practices that move my boundaries, keep measuring the output and the process, keep changing whatever the evidence disagrees with.

The next iterations happen with the team. The skills now run in other people’s agents, so tuning them means tuning together: validating that the correction burden drops for other adopters, folding colleagues’ rules back into the shared system, and refining the non-linear ways of working as more disciplines build.

Two claims remain untested: whether the shipped features change end-user behavior, and whether any of this moves revenue. Claims without tests are just marketing, including mine.

Metrics from version-control history, issue tracking, session transcripts, and monthly codebase snapshots across the period.