InterviewAdvancedEval-Driven Specification / Acceptance criteria for non-deterministic output / #25

Write the acceptance criteria for a feature I describe, live.

The direct answer
Size the sign-off check by menu category, not by one flat sample read at random. Give every category its own floor of written test cases, and double that floor for any category where a wrong line can hurt someone, like allergen claims. Everything else, the wording, the length, the tone, gets the plain floor and nothing more.
Do this, in order
  1. Give every menu category its own floor of test cases before sign-off.Why: a flat sample can't say which category never got a single case written for it.
  2. Set a real floor per category, big enough to prove a category is fixed, not just quiet.Why: a few cases per category can't tell a fixed problem from cases that happened to come out fine on their own.
  3. Double the floor for any category where a wrong line can hurt someone, like allergen claims.Why: a wrong "gluten-free" line and an overwritten dessert line are not the same size of harm, and a flat floor treats them the same.
  4. Check the total against how long a real person needs to read that many descriptions before launch.Why: a number that looks right on paper can still blow the review time before a release.
  5. Know whether a new category or a higher floor is what's actually pushing the count up.Why: cut the wrong one and either the review runs too long, or the one category that needed the extra floor gets thinned back down.
  6. Update the category list itself whenever the menu structure changes.Why: a category list that stops growing leaves the newest part of the menu with no dedicated cases at all, the same blind spot wearing a new name.

How to answer this, stage by stage

Nobody is grading whether you land on exactly 135. They're grading whether you scope the feature before naming a number, whether the riskiest category gets more than an equal share, and whether you close on an actual criterion someone could check. Eight moves get you there.

1
Scope it, and say what "sign off" actually has to mean
Say it like this
"Let's ground this in one feature. Say it reads a dish's name and its short ingredient list, then writes the two lines that show up under it on the menu and on the kitchen ticket. Before I write a single acceptance criterion, I want to say what sign-off means here: not 'a person read some and it sounded fine,' but 'every menu category has been checked enough to say the writer won't invent something.'"
Why this works
It pins the vague ask down to a real definition of done before any arithmetic starts.
2
Reframe the question, say what it's actually testing
Say it like this
"This isn't really 'how many descriptions do I need to read.' It's 'which menu category am I willing to only find out is broken after a real customer orders off it.' A criterion that just says 'reads naturally' answers that question by accident."
Why this works
Shows the interviewer you see the real risk before you jump to counting.
3
Say the equation out loud
Say it like this
"The test count for sign-off is the number of live menu categories, times a minimum floor of written cases per category, with a bigger floor for any category where a wrong claim can hurt someone. Not one number picked because it sounds thorough."
Why this works
Shows the build-up before a figure lands, so what follows reads as arithmetic, not a guess.
4
Own the numbers for one real menu taxonomy
Say it like this
"Say the platform ships every restaurant with the same eight menu categories: apps, mains, desserts, drinks, kids, vegetarian and vegan, allergen-declared items, and seasonal specials. I'd set a floor of 15 written cases per category, since under that you can't tell a fixed failure mode from a few cases that happened to come out fine. Eight times 15 is 120."
Why this works
Turns "enough test cases" into a number a reviewer can check against a real, named list of categories.
5
Double the floor for the one category that can hurt someone
Say it like this
"Allergen-declared items aren't like the rest. A dessert line that oversells the drizzle is a bad sentence. A dessert line that claims 'gluten-free' when it isn't is a trip to the hospital. I'd double that one category's floor to 30, adding 15. That's 120 plus 15, so 135 test cases before I'd sign off."
Why this works
This is the decision the whole answer turns on. A flat floor treats every wrong word as equally cheap, and it isn't.
6
Give the range, not one number
Say it like this
"135 is the number for a default eight-category menu. A small independent place, three ordinary categories plus the required allergen tab, comes in closer to 75. A franchise operator running fourteen categories across regional menus, catering, and a kids' tab pushes it past 220. I'd quote 135 for the taxonomy in front of me, and say plainly that it moves with how many categories the restaurant actually runs."
Why this works
Gives a low and a high instead of false precision. That's the range step, said out loud instead of hedged.
7
Check it against a human reviewer's actual day
Say it like this
"135 cases doesn't mean much until I put a clock on it. Reading one description and checking it against the source ingredients and the ticket character limit runs about two minutes. 135 times two minutes is 270 minutes, about four and a half hours. That's a real afternoon, not a rounding error, and it comfortably fits inside the day before a launch sign-off meeting."
Why this works
This is the step most estimates skip, and it's what stops a number from looking right on paper and being unworkable in the room.
8
Name what moves it most, then write the actual line
Say it like this
"If I had to bet on what pushes this number up most, it's a new category getting added, not the floor on the ones we already have. Going from eight categories to a franchise operator's fourteen adds 90 cases on its own. Raising the floor from 15 to 20 across all eight only adds 40. So here's the line I'd actually write: before release, every live menu category has at least 15 reviewed test cases, 30 for any category carrying an allergen or dietary claim, with zero invented ingredients, zero allergen claims that don't match the source data, and every line under the ticket character limit."
Why this works
Closes on the literal ask. A checkable sentence, not a vibe about the feature sounding ready.
If you remember one thing Every menu category gets its own floor of test cases, not a shared pool. Double the floor where a wrong line can hurt someone. Check the total against how long a real review actually takes before you call it done.

Let's learn

The product is a tool that reads a dish's name and its short ingredient list, then writes the two lines a customer sees under it on the menu and on the kitchen ticket.

Before the writer existed, whoever managed the menu wrote every description by hand, hunting for the right words for a new dish. About eight minutes each, and across a fifty-item menu that's over six hours, every time the menu changed. The writer drafts all fifty in under a minute. A manager just skims them and hits publish.

Knowledge spark: what's an acceptance criterion? A short, checkable line that says exactly when a feature is allowed to ship. Not a feeling that it looks good. A rule someone can test against real data and get a plain yes or no.

Before shipping any change to the writer, the product manager pulled 25 generated descriptions at random from that week's runs, read them over coffee, and shipped if most of them sounded right. About fifty minutes. When the menu only had four categories, apps, mains, desserts, drinks, that was roughly six checked lines a category. Good enough to catch a clumsy sentence.

Here's the turn. Over the next two years the menu grew to eight categories: kids, vegetarian and vegan, allergen-declared items, and seasonal specials all got added. The extra categories were never the real problem. The real problem is what the review kept doing. It stayed at 25, spread thinner every time a category got added, until some releases the allergen tab got checked by nobody at all, purely by the luck of a random pull.

We didn't need a review that sounded thorough. We needed one that had actually looked at the one category where a wrong word can put someone in a hospital.

At its worst, that gap cost a real customer a trip to urgent care, because the only signal an unchecked category ever produces is the complaint that comes in after it already went wrong.

The decision that mattered Size the check by menu category, not by how thorough a flat sample feels. A category nobody wrote a case for is invisible to a random pull, no matter how big that pull gets.

The choice I would take back. The acceptance criterion for the writer said "a reviewer reads a sample of generated descriptions and confirms they sound natural and don't contradict the listed ingredients," with no category named and no bigger bar for allergen claims. That was fine when the menu had four plain categories and nothing on it carried a legal claim. It stopped being fine the day allergen-declared items became its own tab with its own claims to get right.

What I would leave alone. Drink descriptions don't need this same treatment. The writer already pulls the literal ingredient list straight from the same field the barista's ticket prints from, and an overwritten line about a latte is never actually wrong about what's in the cup, just a little flowery. Not every category is worth a doubled floor, only the ones carrying a claim someone could rely on.

The lesson. A sample size that can't say which categories it actually covered isn't really an acceptance criterion. It's a habit that felt like one.

Now here is the same thing as a story

Skip this if you already believe a flat sample and a category-shaped one aren't the same thing. Read on if you want to feel why they aren't.

Darius Kovac can tell in one read whether a menu description sounds like it came from the restaurant or from a robot pretending to be one. Three years running the description-writer feature at Countertop, a point-of-sale and online-menu platform a lot of independent restaurants use, will do that.

Darius inherited the writer the year it shipped with four categories: apps, mains, desserts, drinks. Before every release, he pulled 25 generated descriptions at random from that week's test runs and read them over coffee. If most of them sounded right, he shipped. It felt like the honest choice. Nobody was cherry-picking the good ones.

For most of a year, that felt like plenty. Early on, Darius would also open the raw ingredient data next to each description and check it line by line, just to see how the writer was actually reasoning. It usually lined up fine. So the line-by-line check got smaller. Then it stopped, replaced by one habit: read 25, ship if it sounds right.

Over the two years after that, Countertop kept adding what a menu could hold. A kids' tab. A vegetarian and vegan tab. An allergen-declared tab, for restaurants that wanted to flag gluten-free and nut-free items. A seasonal specials tab. Eight categories shared the menu now. The sample stayed at 25.

Hand-sketched comparison. Left panel, a plain squarish shape labeled 25 pulled at random, captioned no one can say which menu category they came from. Right panel, a stack of papers labeled a floor per category, captioned 8 categories at 15, allergen items doubled to 30.
The same sign-off check, sized two different ways. One is a number that sounds thorough. The other can tell you exactly which category it actually covered.

Then came a Tuesday that wasn't an audit. A location using Countertop had listed a flourless torte as gluten-free online, copying wording the writer had generated for a similar dessert at another location months earlier. The torte at this location used a regular crust. A customer with celiac disease ordered it off the online menu, trusting the label, and ended up in urgent care that night.

Countertop's trust and safety team pulled every allergen-tagged description generated platform-wide that quarter, about 300 of them, and checked each one against the real ingredient feed by hand.

We didn't miss a few overwritten sentences. We built a check that had never once been guaranteed to look at the allergen tab at all.

Twelve of the 300 had the claim wrong, a miss rate of about 4 percent, on the one category where a miss isn't a style problem. Darius pulled the acceptance criterion that release had shipped under. Twenty-five examples, read at random, with no line saying which category they came from. Across eight categories, there was no promise the allergen tab had ever been touched, and on the release that shipped the torte's description, it hadn't been.

Darius rewrote the criterion that sprint: eight named categories, a floor of 15 written cases each, doubled to 30 for allergen-declared items, for 135 test cases before any release could ship. Run against the writer as it stood, the allergen category alone scored 71 percent clean against the 98 percent bar Darius set for it. A fix that made the writer state an allergen claim only when it matched the structured ingredient tag, never inferred from a similar dish, took about a week to ship. Rerun, the category cleared 99 percent. Over the next two releases, zero generated allergen claims mismatched the source data, and the sign-off review, even with the bigger floor, took under five hours.

The thing I'd tell myself, the week I set that first flat number at 25: it felt thorough because it was a fixed effort, not because it had ever touched every part of the menu that could hurt someone.

BOUND, said out loud before you write a single test case

This is a sizing question about how many test cases to write and for which menu categories, not a person's trust flipping between two settings, so BOUND fits and FLIPS doesn't.

B, break it down. The sign-off test count equals the number of live menu categories, times a minimum floor of written cases per category, with a bigger floor for any category where a wrong claim can hurt someone. Countertop's default menu carries eight named categories.
O, own the numbers. A floor of 15 cases per category, since under that a reviewer can't tell a fixed failure mode from a few cases that happened to come out fine. Eight times 15 is 120. Allergen-declared items get that floor doubled to 30, adding 15 more. Total: 135.
U, use a range. A small independent place, three ordinary categories plus the required allergen tab, comes to 75. A franchise operator running fourteen categories across regional menus and catering pushes it past 220. Start at 135, the plain eight-category split most restaurants on the platform actually run, and only add a category once the menu structure really has one.
N, nail the sanity check. 135 test cases, at about two minutes each to check the line against the source ingredients and the ticket character limit, is around four and a half hours of one reviewer's time. A real afternoon, not a rounding error, and it fits inside the day before a launch sign-off meeting.
D, direction. A new category showing up moves the total more than the floor does. Going from eight categories to a franchise operator's fourteen adds 90 cases on its own. Raising the floor from 15 to 20 across all eight only adds 40. If the total needs to shrink, check whether two categories actually overlap before thinning the floor, since a thin floor is exactly what let the allergen claim slip through the first time.

The build-up: eight menu categories, then the one that got doubled
8 menu categories, flat floor of 15120
+ Allergen-declared items, floor doubled to 30135
The flat floor across eight categories does most of the work. The one doubled category only adds 15 cases, but they're the 15 that would have caught the actual miss.
What moves the total most
A new category gets added to the menu (8 to 14)+90
Per-category floor raised from 15 to 20+40
A second category gets marked allergen-risk+15
Two overlapping categories get merged into one−15
A brand-new category swings the total more than any change to the floor. That's why the category list, not the arithmetic, is the thing worth revisiting first.

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

A listing-description writer drafts the paragraph under a property's photos for a real estate platform, pulling from the agent's own notes on beds, baths, and the block.

B, break it down. The sign-off test count equals the number of property types the platform lists, times a floor of written cases per type. A typical set runs to five: single-family, condo or co-op, rental, new construction, and land or lots.
O, own the numbers. A floor of 12 cases per type, since a listing carries fewer distinct facts than a menu line. Five times 12 is 60. The category touching fair-housing-sensitive language, any wording near schools, safety, or "who lives here" framing, gets that floor doubled to 24, adding 12 more. Total: 72.
U, use a range. A small single-market brokerage running three property types, still required to carry the fair-housing category, comes to 48. A platform spanning several states and nine property types pushes it to 120. Start at 72, the plain five-type split most single-market platforms actually run.
N, nail the sanity check. 72 test cases, at about a minute each since a listing blurb is shorter than a menu line, is about an hour and fifteen minutes. That fits inside one afternoon before the writer ships to a new market.
D, direction. Here the lever isn't a new property type so much as a new way protected-class language sneaks in, a listing praising a "quiet, established block" right next to a school rating. Each new phrasing pattern like that needs its own written cases inside the fair-housing category, whether or not the platform ever adds a sixth property type.

Same shape, different lever At Countertop, the thing that grew the total was a new menu category showing up. At the listing platform, the category list can stay at five for years, and the total still needs to grow, because the fair-housing category keeps needing new phrasing patterns written into it as agents find new ways to say the same risky thing.

Swap the trigger and it still runs.
Speed: an interviewer caps the answer at 90 seconds. Skip straight to the split: 15 per category, doubled to 30 for the one that can hurt someone, 135 total, checked against a five-hour review. The build-up backs it up if asked.
Cost: instead of asking for a case count, a manager caps the review budget at three hours. Work backward: at two minutes a case, that's 90 cases. Cover the allergen category's full 30 first and treat the rest of the floor as next sprint's work.
The model got better: a new version of the writer almost never invents an ingredient anymore in general use. The floor doesn't drop on its own. Rerun the allergen slice specifically, since a clean overall number says nothing about the one category that used to fail.

Where people run it wrong.
They size the check by what sounds thorough, "read a few dozen and see how they look," instead of a floor times a named category count.
They write the criterion once at launch and never add a floor when a new category gets added to the menu.
They let the allergen slice grow until it's most of the review, so the check stops reflecting what the writer does for the ordinary majority of the menu that carries no claim at all.

How to use it live. Say the equation before any number: "the test count is category count times a per-category floor, doubled wherever a miss actually costs someone something." That buys the time to name real categories instead of guessing a round number that sounds thorough.

Flashcards (click a card to flip it)

1 · THE FRAMEWORK
What framework fits a live "write the acceptance criteria" question, and why not FLIPS?
Tap to flip
ANSWER
BOUND. This is a sizing question, how many test cases to write and for which menu categories, not a person's trust flipping between two settings.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Darius Kovac, the product manager for the menu-description writer at Countertop, a point-of-sale and online-menu platform for restaurants.
3 · THE HABIT THAT FADED
What did Darius stop doing once the 25-sample check kept looking fine?
Tap to flip
ANSWER
Checking each generated description against the raw ingredient data line by line. Once it kept lining up, the line-by-line check shrank and then stopped, replaced by "read 25, ship if it sounds right."
4 · THE BUILD-UP, IN THIS STORY
What's the sizing build-up this answer turns on?
Tap to flip
ANSWER
Eight menu categories at a floor of 15 written cases each (120), with allergen-declared items doubled to 30, for 135 test cases total.
5 · THE OLD DECISION
What decision would you take back, and why did it make sense at first?
Tap to flip
ANSWER
Writing the acceptance criterion as "read a sample, ship if it sounds right," with no category named and no bigger bar for allergen claims. It made sense when the menu had four plain categories and nothing on it carried a legal claim.
6 · THE NUMBER
Fill in the blank: eight categories at a floor of 15, doubled to 30 for allergen-declared items, comes to ___ test cases, about ___ hours of one reviewer's time.
Tap to flip
ANSWER
135 test cases, about 4.5 hours at two minutes a case.
7 · THE REPLAY
Same incident, new criterion. What changes?
Tap to flip
ANSWER
The rebuilt check tests the allergen category on its own. It scores 71 percent clean, fails its 98 percent bar, gets a fix that only states a claim when it matches the source ingredient tag, and reruns at 99 percent. The next two releases ship with zero mismatched allergen claims.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and what's the risky category there?
Tap to flip
ANSWER
A real estate listing-description writer. There, the risky category is fair-housing-sensitive language, wording near schools, safety, or "who lives here" framing.

Check yourself Score: 0 / 0

Short answer, the opening move
1. The interviewer just finished describing the menu-description writer and asked you to write the acceptance criteria, live. What's the first sentence you'd say, before naming a single number?
Show hint
Say the shape of the equation before you touch the arithmetic.
Show answer
Model answer: "I'd size the test set as the number of menu categories times a minimum floor of cases each, with the allergen-declared category getting a bigger floor, not one round number that sounds thorough." Naming the equation first shows the arithmetic that follows is real, not a guess dressed up.
Multiple choice
2. Why does the allergen-declared category get a doubled floor of 30 instead of the standard 15, even though every category is technically just a menu description?
  • A. It takes a reviewer longer to check an allergen-declared description.
  • B. It's harder to write test cases for allergen-declared items.
  • C. A wrong allergen claim can hurt a real customer, and a flat floor treats that the same as a clumsy dessert line.
  • D. Allergen-declared items get ordered less often, so mistakes matter less.
Show hint
Ask what actually happens to a real person after a wrong line like that ships, not how hard the test case is to write.
Show answer
C. A missed word in a dessert description is a bad sentence. A missed allergen claim can send someone to urgent care, and the floor should say so instead of pretending every category costs the same.
True or false
3. True or false: raising the per-category floor from 15 to 20 moves the total test count more than adding new categories for a franchise operator's bigger menu.
  • True
  • False
Show hint
Check the sensitivity chart. Which row is the widest?
Show answer
False. Going from eight categories to fourteen adds 90 cases. Raising the floor by 5 across eight categories only adds 40. The category list moves the total more than the floor does.
Fill in the blank
4. Eight menu categories at a floor of 15, with allergen-declared items doubled to 30, totals ___ test cases, about ___ hours of review time at two minutes a case.
Show hint
Check the O step's own arithmetic and the N step's time math.
Show answer
135 test cases, about 4.5 hours. 120 from the flat floor, plus 15 more from doubling one category, is 135. 135 times two minutes is 270 minutes, which is 4.5 hours.
Short answer, the number question
5. If the platform only shipped its original four categories, apps, mains, desserts, drinks, with no allergen tab yet and using the same standard floor of 15, what would the sign-off test count be? Show the math.
Show hint
None of the four original categories carries an allergen-specific tab, so no category gets doubled here.
Show answer
60 test cases. Four categories at a floor of 15 is 60. None of the original four is allergen-declared, so no doubling applies, well under the eight-category total of 135.
Short answer, apply it yourself
6. Pick an AI feature you use yourself that writes text a real person reads to make a decision. What's one category of its output where a wrong claim would actually cost someone something, not just read a little clumsy?
Show hint
Look for the category where the words themselves are treated as a fact, not a style choice.
Show answer
Model answer: "A grocery app's auto-written product blurbs mostly just describe taste and texture, low stakes if a little overwritten. But the bakery items sometimes state 'nut-free' based on a supplier tag. That one category is worth a doubled floor, since a wrong line there is a fact someone with an allergy relies on, not a style choice."
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