ConceptAdvancedQuality, Cost & Token Economics / Eval design for product teams / #8

How do you design evals that catch regressions rather than just measuring level?

What happens when a score barely moves the same week one whole kind of ticket quietly stops working?

The direct answer
Score every deploy against its own immediate predecessor, on the same fixed set of tickets, sliced by issue type and urgency tier, not as one blended number. Flag any slice that moves outside its own normal week to week noise, even when the overall score barely shifts. A rare, expensive category can collapse and still hide behind five categories that got a little better the same week.
Do this, in order
  1. Compare every deploy to the one right before it, on the same fixed ticket set, sliced by category.Why: a single blended score can hide a category specific collapse behind five categories that quietly got better the same week.
  2. Set each slice's own pass bar from its own trailing history, not one global number.Why: a global rule like "don't move more than a point" lets a small, high stakes slice swing thirty points and still barely touch the average.
  3. Keep a run history, so the comparison doesn't live in someone's memory.Why: weekly deploys move faster than anyone can remember last month's number by hand.
  4. Spend audit time where a miss costs the most, not spread evenly across every category.Why: auditing a slice where a miss costs nothing wastes the hours that should go to the slice where it costs a customer.
  5. When one slice flags, hold or patch that slice. Don't roll back a genuine win everywhere else.Why: the same deploy that broke one category made five others better. Throwing out the whole deploy throws out the real gains too.

How to answer this, stage by stage

Nobody is grading whether you can name a metric. They are grading whether you can tell a level apart from a change, out loud, before you've finished your first sentence.

1
Scope it to one product, one dashboard, one owner
Say it like this
"Let's ground this in one product. TagBridge reads an incoming support ticket and stamps it with an issue type and an urgency level. Radha Blackthorn owns the eval dashboard that decides whether a new version ships."
Why this works
An abstract question about eval design turns into a lecture fast. One dashboard, one owner, makes it a real decision.
2
Say your structure out loud
Say it like this
"I'm going to name the one design change first, then show why a blended score can hide the exact regression it exists to catch, then walk through what catching it the same day actually looks like."
Why this works
Tells the interviewer you have a plan instead of feeling your way through an eval spec live.
3
Reframe the question before answering it
Say it like this
"This isn't really asking me to describe an eval pipeline. It's asking whether I know that 'the score looks fine' and 'nothing changed for the worse' are two different claims, and a single number can only ever answer the first one."
Why this works
Stops you giving the generic answer, track accuracy and set a threshold, which is exactly the design that misses the regression this question is about.
4
Give the one decision
Say it like this
"Here's what I'd build. Every deploy gets scored against its own immediate predecessor, on the same fixed six hundred ticket set, broken out by issue type and urgency tier. Any slice that moves outside its own normal noise gets flagged, even if the blended number barely moves."
Why this works
This is the direct answer, said in one breath, before any story.
5
Prove it with the failure it would have caught
Say it like this
"Radha's team swapped in a cheaper, faster model version. The blended score barely moved, ninety one point four to ninety point nine, well inside normal weekly noise. Sliced by category, billing dispute tickets went from ninety five percent tagged correctly to fifty eight, overnight, because the other five categories quietly got a few points better at the same time and covered for it."
Why this works
This is the compressed version of the full story below, cut down to what an interviewer actually needs to hear.
6
Say what you'd leave alone
Say it like this
"I wouldn't put this much scrutiny on every category. Password reset tickets are close to binary and haven't drifted in a year. Auditing that one every deploy the same way as billing would just burn hours that should go to the category where a miss costs someone money."
Why this works
Shows judgment instead of blanket paranoia applied evenly to everything.
7
Name the cost and close on the decision
Say it like this
"This isn't free. It means twelve category dashboards instead of one, and running the fixed set through both versions every deploy. Worth it on the slice where a miss costs a customer, not on the one where it costs a shrug. So: score every deploy against its last one, sliced by category, and let the slice fail loud even when the average stays quiet."
Why this works
Naming the cost is what makes this a real decision instead of a wish that thoroughness were free.

Let's learn

A support team used to read every new ticket by hand and decide two things: what kind of problem it was, and how fast someone needed to look at it. One senior agent did this every morning, about a hundred and fifty tickets before the rest of the team even logged on. She could spot a billing complaint from the first line, almost every time.

Then a tool called TagBridge took over. It reads a ticket the moment it lands and stamps it with an issue type and an urgency level, all six categories, in under a second. It handles about eighteen hundred tickets a day now, more than ten agents used to manage by hand.

Checked every week against six hundred tickets a QA lead grades by hand and holds back from anything the model trains on, TagBridge tags tickets correctly about ninety one percent of the time.

Knowledge spark: what's a held-out set? A pile of real tickets a person grades by hand, on purpose never shown to the model while it's learning. It's the ruler everything else gets measured against, because the model can't have already memorized the answers.

Ninety one percent sounds like the whole story. It isn't. One number can hide six very different stories, one per issue type, and only one of those six actually matters when it breaks.

The blended score can hold almost perfectly still the exact week one whole category quietly stops working.

Say the team swaps in a newer model version, cheaper and a little faster per ticket. The blended score barely moves, ninety one point four to ninety point nine, well inside the normal week to week wobble nobody worries about. Nobody looks twice.

Blended tag accuracy, week 0 to week 10
93% 88% wk6: the migration Wk0 Wk5 Wk10
Blended tag accuracy, all six categories
The line barely dips at week six. Anyone watching only this number would have signed off without a second look, which is exactly what happened.

Underneath that one number, billing dispute tickets, the ones where someone says "you charged me twice," fell from ninety five percent tagged correctly to fifty eight. The other five categories actually got a bit better that same week. Averaged together, the good news covered the bad news almost perfectly.

Billing dispute vs. the other five categories, before and after the migration
95% 58% 90% 93% Billing dispute Other five, average
Before the migrationAfter the migration
Billing dispute fell 37 points. The other five categories rose about 3 points on average. Blended across all six, weighted by how many tickets each category actually gets, the net move was only half a point.
Hand sketched comparison titled trust the level or check the slice. Left panel a gauge icon labeled the dial, caption many settings trust it a bit more each quarter. Right panel a box icon labeled the switch, caption check the slice or trust it blind nothing between.
Once the habit sets in, there is no dial left. Only a switch: check the slice, or trust the tile completely.

At its worst, a billing dispute ticket tagged "routine" instead of "urgent, escalate" sits in a two day queue instead of a two hour one. Over eleven days, thirty seven billing tickets sat in the wrong queue before anyone noticed, including one customer charged twice for a twenty four hundred dollar invoice, three days from a public chargeback dispute before a support lead finally called her back.

The choice that mattered The eval was built to report one point in time score, refreshed each week, never compared to the deploy before it. That made sense when TagBridge shipped once a month and a person could just remember what last month's number looked like. It stopped making sense once deploys went weekly and memory couldn't keep up. Nobody ever came back to that call.

What I'd leave alone: password reset tickets don't need this. The urgency call there is close to binary and hasn't drifted in over a year. Auditing it every deploy the same way as billing would just take hours away from the category where a miss actually costs someone money.

The lesson: a number can hold dead steady while something underneath it breaks completely. Ninety one percent told the team the tool was fine. It never said whether this week looked like last week, category by category, and that's the only question a regression check actually has to answer.

Now here is the same thing as a story

Read the short version above when you're in the room. Read this one when you want to feel why a quiet week can be the dangerous one.

For two years, Monday mornings at TagBridge belonged to one person and one screen.

Her name is Radha Blackthorn. She built TagBridge's eval pipeline herself, from nothing, two years ago. Hand her a QA report and she can tell you, before her second coffee, whether a number is genuinely fine or just quiet.

For the first year, every single deploy got the full treatment. Radha would pull the per category breakdown, six issue types crossed with three urgency tiers, eighteen cells, and read every one before she signed off. Forty minutes, every time. TagBridge shipped once a month back then, so forty minutes was nothing.

Deploys got more frequent as the team grew confident. Once a week, then twice. Most were small, safe sounding changes, a cheaper model version here, a faster one there, always announced the same way: same eval score, lower cost. Radha kept pulling the full breakdown on anything that touched the tagging prompt itself. On the changes that were "just" a model swap, framed as a pure win, she started skimming the one blended number and moving on. It kept coming back clean. Why wouldn't it.

By the ninth month of weekly deploys, she'd stopped opening the per category view on cost only swaps altogether. Just the one tile: this week's score, last week's score, both fine.

Then TagBridge shipped a model version migration. Forty percent cheaper per ticket. The release note said, in full: same eval score, lower cost, ship it. Blended accuracy that week: ninety point nine, down half a point from ninety one point four, well inside the noise band anyone had ever seen it wobble in. Radha glanced at the tile, same as always, and signed off.

The tile told the truth. It just wasn't answering the question anyone actually needed answered.

Eleven days later, a support team lead called her directly. A customer had been charged twice for a twenty four hundred dollar invoice. She'd emailed twice, called once, and both times the ticket sat tagged "routine, general inquiry," the forty eight hour queue, when it should have been "billing dispute, urgent," the two hour one. She was three days from filing a chargeback and posting about it.

Radha pulled that one ticket first. Then she pulled every billing dispute ticket from the eleven days since the migration, thirty seven of them, not the handful a weekly sample would have caught. Thirty four were mistagged the same way. Fifty eight percent of billing dispute tickets correct, against ninety five percent the week before.

The other five categories, checked that same afternoon, hadn't gotten worse at all. Four of them had actually improved by two or three points. That's the whole reason the blended score never moved: five categories got a little better, one category collapsed, and averaged together it looked like a quiet, unremarkable week.

The model didn't just cost TagBridge thirty seven mistagged tickets. It cost the retailer that bought TagBridge their trust in the routine tag itself. For the next month, their own support lead had every billing ticket in the routine queue re read by a person before it moved, by hand, the exact work they had bought TagBridge to stop doing.

Hand sketched line chart titled how often Radha opens the full breakdown. The line starts at five times a week and slopes gently down across eight weeks to zero.
The habit thinned slowly, over months. Nobody decided to stop. It just tapered.
Hand sketched line chart titled does she check the slice before shipping. The line runs flat at one meaning yes for eight weeks, drops straight down to zero at week nine, and stays flat at zero through week twenty.
The flip itself was not gradual at all. One week she checked. The next, she didn't, and never went back.

Two years earlier, when Radha first built the eval pipeline, the team talked for maybe ten minutes about whether to build proper run history, a real comparison between this deploy and the last one. TagBridge shipped once a month then. Someone said Radha herself was the diff, she'd remember what last month looked like without a screen for it. Building a comparison view felt like effort nobody had asked for yet. They shipped the single tile instead: this week's score, refreshed, nothing to compare it to. Reasonable, at one deploy a month. Nobody ever came back to that call as deploys sped up.

Run the same Thursday again, with one change. Every deploy now gets scored against its own immediate predecessor, on the identical six hundred ticket held out set, sliced by category and tier, and any slice that moves more than two standard deviations outside its own trailing month gets flagged red before anyone can sign off. Same model version migration ships. The blended tile still reads ninety point nine, same as before. But the billing dispute cell reads fifty eight percent against a slice that's never dropped below ninety two in a year, thirty four points outside its own noise. Radha sees red before her coffee's cold, holds that one category, and engineering patches the billing tagging examples in the prompt by that afternoon. Zero billing tickets go out mistagged instead of thirty seven. Same trigger. Caught the same day it shipped, not eleven days and one furious phone call later.

One design let a genuine improvement quietly carry a real collapse on its back for eleven days. The other design makes the collapse show up on its own, the same afternoon it happens, no matter how good everything around it looks.

What I'd tell myself, back in that ten minute conversation: the moment an eval covers cases with wildly different costs, ask whether one blended number can still answer for the cheapest case and the most expensive case at once, or whether it only ever could because the expensive case was too rare to move it. Nobody asked. That's on the room, not on Radha, and not on the model.

The five steps, so a quiet number never fools you again

FLIPS, run once on Radha's story. Each letter earns its place, and one of them is genuinely the hard one.

Hand sketched list titled FLIPS one line each. Five numbered rows with small icons: F Radha who owns TagBridge's eval dashboard. L stops pulling the per category report on cost only deploys. I checks the slice or trusts the blended score no middle. P the dashboard shows one point in time score no run history. S same trigger the diff view flags it the same day.
Five steps. Only the I step is genuinely hard to find.
FFind the person. Whose morning is this?
Radha Blackthorn, the eval engineer who built TagBridge's dashboard herself and signs off on every deploy from it.
Name her first, or the whole story stays a description of a pipeline instead of a decision someone makes.
LLocate the habit. What did she stop doing because it worked?
Pulling the full per category breakdown on every deploy, forty minutes each time. She kept doing it for prompt changes, but let it go on "cost only" model swaps once the blended tile kept coming back clean.
The habit is the real product here. The eval's whole job was to let her stop reading every cell by hand.
IIdentify the flip. What verb snaps?
Opens the sliced per category view and checks it, or trusts the single blended tile and ships. No middle setting once the habit took hold, and it did not drift back on its own.
This is the flip the fix has to design against. Not "the model got worse," but "she stopped opening the one screen that would have shown it."
PPinpoint the old decision. Which choice only made sense before?
Building the eval to report one point in time score, with no run history and no comparison to the deploy before it, because at one deploy a month a person's memory was diff enough.
Small, reasonable, and made in a ten minute conversation two years earlier. That's what makes it a real reversal and not an obvious mistake.
SShow the replay. Same bad day, new design.
A same predecessor, sliced diff flags the billing category the same day the migration ships, thirty four points outside its own year long noise band. Thirty seven mistagged tickets become zero.
Counted, not vague. A clock and a number, not "much better."

Three things worth stating directly, since this is where the real judgment sits. The first alternative the team almost took after the missed call was doubling review frequency: have Radha pull the full per category breakdown on every single deploy, forever, no matter the cadence. It lost because deploys were already weekly and trending toward daily. That just restores the old forty minute habit at a pace nobody can sustain, a dial turned up, not a decision taken back. The second alternative considered was tightening the blended score's own alert threshold, flagging any weekly move bigger than half a point instead of a point and a half. It also lost: a category that's only nine percent of ticket volume can collapse by thirty points and still barely nudge a blended average past even a tight global threshold, so the fix has to be structural, per category tracking, not a smaller global number. The AI specific failure worth naming by name is silent regression from a model version migration: a newer model can be genuinely, measurably better on average while quietly breaking one specific, low volume, high stakes slice of its own behavior, because nothing about "the aggregate benchmark held" guarantees uniform behavior across every kind of input underneath it. The guardrail is the same predecessor, per category diff with a trailing noise band, checked on every deploy, not just the risky looking ones. That guardrail isn't free. It means twelve dashboards to watch instead of one, and roughly twenty extra minutes of compute a deploy running the fixed set through both model versions, a real cost accepted on purpose, weighted toward the categories where a miss is actually expensive, not spread evenly across all six.

And if you want to be sure it really works, try it somewhere else

Same five steps, a law firm's intake room, nothing about customer support anywhere in sight.

CaseFlag is a tool an immigration law firm uses to read incoming case documents and tag them by visa type and urgency, with a special flag for asylum and detention cases that need expedited handling. Zafar Grieve is the senior paralegal who used to read every incoming document himself, and who decides how CaseFlag's tags get used now.

The case for the blended score: CaseFlag ran for eight months with a single weekly accuracy tile, and it held between ninety and ninety three percent the entire time. Zafar handed the day to day tagging fully to it and moved his own attention to case strategy instead.

The case against it: a routine model update, framed as a formatting fix, quietly dropped the expedite flag recall on asylum cases from ninety six percent to sixty one, while the much larger general visa inquiry category improved enough to hold the blended score at ninety one, barely different from the week before.

The decision Zafar would take back Trusting the blended tile on a "formatting only" update without asking whether the fix touched the rare, expensive category too. Calm and correct got treated as the same thing. They weren't.
Hand sketched flow diagram titled the delegation flip at a law firm. Five boxes connected left to right: delegate, trust builds, model updates, flag missed, reclaim it, with the last box in orange.
Zafar didn't taper off checking the way Radha did. He handed it down whole, then took the whole category back at once.

Same five steps, a different flip. Zafar didn't stop checking gradually. He'd fully handed the tagging down the day CaseFlag launched, the way a senior lawyer delegates to a trusted junior. When the expedite flag miss surfaced, three weeks later, in a case that nearly missed a court filing deadline, Zafar didn't just start spot checking again. He reclaimed the entire asylum category by hand, on top of his existing caseload, because he no longer trusted CaseFlag's word on it at all. Two people were now doing the tagging one tool was supposed to do alone.

Same rank as before: score every deploy against its last one, sliced by category, and let the rare, expensive slice fail loud on its own. A blended tile that held steady for eight months proved nothing about the one category with the least room for error.

Swap the trigger and it still runs.
Speed: an interviewer caps you at ninety seconds. Skip straight to the fix, diff every deploy against its predecessor, sliced by category, on the same fixed set.
Cost: there's no budget this quarter for both the sliced eval and a flashier top line dashboard. The sliced eval wins every time. A clean looking average that's hiding a collapse is worse than an honest, ugly one.
The model got better, for real: say the new version genuinely improves the blended score. That's not proof every slice improved with it. A model can get better on average while the slice that costs the most stays exactly as broken as before, or gets worse.

Where people run it wrong.
They read a flat or rising average as proof nothing's wrong anywhere, and never ask what it's built from.
They fix a scare by widening the acceptable noise band instead of narrowing what they're measuring.
They treat "the fix was small" as a reason to skip the slice check, when small fixes are exactly the ones nobody re verifies.

How to use it live. Say the tension out loud before answering: "is this asking me for a threshold, or for a way to catch what a threshold can't see." That buys a beat to think instead of guessing out loud in front of the interviewer.

Flashcards (tap any card to flip it)

1 · THE FLIP FAMILY
What flip family is this?
Tap to flip
ANSWER
Over trust: checks sometimes, then stops checking at all. Fires when the change looks like an improvement, so nobody has a reason to look closer.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Radha Blackthorn, the eval engineer who built and owns TagBridge's eval dashboard, an AI tool that tags support tickets by issue type and urgency.
3 · THE HABIT
What did she stop doing because it worked?
Tap to flip
ANSWER
Pulling the full per category breakdown on every deploy. She kept doing it for prompt changes, but stopped on cost only model swaps once the blended tile kept coming back clean.
4 · THE FLIP, IN THIS STORY
What's the two setting switch here?
Tap to flip
ANSWER
Opens the sliced per category view and checks it, or trusts the single blended tile and ships. No middle setting once the habit took hold.
5 · THE OLD DECISION
What decision would you take back?
Tap to flip
ANSWER
Building the eval to report one point in time blended score, with no run history and no comparison to the deploy before it, because at one deploy a month a person's memory was diff enough.
6 · THE NUMBER
Fill in the blank: the blended score moved from 91.4 to ___ percent the week of the migration, while the billing dispute category fell from 95 to ___ percent.
Tap to flip
ANSWER
90.9 percent, and 58 percent. A half point dip on top, a 37 point collapse underneath.
7 · THE REPLAY
Same bad day, new design, what changes?
Tap to flip
ANSWER
A same predecessor, sliced diff flags the billing category the same day the migration ships, 34 points outside its own year long noise band. Thirty seven mistagged tickets become zero.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and which flip family?
Tap to flip
ANSWER
CaseFlag, an immigration case tagging tool. Delegation flip: the paralegal had fully handed tagging down, then reclaimed the whole category by hand once the blended score's silence broke his trust in it.

Check yourself Score: 0 / 0

Fill in the blank
1. Once the habit set in, Radha's flip had exactly two settings: open the ___ view and check it, or trust the ___ tile alone.
Show hint
Look at the I step in the framework recap.
Show answer
Sliced per category, blended. There was no in between once the habit took hold. She either opened the full breakdown or she didn't look at all.
Multiple choice
2. Why couldn't Radha have just "glanced a bit more carefully" at the blended tile instead of building a sliced comparison?
  • A. Because the blended tile was calculated wrong that week.
  • B. Because a blended number, however carefully read, cannot show a regression that's diluted by five other categories improving at the same time.
  • C. Because TagBridge's model was too complex for a human to review at all.
  • D. Because Radha didn't have permission to see the per category data.
Show hint
Think about what averaging six categories together actually does to a one category collapse.
Show answer
B. Careful reading doesn't help when the number itself no longer carries the information. Five categories getting better hid one category getting much worse, no matter how closely anyone stared at the average.
Short answer, name the rejected alternative
3. What old decision does this answer take back, and why did it make sense when it was made?
Show hint
Look at the P step in the framework recap, and the meeting where the eval was first built.
Show answer
Model answer: Building the eval to report a single point in time score, with no run history or comparison to the deploy before it. It made sense when TagBridge shipped once a month and Radha herself could remember last month's number without a screen for it.
True or false
4. True or false: the sliced, same predecessor comparison described in this answer should be applied with equal scrutiny to every issue category TagBridge tags, including password reset tickets.
  • True
  • False
Show hint
Check the "what I'd leave alone" line in Section 1.
Show answer
False. Password reset urgency is close to binary and hasn't drifted in a year. Spending the same audit attention there would take hours away from categories like billing, where a miss actually costs someone money.
Short answer, apply it yourself
5. Pick an AI product you use yourself. Name one place its overall "looks fine" score might be hiding a category specific problem, and how you'd check.
Show hint
Think of a product that reports one score for something that's really several different kinds of task bundled together.
Show answer
Model answer: A photo app's "auto enhance accuracy" is one blended number across portraits, landscapes, low light shots, and text heavy screenshots. I'd check by asking for the score broken out by photo type, week over week, since a screenshot specific regression could hide easily behind three other categories that stayed fine.
Multiple choice
6. If the billing dispute category had only been 2 percent of total ticket volume instead of 9 percent, would the blended score's half point dip still count as "normal noise"?
  • A. No, a rarer category would move the blended score even more, so the drop would have been obvious.
  • B. Yes, actually more so. A rarer category's collapse contributes even less to a blended average, making a single global threshold even less likely to catch it.
  • C. It wouldn't matter, blended scores aren't affected by how large a category is.
  • D. The blended score would have improved instead of dipping.
Show hint
Think about how much a category's own swing can move an average once its share of total volume shrinks.
Show answer
B. The smaller a category's share of total volume, the less its own collapse moves the blended number, which means the categories that need slicing the most are exactly the ones a blended score is worst at protecting.
Before you close the answer
Why this works
Tests whether you'd design an eval that reports a level or one that's built to notice a change, and whether you understand that averaging categories together can hide a rare, expensive collapse behind common, cheap improvements.
Follow-up traps
"Isn't slicing by category just a fancier way of setting more thresholds?" Response: no, the same predecessor comparison is the load bearing part. A sliced threshold set once still goes stale. Comparing each deploy to its own last deploy catches drift a fixed threshold would eventually miss too.

"What if two categories both look fine but are drifting together, slowly, in the same direction?" Response: that's a real gap in a same predecessor only check. It needs a longer trailing window as well, which is why the pass bar is set from each slice's trailing month, not just its last run.
If pressed
The real production bar on the billing dispute category isn't zero misses, a system tagging thousands of tickets a day can't promise that. It's recall staying inside two standard deviations of that category's own trailing thirty day average, checked against the same six hundred ticket held out set every deploy, flagged the same day it breaks that band.
From U2xAI Academy

From answering questions to owning outcomes.

A live workshop where you ship a working AI agent, defend a launch decision, and walk away with a portfolio recruiters can't wave off, not just more questions to study.

  • A live AI agent you actually shipped
  • A launch decision you can defend under pressure
  • An interview-ready portfolio, not more flashcards
Know more