Skip to content
02 / 03 · HoldoutAI release gating · 2026

A release gate for AI features. I designed the review that finds the conversations an average hides, from the run that splits a score by category to the rollback a policy owner can make from a phone.

Role
Product design, end to end (solo)
Year
2026
Platform
Web and iOS
Domain
AI evaluation · Release management
Delivered
Flow, identity, screens mapped and designed, recorded motion
Stack
Figma, FigJam, React Aria
Holdout review: the changed conversations read side by side against the old answer
01 / Context

A team ships a prompt change and scores it against the version it replaces. Version 43 scored 93.4 where version 42 scored 91.2, so it shipped. The average had gone up.

Underneath it, forty refund conversations had got worse, and the person who owns the refund policy never saw them. Holdout is the product I designed to catch that: it splits the score by category, puts the changed conversations in front of the people who own them, and releases by category instead of all at once.

01

The run, split by category

Two thousand conversations scored on both versions. The overall number goes up and the category breakdown shows the one that went the other way.

02 / The problem

An average is a summary. A release is a decision, and the two are not the same thing.

Evaluation tooling was built to compare two numbers. It answered whether the new version is better on the whole, which is the one question a release does not turn on.

The work that mattered was spread across four tools and nine steps, and the person with the domain knowledge to judge a refund answer was at the end of a chain rather than inside the product.

  • 01

    A better score can hide a worse category

    Gains in five categories covered a regression in the sixth, and nothing in the workflow made the sixth visible.

  • 02

    Nobody reads two thousand conversations

    Reviewers sampled at random, which finds the typical case and reliably misses the one that changed.

  • 03

    The person who could judge it was not in the loop

    The refund policy owner had the context to call the regression and no route into the release that produced it.

02

Release by category

Five categories go to five per cent, refunds stay on version 42, and a canary is watched for a day. One change, two versions, both legible.

03 / Role and approach

Walk the four days as they really happened.

I owned the product end to end: the flow, the identity, the screens across web and iOS, the design system on React Aria, and the recorded motion.

What I owned
  1. 01

    Split the score by category, which is the decision every other part of the product follows from.

  2. 02

    Designed the review around what changed rather than a random sample, so a person reads forty conversations instead of two thousand.

  3. 03

    Routed the domain owner in automatically, and made separation of duties a role rather than a setting.

  4. 04

    Designed release by category and a rollback a policy owner can make from a phone, because the decision does not always happen at a desk.

How I worked
Step 01

Map the failure before the product

I laid the four days out as swimlanes, with a pin wherever a regression slipped through. Every pin had to be answered by a screen or the screen did not get drawn.

Step 02

Find where two good requirements collided

Five of them carried the product, and none was visual: speed against scrutiny, automation against accountability, and coverage against what a person can actually read.

Step 03

Make colour a verdict

Sky means better, coral means worse, and nothing else earns colour. On a screen full of comparisons, decoration is noise that costs judgment.

Step 04

Record the motion from the real screens

The key moments were rebuilt from the Figma screens and recorded at 60 frames a second, so the motion and the designs can never drift apart.

03

The rollback that does not wait for a desk

A regression found at the wrong hour still has to be answerable. The phone carries the verdict, the evidence and the rollback, not a notification pointing at a laptop.

04 / Key decisions

Four decisions did most of the work.

  1. 01

    The score is split by category, never reported as one number

    A single figure is the mechanism by which the regression hid. Splitting it costs a more complex result screen, which is the right price for a decision with customers on the other side of it.

  2. 02

    People read what changed, not a random sample

    The review queue is built from the conversations that moved, so forty get read instead of two thousand sampled. The cost: a category that did not change gets no human eyes at all.

  3. 03

    The decision lives in the product

    Shipping, holding and rolling back happen where the evidence is, rather than in a ticket that references it. The cost is a heavier product surface and a real permissions model.

  4. 04

    Release by category, gradually

    Five categories ship to five per cent while the regressed one stays on the old version and a canary is watched for twenty-four hours. The cost: two versions in production at once, which the product then has to make legible.

FigJam swimlanes: the same prompt change walked through Holdout, with each lane owned by a different person
04

The same change, walked again

Four days become one afternoon, and every numbered pin on the original failure is answered by a step in the product. Each lane has an owner, which is what makes separation of duties real.

05 / Outcome

A release decision made where the evidence is, by the person who can judge it.

The result is one afternoon in one tool: the run splits, the changed conversations get read by their owner, and the release goes out by category with the regression held back.

It demonstrates evaluation workflows designed around judgment rather than summary statistics, a design system where colour carries a verdict, and motion recorded from the real screens.

2,000
conversations behind every number on the screen
40
of them a person actually reads, chosen because they changed
44
screens mapped across web and mobile before a pixel was drawn
60
frames a second, recorded from the real designs

If I took this further, the next step would be running it with support leads and the engineers who ship the prompts. Whether forty is a readable number under deadline, and whether category release is worth two live versions, are the two assumptions carrying the most weight.

What I took from it
Next / 03

Wake

Dispatch that shows its knock-on

Wake dispatcher view: the Tuesday morning at a glance, vans on the map and the day in lanes
View case