CalculationAdvancedEval-Driven Specification / Golden datasets and test set ownership / #9

How large should a golden set be, and what determines the answer?

The direct answer
Size it between about 500 and 1,800 examples, built as (number of categories × a per-category floor) plus an edge-case layer stacked on top, not spread evenly. Land near 925 for a normal launch. The number that swings the size most is the per-category floor you pick, not the category count and not the edge-case layer, because that floor gets multiplied by every category you have.
Do this, in order
  1. Size it as categories times a per-category floor, then add an edge-case layer on top.Why: that's the whole equation. Everything else is picking real numbers for its two terms.
  2. Protect the per-category floor before you protect anything else in the budget.Why: it's multiplied by every category, so a small cut there compounds more than any other assumption.
  3. Load the edge-case layer onto the categories people actually argue about, not evenly across all of them.Why: evenly spread coverage looks complete on a slide but never stresses the boundary calls where the model actually fails.
  4. Name one owner for the golden set and tie refreshes to the taxonomy changing, not to a launch-day freeze.Why: a set nobody owns goes stale the moment the product adds a merchant type it was never built to test.
  5. Check the total against something you can feel, like a quarter of support complaints, not just against production volume.Why: production volume makes any number look tiny. The comparison that matters is whether a human could actually get through it and trust it.

How to answer this, stage by stage

Eight moves. This is arithmetic plus one ownership decision, so what's being graded is whether your structure holds up under a follow-up question, not whether your voice cracks at the right line.

1
Scope the taxonomy you're actually sizing for
Say it like this
"Let me scope this to something real. Say we've got a fintech app that reads a photo of a receipt and files it under one of a set of expense categories. I'll assume a taxonomy of 22 categories, which is about what a mid-size expense tool actually ships with, and I'll size the golden set against that."
Why this works
Naming the category count out loud stops the whole estimate from floating free of any real taxonomy.
2
Say the equation out loud, no numbers yet
Say it like this
"Golden set size equals the number of categories times a per-category floor, plus an edge-case layer added on top. The floor is what makes a per-category read trustworthy. The layer is a separate budget for the receipts that don't sit cleanly in one category, and it doesn't get spread evenly, it gets loaded onto the categories that actually get disputed."
Why this works
Two terms, said first, means every number after this slots into a spot the interviewer can already see.
3
Put a real number on the per-category floor, and say where it came from
Say it like this
"I'd set the floor at 30 examples a category. That's close to the rule of thumb statisticians use for a proportion estimate: below about 30 you can't tell a real ten-point swing in a category's accuracy from noise. Above it, you can."
Why this works
"Below this, it's noise" is a defensible line. "About 30 feels right" is not.
4
Size the edge-case layer separately, and say why it isn't spread evenly
Say it like this
"On top of the floor, I'd add an edge-case layer, sized at about 40 percent of the base for a normal launch. I'd own where that number comes from: it's roughly the share of miscategorized receipts a support queue actually sees, split-category receipts, business-versus-personal ones, refunds, anything from a merchant type the taxonomy wasn't built around."
Why this works
Naming the source of the 40 percent, instead of just stating it, is what turns a guess into an assumption someone can argue with.
5
Do the arithmetic out loud, low and high
Say it like this
"Thin end: 22 categories times a 20-example floor is 440, plus a light 15 percent edge layer, about 500 total. Rigorous end: 22 times a 50-example floor is 1,100, plus a 60 percent edge layer for something audit-facing, about 1,760 total. My target for a normal launch: 22 times 30 is 660, plus 40 percent, is 924, call it 925."
Why this works
Doing both ends out loud proves you're running one formula with different inputs, not reciting three memorized numbers.
6
Sanity-check the number against something you can feel
Say it like this
"925 sounds arbitrary until you compare it to something real. Say the support queue gets about 300 miscategorization complaints a month. 925 is roughly a quarter's worth of those. That's enough to have actually seen the weird ones, and small enough that two people can label it in about a week."
Why this works
A number with no comparison is a decimal point floating in space. This one is a smell test, not a guess.
7
Name the assumption that swings it most
Say it like this
"The thing that actually moves this number the most is the per-category floor, not the edge-case layer and not the category count, because the floor gets multiplied by every one of the 22 categories. Cut it from 30 to 20 to save labeling budget and you've quietly shrunk the whole set by a third."
Why this works
This is the line most candidates never say. It shows you separated "what looks like the expensive part" from "what actually is."
8
Say who owns it, then close on the range
Say it like this
"One more thing I'd insist on: a named owner and a refresh trigger, not a launch-day freeze date. Any merchant type that crosses one percent of volume gets golden examples within two weeks. So: somewhere between 500 and 1,800 examples, target about 925, and a name on the file so it's still true in a year."
Why this works
A size with no owner decays. Saying who keeps it current is what separates a real answer from a homework number.
If you remember one thing The per-category floor is multiplied by every category. A small cut there costs more than trimming the edge-case layer or the taxonomy ever could.

Let's learn

How do you know a receipt-categorization model that claims 96 percent accuracy is actually right, and not just right on the ten receipts someone happened to check? Say we build a feature that reads a photo of a receipt and files it under one expense category out of a list of 22: groceries, dining, travel, fuel, software, office supplies, and so on. A golden set is the fixed pile of receipts you check every version of that model against, the same pile every time, so a change in the pass rate means the model actually changed, not that the test changed under it.

Knowledge spark: what makes a set "golden"? Not that the labels are perfect, though they should be carefully checked. Golden means fixed. The same receipts, the same correct answers, checked once by a person and then left alone, so every model version gets graded against the exact same bar.

The equation is short. Golden set size equals the number of categories times a per-category floor, plus an edge-case layer added on top. The floor is what makes each category's own pass rate trustworthy on its own, not just the overall average. The edge layer is a separate budget, spent on the receipts that don't sit cleanly in one category.

# the equation
size = (categories × per_category_floor) + edge_case_layer

# target: 22 categories, 30-example floor, 40% edge layer
(22 × 30) + (0.40 × 660) = 660 + 264 = 924

# thin: 22 categories, 20-example floor, 15% edge layer
(22 × 20) + (0.15 × 440) = 440 + 66 = 506

# rigorous: 22 categories, 50-example floor, 60% edge layer
(22 × 50) + (0.60 × 1,100) = 1,100 + 660 = 1,760
The build-up, thin to rigorous
Thin set
440
66
506
Target
660
264
924
Rigorous set
1,100
660
1,760
Base (categories × floor)Edge-case layer
The edge layer isn't a fixed slice. It grows both in raw size and as a share of the total, because a more rigorous set is mostly rigorous about the boundary cases, not about categories that were never in question.
The floor gets paid 22 times over. The edge layer only gets paid once.

Say the target set of 925 examples takes two labelers, cross-checking each other, about a week. Against a support queue that logs roughly 300 miscategorization complaints a month, 925 is close to a quarter's worth of real disputed receipts. Small enough to actually build. Large enough to have seen the weird ones.

What moves the total the most
Per-category floor: 30 down to 20−33%
Edge-case layer: 40% down to 15%−18%
Taxonomy grows: 22 categories to 25+14%
Extra floor on one disputed category only+5%
All four bars are read against the 924-example target. The per-category floor is the biggest bar because it's multiplied by every one of the 22 categories, while the edge layer only scales the base once.

But the size was never really the hard part. The hard part is who keeps the set true once the taxonomy stops holding still. Section 2 has the number that made that real for one data lead.

Now here is the same thing as a story

Skip this if you already believe a spreadsheet can quietly go stale under a team's feet. Read on if you don't.

Kagiso Molefe is the data lead at Cinder, a fintech app that scans a photo of a receipt and files it into one of an accountant's expense categories. She joined eight months after launch, which means she inherited the golden set instead of building it.

It had been built once, at launch, by a contractor the founding team brought in for three weeks. 600 receipts, 22 categories, roughly 27 examples each. Nobody's name was on it. It sat in a shared folder called "eval_data_final_v2" and nothing about it had a date attached to when it should be looked at again.

For most of a year, that was fine. The model's pass rate against the set held steady in the low nineties, quarter after quarter. Every release, someone ran the eval, saw the number, and shipped.

Then a new engineer, three weeks into the job, was reading through the taxonomy and asked a question nobody could answer. "Wait, why do we have zero examples of Buy Now, Pay Later receipts in here? Klarna and Afterpay must be a third of what people are paying with now."

Kagiso pulled the golden set folder up on the call. He was right. Zero. Not thin coverage, none at all. BNPL wasn't a merchant category that existed when the contractor built the set, so it had never been added, and nobody had owned making sure it got added later.

She ran a spot check that afternoon, pulling 200 real BNPL receipts from the last month of production traffic and hand-labeling them. The model was filing 31 percent of them under "software subscriptions," because the checkout page and the recurring-charge language looked close enough to a SaaS bill to the model, and the golden set had never once told it otherwise.

The pass rate the team had been watching for a year had never dropped. It couldn't have. It was measuring a version of Cinder's receipts that had stopped existing months earlier.

The set wasn't wrong the day it was built. It went wrong the first month nobody was assigned to notice it hadn't kept up.

So here is the decision Kagiso took back. The set had been built as a one-time deliverable, priced and scoped like a contractor task with a clean end date, instead of a living asset with a name attached to it. She gave it one: hers. And a rule to go with it, a refresh review every quarter, plus a standing trigger, any merchant type that crosses one percent of monthly receipt volume gets golden examples added within two weeks of being flagged, not at the next scheduled review.

She rebuilt the set at 924 examples, 22 categories at a 30-example floor, plus a 40 percent edge-case layer loaded onto the categories people actually disputed: split-category receipts, business-versus-personal, refunds, and now BNPL. Not spread evenly. The evenly-spread version had looked complete on a slide for a year and had caught none of this.

What she'd leave entirely alone: categories like rent and utilities, which are almost always a single clean line item with no real ambiguity. Thirty examples there will hold for years. She didn't thicken them, and she didn't need to.

The thing I'd want Kagiso to say out loud, if she were in the interview: the equation told her how big the set should be. It never told her who was supposed to notice when the world underneath it changed. That was a role, not a number, and for a year nobody had it.

A data lead at her desk with a printed 22-category taxonomy, a golden set spreadsheet with 924 rows, a note that BNPL receipts have zero examples, and a sticky note naming an owner and a refresh date
Same equation. The missing piece was never a number, it was a name on the folder.

The formula, recapped as BOUND

This is a sizing question, so the framework is BOUND. There's no behavior snapping here and no leading metric to chase, just arithmetic, said out loud, with the assumptions owned. FLIPS would force a person's habit onto a question that's really about a formula and a folder nobody claimed.

A number line running from a thin set of about 500 examples through a target of about 925 and a rigorous set of about 1,760, with a separate felt-check mark for one quarter of support complaints
The range, with the number you can actually feel marked separately

B, break it down. Number of categories times a per-category floor, plus an edge-case layer added on top and loaded onto the disputed categories, not spread evenly.
O, own the numbers. 22 categories in Cinder's taxonomy. A 30-example floor, the point below which a category's own pass rate is noise. A 40 percent edge layer, sized off the real share of disputed receipts a support queue actually sees.
U, use a range. About 500 for a thin set to about 1,760 for a rigorous, audit-facing one. Target around 925 for a normal launch.
N, nail the sanity check. 925 examples is close to one quarter's worth of Cinder's real miscategorization complaints. Enough to have seen the weird ones. Small enough for two labelers to clear in a week.
D, direction. The per-category floor swings the total the most, not the edge layer and not the category count, because it's multiplied by every one of the 22 categories. Cut it to save budget and the whole set quietly shrinks by a third.

What I would not thicken Rent and utilities: almost always one clean line, no real ambiguity, no drift over time. Thirty examples there will still be enough in three years. Save the extra weight for the categories people actually argue about.

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

A veterinary triage app reads a pet owner's typed description of what's wrong and sorts it into one of four urgency tiers: emergency now, same-day visit, this-week appointment, monitor at home.

B, break it down. Number of tiers times a per-tier floor, plus a boundary layer sized around the pairs of adjacent tiers where a real symptom description could plausibly land in either.
O, own the numbers. Only 4 tiers, so I'd raise the floor well above the fintech case, 40 examples a tier, because a miss on the smallest tier, emergency, is the one that can't be absorbed by volume. Plus a boundary layer of about 100 examples split across the three adjacent-tier pairs.
U, use a range. Roughly 160 examples at the thin end to about 400 at the rigorous end, far smaller in raw count than the receipt case, because there are only 4 tiers instead of 22 categories.
N, nail the sanity check. A clinic answering the triage line might see 50 genuinely ambiguous descriptions a week. A 260-example golden set is about a month of those, enough to have actually argued about the hard ones.
D, direction. Here it isn't the floor that swings the number, it's the cost of missing an emergency. That single fact justifies a much bigger floor on one tier than the formula would suggest on its own, the opposite lesson from the fintech case, where every category costs roughly the same to miss.

Swap the trigger and it still runs.
Speed: an interviewer asks how fast the set needs to be ready before the next compliance audit. Same equation, solve for how many labelers running in parallel clear it by the deadline.
Cost: finance caps the labeling budget at $6,000. Same equation, run backwards, divide the budget by the cost per labeled example to find the real ceiling on set size.
The model got better: a new categorization model ships strong out of the box. Same equation, same target size, because the set's job is measuring the model, not training it. A stronger baseline doesn't lower the bar for trusting the measurement.

Where people run it wrong.
They build the set once at launch and never revisit it, so it quietly stops representing the merchants or symptoms actually showing up in production.
They spread coverage evenly across every category, which looks complete on a slide and never stresses the boundary calls where the model actually fails.
They let whoever's free build it, with no name on the file, so nobody's job is to notice when it's gone stale.

How to use it live. Say the equation before you touch a single number: "size equals categories times a per-category floor, plus an edge-case layer on top." That sentence buys you ten seconds to recall a real floor and a real percentage, and it shows the interviewer you have a method, not a guess.

Flashcards (click a card to flip it)

1 · THE FRAMEWORK
Which framework fits a golden-set sizing question, and why not FLIPS or LEAD?
Tap to flip
ANSWER
BOUND. This is arithmetic plus an ownership decision, not a habit that snaps and not a leading-versus-lagging metric pair.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Kagiso Molefe, data lead at Cinder, a fintech receipt-categorization app. She inherited a golden set that nobody owned.
3 · THE GAP NOBODY CAUGHT
What did the original golden set have zero examples of, and why did that go unnoticed for months?
Tap to flip
ANSWER
Buy Now, Pay Later receipts. BNPL didn't exist as a merchant type when the set was built, and no one owned adding it later, so the pass rate stayed steady while it quietly stopped measuring reality.
4 · THE EQUATION
State the golden-set sizing equation in one line.
Tap to flip
ANSWER
Size equals the number of categories times a per-category floor, plus an edge-case layer added on top, loaded onto the disputed categories rather than spread evenly.
5 · THE OLD DECISION
What decision would you take back, and why did it make sense at the time?
Tap to flip
ANSWER
Treating the golden set as a one-time contractor deliverable with no named owner and no refresh trigger. It was fine when the taxonomy was young. It stopped being fine the first time the merchant landscape moved and nobody's job was to notice.
6 · THE NUMBER
Fill in the blank: with 22 categories and a 30-example floor, the base of the golden set is ______.
Tap to flip
ANSWER
660. (22 x 30.) The 40 percent edge-case layer gets added on top of this to reach the 924-example target.
7 · THE REPLAY
Same 22 categories, but BNPL now has real weight in the edge layer, and Kagiso owns the refresh. What changes?
Tap to flip
ANSWER
The model's 31 percent miscategorization rate on BNPL receipts gets caught at the next quarterly eval instead of by a new hire's question eight months in. Any merchant crossing 1 percent of volume gets golden examples within two weeks, not at the next scheduled review.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and what's different about the D step?
Tap to flip
ANSWER
A veterinary triage app sorting symptoms into 4 urgency tiers. There, the size is driven by the cost of missing an emergency on one tier, not by the per-category floor across all of them equally.

Check yourself Score: 0 / 0

Fill in the blank
1. With 22 categories and a 30-example per-category floor, the base of Cinder's golden set is ______ examples, before the edge-case layer is added.
Show hint
22 categories times the floor. No edge layer yet.
Show answer
660. 22 x 30 = 660. Add the 40 percent edge-case layer (264) to reach the 924-example target.
Multiple choice
2. According to the sensitivity chart, what single change swings the golden set's total size the most?
  • A. Growing the taxonomy from 22 categories to 25.
  • B. Cutting the per-category floor from 30 to 20.
  • C. Cutting the edge-case layer from 40 percent to 15 percent.
  • D. Adding extra floor to one disputed category only.
Show hint
Which bar on the sensitivity chart is longest?
Show answer
B. Cutting the floor from 30 to 20 shrinks the total by 33 percent, more than the other three changes, because the floor is multiplied by every one of the 22 categories.
True or false
3. True or false: spreading the edge-case layer evenly across all 22 categories would have caught the BNPL gap before the new hire found it.
  • True
  • False
Show hint
The problem wasn't thin coverage of an existing category. It was a merchant type that had zero examples anywhere in the set.
Show answer
False. Spreading examples evenly assumes the categories in the taxonomy are the right ones to cover. BNPL had never been added as a merchant type at all, so no amount of even spreading would have created examples of it. Someone had to notice the gap and add it.
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 golden set was originally built, and who was assigned to keep it current.
Show answer
Model answer: Treating the golden set as a one-time contractor deliverable, built once at launch with no named owner and no refresh trigger. It made sense at the time because the taxonomy was new and stable. It stopped making sense once the merchant landscape started producing categories the set was never built to test, and nobody's job was to notice.
Short answer, apply it yourself
5. Pick an AI feature you've used yourself that sorts things into categories, an email inbox, a photo library, a receipts app. Write its golden-set equation in one line, and name the single assumption that would swing the size most.
Show hint
The load-bearing assumption is usually the per-category floor or how the edge cases get weighted, not the raw category count.
Show answer
Model answer: "A photo library that sorts pictures into albums by event: number of album types times a per-type floor, plus an edge layer for photos that could plausibly belong to two events at once (a birthday dinner at a restaurant). The floor is what would swing it most, since it's multiplied by every album type, the same lesson as the receipts case." Any answer works if it names a real equation and a real load-bearing assumption, not just a guessed number.
Fill in the blank
6. If Cinder's taxonomy grew from 22 categories to 25 while the floor and edge-layer percentage stayed the same, the target set would grow from about 925 to about ______.
Show hint
New base is 25 x 30. Add 40 percent on top.
Show answer
1,050. 25 x 30 = 750 base, plus 40 percent (300) = 1,050. About a 14 percent rise, smaller than a 33 percent floor cut would cost in the other direction.
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