CalculationAdvancedEval-Driven Specification / Writing an eval spec / #19

What does the eval spec say about statistical significance of a score difference?

The direct answer
The spec should require a real significance test on the score gap, not just a bigger number. Run a two-proportion test at 95 percent confidence, and size the golden set to the smallest difference the team has actually agreed to act on, about 800 examples for a 5-point bar, not the 500 already in use. Any gap that doesn't clear that bar doesn't ship, no matter which direction it moved.
Do this, in order
  1. Require a two-proportion significance test on the score gap before shipping, not a raw "did it go up" check.Why: once quarterly gains shrink below a few points, a naive uptick check ships on noise about as often as it ships on a real fix.
  2. Size the golden set to the smallest gap the team has agreed matters, about 800 examples for a 5-point bar, not the 500 already sitting there.Why: 500 examples can only reliably tell a 5-point-or-bigger move from chance. A 2-point win looks exactly like a coin flip at that size.
  3. Write the confidence bar into the spec itself, 95 percent, two-tailed, before the next release, not after.Why: without a stated bar, "significant" quietly becomes whatever number makes the release deck look good that quarter.
  4. Check any proposed sample size against real traffic, 800 examples is under half an hour of one day's mentions.Why: that's a small, fair check for catching a real regression, and it's exactly why a 2-point wobble inside it can be nothing but the shuffle of the draw.
  5. Watch the size of gap the team decides matters, not the human-rater agreement number, when someone wants a tighter bar.Why: halving the gap you want to catch roughly quadruples the examples you need; tightening rater agreement instead barely moves it by comparison.

How to answer this, stage by stage

Seven moves. The trap here is grading a coin flip as a win, so the whole answer is really about proving a gap is bigger than luck before anyone trusts it.

1
Scope it to one real release decision
Say it like this
"Let me scope this. Say I'm the eval lead at Kestrel Signal, a company that tags social posts mentioning a brand as positive, negative, or neutral. I'm writing the part of the eval spec that decides whether a new model version actually beat the old one, not just looked like it did on one run."
Why this works
Grounds the arithmetic in one real release decision instead of a generic lecture on p-values.
2
Say the real question out loud, no numbers yet
Say it like this
"The question isn't 'is 83 bigger than 81.' It's 'could a random draw of the same posts have produced a 2-point gap between two models that are actually tied.' That's a two-proportion significance test, and it needs three things: a sample size, an agreed confidence bar, and the size of gap we actually care about catching."
Why this works
Naming the real question up front stops the interview from drifting into "just compare the two numbers."
3
Own the numbers you'd actually propose
Say it like this
"I'd propose a golden set of at least 800 labeled posts per release, scored at 95 percent confidence, two-tailed. At 800 examples, a gap under about 3.8 points is still inside the range chance alone could produce."
Why this works
A real proposal, not a vague "we'd need more data," is what actually gets graded here.
4
Give the range, because "significant" depends on the size that matters
Say it like this
"If we only care about a 10-point move or more, 185 examples already proves it. If a 5-point move matters, that's about 860. If we want to trust the 2-point move the last release actually saw, we're looking at roughly 5,800. That's why the same 500-post set answers a big question fine and a small one not at all."
Why this works
Shows the estimate moving with the stakes instead of pretending one number covers every case.
5
Sanity-check the number against real traffic
Say it like this
"Does 800 survive a smell test? Kestrel scores about 45,000 mentions a day across its clients. 800 examples is under 2 percent of one day, less than half an hour of live traffic. That's a small, fair check for catching a real problem, and it's also exactly why a 2-point shift inside it can be nothing but the shuffle of the draw."
Why this works
Proves the number is being checked against the real world, not just against algebra.
6
Name the assumption that swings the number the most
Say it like this
"The lever that moves this the hardest isn't how noisy the human raters are, it's how small a gap we decide matters. Cut that gap in half, from 5 points to 2.5, and the sample size roughly quadruples. Tighten rater agreement instead, and it barely moves the number by comparison."
Why this works
Naming the fragile assumption before the interviewer finds it is what a strong estimator does.
7
Close on the actual spec line
Say it like this
"So the spec reads: run the two-proportion test at 95 percent confidence, on a golden set sized to the gap we've agreed matters, at least 800 examples for a 5-point bar, and don't ship on a raw score bump that doesn't clear that line."
Why this works
Closes on a sentence someone could paste straight into a real eval spec, not a vibe.
If you remember one thing A score that "went up" is not the same as a score that beat chance. Size the golden set to the gap you've decided matters, and write the confidence bar into the spec, not into the release-day debate.

Let's learn

Here's what happens when a rule that worked for a year quietly stops working, one point at a time.

Say Kestrel Signal, a brand-monitoring company, builds a tool that reads social posts mentioning a client's brand and tags each one positive, negative, or neutral. Before a new model version ships, the team checks it against a golden set, 500 posts a person already tagged by hand, and compares the model's score to the old version's score.

In the tool's first year, model versions moved in big jumps, seven, ten, once fifteen points at a time, as the pipeline went from a simple keyword list to a real classifier. The rule was simple: if the new score beats the old score on those 500 posts, ship it. Nobody argued with a ten-point jump. Nobody needed to.

Knowledge spark: what "statistically significant" actually means It does not mean "important." It means the gap you saw is bigger than a coin flip could produce by pure luck, given how many examples you checked. A tiny golden set can turn a real 2-point win into something that looks exactly like noise. A huge one can turn a true 0.1-point difference into "significant," even though nobody would ever notice it in real life.

Now the pipeline is mature. Gains have shrunk to one, two, three points a quarter. The team's rule never changed. A new model scored 83 percent against the old model's 81, and by the old rule, that's a win. Ship it.

Here's the turn. The 2-point gap is not the real problem. The real problem is what the team does next: they tell clients the tool got more accurate this quarter, and clients start trusting a slightly different sentiment score on a brand's reputation than the one they trusted last month, based on a number that might be nothing but which 500 posts happened to get drawn.

We didn't catch a better model. We got lucky with a coin flip that happened to agree with us.
# the noise band, n = 500 each, at today's golden-set size
SE = sqrt[ (0.81×0.19 + 0.83×0.17) / 500 ]
SE = sqrt(0.2950 / 500) = sqrt(0.00059) = 0.0243 → about 2.4 points
95% noise ceiling = 1.96 × SE = 4.8 points

# what the team actually saw
83% − 81% = 2.0 points ← well inside the noise ceiling

# required sample size per version, 95% confidence, 80% power
to trust a 10-point gap: n ≈ 185
to trust a 5-point gap: n ≈ 860
to trust a 2-point gap: n ≈ 5,800
The noise ceiling, against what the team actually saw
Today's set (500)
4.8 pts
ceiling
Proposed set (800)
3.8 pts
ceiling
What shipped
2.0 pts
observed
A "ceiling" is the biggest swing pure chance alone can produce at 95% confidence, on a set that size. The 2-point gap sits under both ceilings. Growing the set from 500 to 800 shrinks the ceiling, but it still doesn't clear a 2-point gap. It only makes the tool reliable for a real move of about 5 points or more.

Here's what that costs at its worst. A client reads "brand sentiment improved 2 points" the same week actual sentiment is quietly souring, and does nothing, because the dashboard said things were fine. The tool built to catch a real shift missed it, and told a story about a fake one instead.

What moves the required sample size the most
Decide a 2.5-point move matters instead of 5+326%
Raise confidence from 95% to 99%+49%
Human-rater agreement gets noisier+27%
All three are measured against the roughly 860 examples needed to trust a 5-point move. Halving the gap you care about swings the sample size more than six times as hard as either of the other two, because required size grows with the square of how small a gap you're chasing.

The choice I would take back. Writing the ship rule as "beat the old score, any amount" instead of "beat it by more than chance could produce." That was fine when gains were seven-plus points, since no realistic coin flip explains seven points. It stopped being fine the day the gains shrank to two.

What I would leave alone. A model that actually breaks doesn't need a significance test. If a version's score fell from 81 to 40 because it stopped reading a whole language correctly, nobody needs statistics to know that's real. Save the noise-band check for the close calls, not the obvious ones.

The lesson. A ship rule that only works while the wins are big was never really a rule. It was a coin flip we got away with, for as long as luck and real progress happened to move in the same direction.

Now here is the same thing as a story

Skip this if a 2-point "win" already makes you reach for a calculator. Read on if it doesn't yet.

The dashboard on Rasheed Osman's second monitor has one line at the top, in bold: this release's accuracy score.

He's been Kestrel Signal's eval lead for four years, since before the sentiment classifier could tell a sarcastic complaint from a real compliment. He wrote the release checklist himself: score the new model against the 500-post golden set, compare it to the old model's score, ship if it's higher.

For the tool's first year, that checklist never had to work hard. The classifier went from guessing to genuinely reading, and each quarter's score jumped seven, ten, once fifteen points. Rasheed would glance at the two numbers, see daylight between them, and move on to the next release. Nobody ever asked whether the jump was real. A ten-point jump doesn't need asking.

Somewhere around the fifth release, the jumps started shrinking. Six points. Then three. Rasheed noticed, and mostly felt good about it, because a maturing model is supposed to slow down. He kept the checklist exactly as it was.

Then a Tuesday release scored 83 percent against the old model's 81. Two points. By the checklist, a win. Rasheed was about to move it into the release notes when Wendell Cho, a data scientist two desks over, leaned in and asked, not unkindly, "You'd ship on a coin flip?"

Rasheed laughed, then didn't.

He ran the numbers that afternoon. On a golden set of 500 posts, chance alone, no real improvement at all, can produce a swing of close to five points, just from which 500 posts happened to get pulled that week. The 2-point "win" sat well inside that swing. It wasn't proof of anything. It was noise wearing a green checkmark.

He didn't blame the model. The model might genuinely be a little better. It might also be a little worse. Five hundred posts couldn't tell him which, and the checklist had never once asked the question.

We didn't catch a better model. We got lucky with a coin flip that happened to agree with us.

He thought back to the meeting where the checklist got written, over a year earlier, in the tool's first month. Someone had asked whether they needed anything fancier than "did the score go up." At the time, every release was moving by double digits, and adding a significance test felt like solving a problem they didn't have yet.

The spec Rasheed rewrote that week requires a two-proportion significance test at 95 percent confidence, and grows the golden set to 800 posts, enough to trust a real 5-point move without asking every release to clear the almost 12-times-bigger bar a 2-point move would need.

The next release scored 84 against 83, one point. By the old checklist, another win to announce. By the new spec, it doesn't clear the noise band, so it holds, unannounced, until the gap grows or the evidence does.

The part he'd go back and tell himself: I asked whether the score went up. I never asked whether 500 posts could actually tell me that.

Comparison of a ship decision made on any uptick against a ship decision that first checks whether the gap clears the noise band
Same two numbers, 81 and 83. The fix was never a better model. It was a second question before the stamp.

BOUND, run against Kestrel Signal's two-point "win"

This is a sizing question hiding inside a spec-writing question, so BOUND fits and FLIPS doesn't. Nobody's habit snapped here. A checklist that was honest at launch quietly stopped being honest as the real gains shrank.

Number line showing how many examples are needed to trust a 10-point, 5-point, and 2-point score gap, with today's 500-example golden set marked as too small
The range against reality. Today's 500-example set can trust a big move and nothing smaller.
Knowledge spark: why golden sets stay small Every example in a golden set was tagged by a person who read the post and decided what a human would call it. That's minutes of paid, careful work, not a slider you turn up for free. A team asking for 5,800 labeled examples every release is really asking for weeks of someone's attention, which is exactly why teams default to a set too small to trust.

B, break it down. The question is whether a random draw of the same posts could have produced this size of gap between two models that are actually tied. That needs a sample size, a confidence bar, and the size of gap we've agreed actually matters.
O, own the numbers. Today's golden set, 500 posts, hand-tagged by Kestrel's own review team. Observed scores, 81 percent old, 83 percent new, from the last release. A proposed confidence bar of 95 percent, two-tailed, the standard the team already uses for client-facing claims.
U, use a range. To trust a 10-point move, about 185 examples per version. To trust a 5-point move, about 860. To trust the 2-point move the team actually saw, about 5,800. A single number can't answer this question; the honest answer is a range tied to the size of gap in play.
N, nail the sanity check. 800 examples against Kestrel's real traffic, about 45,000 mentions a day, is under 2 percent of a single day, less than half an hour of live posts. A small, fair check for a real regression, and exactly why a 2-point wobble inside it reads as noise, not news.
D, direction. The size of gap the team decides matters swings the required sample size hardest. Halve it, from 5 points to 2.5, and the sample size roughly quadruples. Tighten the confidence bar from 95 to 99 percent and it moves about half as much. Let human-rater agreement get noisier and it barely moves at all by comparison. If someone asks why not the other two levers, name both, but the gap size is the one worth fighting over.

What I would leave alone A model that visibly breaks, a 40-point crash from a language it stopped reading correctly, needs no significance test at all. Save the noise-band math for close calls, not obvious ones.

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

Foxglove Veterinary Network runs an after-hours phone line where an AI assistant decides whether a caller's animal needs an emergency vet tonight or can wait for a morning appointment. A new triage model scores 90 percent agreement with a vet's own call on whether a case was truly an emergency, against the old model's 85.

B, break it down. Same shape of question: could a random draw of calls produce this gap between two models that are actually tied, on the specific claim that matters, catching a real emergency, not the overall agreement rate.
O, own the numbers. Old model's emergency-catch rate, 85 percent. New model's, 90 percent. Emergency calls make up about 8 percent of the line's roughly 300 calls a night, the rest are routine.
U, use a range. To trust a real 5-point move in the emergency-catch rate at 95 percent confidence, about 683 actual emergency examples are needed, one number Consolata Mwangi, Foxglove's eval lead, worked out the same way Kestrel Signal did.
N, nail the sanity check. Here's the catch a plain random pull misses. Emergency calls are only 8 percent of traffic, so a random sample big enough to hold 683 of them would need about 8,500 calls total, months of logging for a single check. Consolata's fix: deliberately pull about 700 real emergency-flagged calls from the archive, plus a matched routine sample, instead of waiting on an 8,500-call random draw.
D, direction. Here it isn't the size of gap the team cares about that swings the plan the most, the target stayed at 5 points both times. It's how rare the group being measured is. Emergency calls being 8 percent of traffic, not 50, is what turns a 683-example requirement into an 8,500-call logistics problem, the opposite lesson from Kestrel Signal, where the gap size was the lever and the underlying rate barely mattered.

Swap the trigger and it still runs.
Speed: an interviewer asks how fast you'd get a usable check running before a compliance deadline. Same equation, run with a looser target gap, 8 points instead of 5, so a smaller, faster-to-label 300-example set clears the bar, tightened once there's time to grow it.
Cost: finance caps how many posts get sent to human labelers each quarter. Same equation, solved backwards: at a budget of 400 labeled posts, the smallest gap Kestrel Signal can actually trust is about 6 to 7 points, not 5, so the ship bar has to move to match what the budget can prove.
The model got better: a cheaper labeling vendor cuts the golden set's cost per example in half. Same confidence and power targets, only the affordable sample size moves, and 5,800 examples for a 2-point gap stops being a hypothetical and starts being a line item.

Where people run it wrong.
They celebrate any score that went up, without asking whether their sample could tell a real move from noise.
They grow the golden set once, then treat every future gap as automatically trustworthy, instead of resizing it to whatever gap they're actually trying to catch that quarter.
They chase a tighter confidence bar, 95 to 99 percent, when the sample size is really being eaten by how small a difference they've decided matters, or by how rare the group they're measuring is.

How to use it live. Say the noise-band question out loud before touching a number: could a random draw of this same set produce a gap this size, if the two models were actually tied. That buys a few seconds to remember which numbers you can actually defend, and tells the interviewer the arithmetic is coming, not a guess dressed up as one.

Flashcards (click a card to flip it)

1 · THE FRAMEWORK
Which framework fits a question about whether a score difference is statistically real, and why not FLIPS?
Tap to flip
ANSWER
BOUND. This is arithmetic behind a ship decision, a sample-size and confidence question, not a habit that snaps.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Rasheed Osman, eval lead at Kestrel Signal, a company that tags social posts about a brand as positive, negative, or neutral. He owns the release rule that decides whether a new model actually beat the old one.
3 · THE HABIT
What did the team stop questioning because the rule worked?
Tap to flip
ANSWER
Whether "the score went up" was ever enough on its own. It worked while quarterly gains ran 7 to 15 points, so nobody checked it against chance.
4 · THE EQUATION
State the significance question in one line.
Tap to flip
ANSWER
Could a random draw of the same posts have produced this gap between two models that are actually tied? Answered with a sample size, a confidence bar, and the size of gap that matters.
5 · THE OLD DECISION
What decision would you take back, and why did it make sense at the time?
Tap to flip
ANSWER
Writing the ship rule as "beat the old score, any amount" instead of "beat it by more than chance could produce." It made sense when gains were 7-plus points, since no realistic coin flip explains that.
6 · THE NUMBER
Fill in the blank: with p1 = 81%, p2 = 83%, and n = 500 in each group, the biggest swing pure chance alone can produce at 95% confidence is about ______ points.
Tap to flip
ANSWER
About 4.8 points. sqrt[(0.81×0.19 + 0.83×0.17) / 500] ≈ 0.0243, × 1.96 ≈ 4.8. The team's 2-point gap sits well inside that.
7 · THE REPLAY
Same 2-point gap, new spec. What changes?
Tap to flip
ANSWER
The next release scores 84 against 83, a 1-point gap. By the old rule, another win announced. By the new spec, it doesn't clear the noise band, so it holds until the gap or the evidence grows.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and what actually swings the needed sample size there?
Tap to flip
ANSWER
Foxglove Veterinary Network's after-hours triage line. There, it isn't the size of gap that dominates, it's how rare emergency calls are, only 8 percent of volume, which forces a much bigger total pull to get enough real emergency examples.

Check yourself Score: 0 / 0

Fill in the blank
1. With p1 = 81%, p2 = 83%, and n = 500 in each group, pure chance alone can swing the score gap by about ______ points at 95% confidence, which is why a 2-point "win" isn't proof of anything on its own.
Show hint
Find the standard error of the difference, then multiply by 1.96.
Show answer
About 4.8 points. sqrt[(0.81×0.19 + 0.83×0.17) / 500] ≈ 0.0243, and 1.96 × 0.0243 ≈ 4.8 points. The observed 2-point gap sits well inside that.
Multiple choice
2. According to the sensitivity chart, what single change swings the required sample size the most?
  • A. Raising confidence from 95 percent to 99 percent.
  • B. Deciding a 2.5-point move matters instead of a 5-point move.
  • C. Letting human-rater agreement get noisier.
  • D. Doubling today's golden set from 500 to 1,000.
Show hint
Which bar on the sensitivity chart is longest?
Show answer
B. Halving the gap you care about swings the required sample size by about 326%, more than six times the next biggest lever, because the required size grows with the square of how small a gap you're chasing.
True or false
3. True or false: growing the golden set from 500 to 800 examples is, on its own, enough to prove the 2-point gap Kestrel Signal saw was real.
  • True
  • False
Show hint
Check the noise ceiling at n = 800 against the observed 2-point gap.
Show answer
False. At n = 800 the noise ceiling is still about 3.8 points. A 2-point gap stays inside it. Growing the set to 800 only makes the tool reliable for catching a move of about 5 points or more.
Short answer
4. What old decision does this answer take back, and why did it make sense when it was made?
Show hint
Look at how the ship rule was written, and how big the quarterly gains used to be.
Show answer
Model answer: Writing the ship rule as "beat the old score, any amount" instead of "beat it by more than chance could produce." It made sense when quarterly gains were seven-plus points, because no realistic coin flip explains a jump that size.
Short answer, apply it yourself
5. Pick an AI feature you've used that gets a new version now and then, a spam filter, a recommendation feed, a spell checker. If its maker told you "accuracy went up 1 percent this update," what would you want to know before believing the tool actually got better?
Show hint
Think about how big the test set was, and how big a 1 percent move actually is against chance.
Show answer
Model answer: How many examples that 1 percent was measured against, and whether a set that size could produce a 1 percent swing by pure luck. On a small test set, a 1 percent move is often exactly what a coin flip looks like.
Fill in the blank
6. If Kestrel Signal wants to trust a difference as small as the 2-point gap it actually saw, the golden set needs to grow from 500 to about ______ examples per release.
Show hint
Look at the range given for a 2-point gap in the BOUND recap.
Show answer
About 5,800 examples. Roughly 11 times the current 500-example set, which is why the team settled on 800 as a practical middle ground good for catching a 5-point-or-bigger move instead.
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