ConceptIntermediateEval-Driven Specification / Writing a PRD for an AI feature / #21

How do you keep an AI PRD from becoming a technical design doc?

The direct answer
Write every requirement as an outcome with a number and a real cost if it's missed, and leave the mechanism out. No batch schedule, no table name, no model, no algorithm. Ask yourself: could a completely different technical fix still make this sentence true? If yes, it belongs in the PRD. If only one fix could make it true, you've written a design decision, not a requirement, and it belongs to engineering.
Do this, in order
  1. State every requirement as an outcome with a number and a real cost, never a mechanism.Why: this is the whole rule; everything below just helps you catch yourself before you break it.
  2. Run the swap test on every technical noun before it goes in the doc.Why: "would a different fix still satisfy this sentence" catches a locked-in mechanism before it ships, not after.
  3. Keep the how, batch or streaming, schema, model choice, out of the requirements section, even as a passing suggestion.Why: engineers read a PM's guess as a decision, not a guess, and build to it exactly.
  4. Name what's genuinely fine to spec in full, alert wording, business rules.Why: without this, cutting mechanism detail gets mistaken for going vague on purpose.
  5. If you have a technical hunch, put it in a separate note marked "not a requirement."Why: an unlabeled hunch gets read as a requirement by whoever's skimming.
  6. Read your own PRD like the engineer about to build it, and ask what's now locked in that shouldn't be.Why: catching it before it ships is free. Catching it after the first bad weekend costs a rebuild.

How to answer this, stage by stage

Eight moves. Ground it in one sentence you'd actually be tempted to over-write, not a lecture about PRDs in general.

1
Scope it to one sentence you'd be tempted to over-write
Say it like this
"Say I'm writing the PRD for a reorder-point tool, something that tells a grocery chain's ordering system when to reorder a product. There's one sentence in the requirements section I know I'd want to overwrite, so let's start there instead of talking about PRDs in the abstract."
Why this works
One concrete sentence beats a general essay on document hygiene, and it tells the interviewer you're going to show them the mistake, not just describe it.
2
Say your structure out loud
Say it like this
"Here's how I'll walk through it: why that sentence isn't neutral, the one test I'd run on it, the rule that comes out of the test, and what I'd deliberately leave written in full detail anyway."
Why this works
Two seconds of structure stops the answer sliding into a general rant about bad PRDs, and shows a plan before a single specific gets said.
3
Reframe why a technical detail in a requirement isn't neutral
Say it like this
"The instinct is to write 'recompute the reorder signal nightly, at 2am, using a 21-day rolling average.' That reads like I've done my homework. I haven't described the problem there. I've already picked an implementation, before anyone checked if it was the right one."
Why this works
Shows you understand a PRD is already deciding something the moment it names a mechanism, not just observing it, which is the whole point most candidates miss.
4
Run the swap test on the sentence
Say it like this
"So here's the test: could a totally different technical approach, streaming instead of batch, a different lookback window, still satisfy what I actually need? If yes, I haven't written a requirement. I've written a design decision wearing a requirement's clothes."
Why this works
Gives the interviewer a repeatable check they can picture running on any sentence, not just a one-off judgment call about this one PRD.
5
Give the one rule, not a paragraph of advice
Say it like this
"The rule is: state the outcome, with a number, and what it costs if we miss it. For this feature that's 'the reorder signal has to reflect promo-driven demand within 4 hours, or we risk a stockout on the exact days we're running a discount.' No batch job, no schema, anywhere in that sentence."
Why this works
A named rule is something an interviewer can push on and test against a new example. "Be more specific" gives them nothing to push on.
6
Prove it with a failure, in four sentences
Say it like this
"Here's what happens without the rule. We wrote 'nightly batch at 2am' straight into the requirements section. Six weekend promotions later, every one of our 14 stores had run out of the promoted item at least once, because the signal was up to 30 hours stale and nobody had ever asked how fresh it actually needed to be."
Why this works
A concrete failure persuades where a warning doesn't, and it proves you've thought about what a document causes once other people start building from exactly what it says.
7
Say what you'd still leave fully specified
Say it like this
"I wouldn't pull the detail out of everything. The exact wording the store manager sees on the reorder alert, 'Reorder tomatoes today, current stock covers 2 days,' that's mine to write down to the word. That's product surface, not an implementation choice with more than one right answer."
Why this works
Shows judgment instead of blanket distrust of detail, which is exactly what separates this from "never put numbers in a PRD."
8
Close on the one line, so it's the last thing they hear
Say it like this
"So: outcome, a number, a cost if we miss it, no mechanism. If an engineer reading my PRD could tell me exactly which library or schema I had in mind, I haven't written a PRD. I've written a technical design doc with a product cover page."
Why this works
Interviewers remember first and last lines most clearly. This one hands them a test they can run on any PRD they read afterward, not just this one.
If you remember one thing Stages 4 and 5 are the answer. Run the swap test, then hold every requirement to it: outcome, a number, a cost, no mechanism named. Everything else here is proof it works.

Let's learn

What happens when a document written to say what's broken starts saying how to fix it instead?

Say we build a tool that looks at each store's sales and stock, and tells the ordering system when it's time to reorder a product, so the shelf doesn't sit empty and the produce in back doesn't rot before anyone notices.

Knowledge spark: what a reorder point is The stock level that triggers a new order. Drop below it, and the store places a new order before the shelf actually runs dry. Get it wrong, and you either order too late, or you tie up cash and shelf space on stock nobody needs yet.

Right now, a store manager checks a spreadsheet once a week, during the Friday inventory walk: reorder anything with less than two weeks of average sales left. It's rough, but it mostly holds. About 9 of every 100 fast-selling items still run out before the next delivery, mostly because a week is a long time for anything to speed up between checks.

Now say the PRD for the AI version gets written. In the requirements section, under a heading called Technical Approach, it reads: "Recompute the reorder signal nightly, at 2am, using a 21-day rolling average and a 1.3x safety-stock multiplier. Store the result in a new reorder_signals table." It reads precise. It reads like someone did their homework.

Here's the part that's easy to miss.

That sentence isn't a writing problem. It's already an engineering decision, made by the one person in the room who isn't supposed to be making it, before anyone asked what freshness the signal actually needed to hit.

A PRD's Technical Approach section, with four implementation details radiating off it: 2am nightly batch, 21-day lookback, 1.3x safety multiplier, new reorder_signals table
The section she always fills in herself, before any rule exists

Engineering builds it in three sprint weeks, to the letter. Then a store runs a weekend promotion on a fast-moving item. The promo goes live Saturday morning. The signal doesn't recompute until the Monday 2am run. For the whole weekend, the system is still reading Tuesday's sales.

Stores with a stockout on a promoted item, across six weekend promotions
14 of 14
Nightly batch, spec'd in the PRD
1 of 14
Outcome-only rule, engineering's call
Both versions used roughly the same forecasting model. The count didn't move because the forecast got smarter. It moved because the second version of the requirement finally let engineering pick a mechanism that could actually see a Saturday coming.

Here's where it costs the most. Once the stockouts start showing up, engineering points at the PRD. The batch cadence was written down, so from where they sit, it isn't a bug. It's per spec. Fixing it means reopening a requirements document, not just a ticket, and that takes two more sprint weeks on top of the three already spent building the exact thing the PRD asked for.

We didn't get the forecast wrong. We told engineering, in writing, exactly how long it was allowed to be wrong for.

A technical detail sitting in a requirement isn't neutral. It's a decision, made by accident, to protect one implementation from ever being questioned, because the document that was supposed to describe the problem already answered it.

The decision that mattered Ask the swap test on every technical noun before it goes in the PRD: would a different fix still satisfy this sentence? If yes, keep the sentence, cut the noun. If no, hand it to engineering instead of writing it down yourself.

The choice I would take back. The team's PRD template had an open "Technical Approach" section, and leaving it blank felt like handing over an unfinished document. I would cut that heading from the template entirely, or rename it "Signal Freshness Requirement" and force it to hold a number, not a mechanism.

What I would leave alone. The exact wording on the reorder alert a store manager sees. That's fine to spec down to the word, because there's genuinely one right answer for what a manager needs to read at a glance, and it isn't an implementation choice at all.

The lesson. A requirement that only one technical answer could satisfy isn't a requirement anymore. It's already halfway to being code. If the PRD survives someone building it a completely different way underneath, it was written at the right altitude. If it doesn't, it was a design doc wearing a PRD's cover page.

Now here is the same thing as a story

Read this version when you've got three minutes, not thirty seconds, since a promo weekend makes the point better than any rule does on its own.

The PRD template at Briarcross Grocers has a section called Technical Approach, sitting empty until someone fills it in.

Thandeka Nkosi had filled it in a hundred times before anyone thought to ask whether she should. She'd been the product lead for supply chain tools at the 14-store chain for three years, and before that she'd spent four years as a data analyst. So when a document asked her a technical question, she had an answer sitting right there, and she gave it. Nobody had ever told her not to.

For most of those PRDs, that habit never cost anything. A dashboard. A reorder alert. Small tools, where a stray sentence about how something worked underneath didn't change what got built or whether it worked.

Then came the reorder-point predictor, the tool that would replace the Friday spreadsheet check every store manager did by hand. Thandeka opened the template, got to Technical Approach, and did what she always did. "Recompute the reorder signal nightly, at 2am, using a 21-day rolling average and a 1.3x safety-stock multiplier. Store the result in a new reorder_signals table." Nobody in the doc review flagged it. It read like exactly the kind of precision a PRD is supposed to have.

Two PRD sentences compared: one naming the mechanism, recompute nightly 2am batch 21-day lookback, next to one stating the outcome, reflect promo demand within 4 hours or flag the risk
The swap test, run on the actual sentence Thandeka wrote

Engineering built it in three sprint weeks, to the letter. Calendar-driven nightly job. Rolling average. Safety multiplier. Nothing dramatic. It just worked, on an ordinary Tuesday, the way it was written to.

Nothing announced what came next either. No single question, no single email. It just built up, one Saturday at a time.

The first weekend Briarcross ran a promo on rotisserie chicken, one store's shelf went empty by mid-morning. The manager restocked from the back room and shrugged it off, the kind of thing that happens sometimes. The second weekend, two more stores hit the same wall on a different item. By the sixth weekend, all 14 stores had run dry on a promoted item at least once, and a district manager named Milo Sarkisian finally sent Thandeka a photo of an empty end-cap on a Saturday afternoon, captioned: "thought this was supposed to fix this."

She checked the timestamps. The promo had gone live Saturday at 8am. The signal wouldn't recompute until the Monday 2am run. The whole weekend, the system was reading Tuesday's sales, confident and wrong.

She raised it with engineering. Their answer wasn't wrong, exactly: the batch cadence was in the PRD, so as far as they were concerned, it was working as specified.

The stockouts were never a forecasting miss. They were a freshness promise nobody had actually made, sitting behind a sentence that sounded like one.

Milo wasn't upset with anyone in particular, and neither was Thandeka, once she saw it. Nobody had been careless. She'd written the sentence the same way she'd written a hundred sentences before it, in documents where it never mattered. The problem was never her judgment about batch jobs. It was that a PRD had let her make that judgment at all, in a section that read like a decision instead of a question left open.

Two panels: batch job locked by the PRD, signal up to 30 hours stale, shelf empty by Saturday noon, next to outcome decided by engineering, event-triggered recompute, shelf holds
The day the batch job was wrong, and what changed when the PRD stopped naming it

So here's what she rewrote, that same week. Not a longer Technical Approach section. No section at all. In its place, one line under Requirements: "The reorder signal must reflect promo-driven demand within 4 hours of a price change going live, or the item gets flagged for manual review." No batch. No table. No multiplier.

Engineering picked the mechanism this time. They chose an event-triggered recompute, fired the moment a promo price posted, instead of waiting for a clock. The first build had taken three sprint weeks. The fix took two more. Painful, but cheap next to what a wrong requirement, quietly defended as correct for six weekends running, had already cost.

Now walk the next promo weekend forward with that version live. Of the next six store-weekends running a promotion, one store stocked out once, on an item that hadn't been flagged as fast-moving at all. The other 13 held. Not because the forecast got smarter. Because the sentence that started the build finally let someone other than Thandeka decide how to keep it fresh.

And the part I'd tell myself, if I could go back: I was never being sloppy by writing that sentence. I was being helpful. And "helpful" is exactly the disguise a design decision wears when it sneaks into the wrong document.

SPARK, run on the sentence instead of the screen

This is a design question about a habit, not an interface, so the framework still applies, just pointed at a paragraph instead of a product. A question asking "how would you measure this" would reach for LEAD instead; a technical detail sliding into a requirement is a design problem about altitude, and SPARK is built for exactly that.

SPARK laid out as five rows, situation, payoff, anchor, risk, keep out, applied to the PRD sentence Thandeka wrote
SPARK, applied to the sentence itself
S, situation. Thandeka Nkosi, product lead for supply chain tools at Briarcross Grocers, writing solo, with no engineer in the room yet. Her data-analyst background means every technical question in the doc gets an answer straight from her, on reflex.
P, payoff. Not "a cleaner PRD." The habit worth building, in her and in whoever reads it, is checking whether a sentence could survive a completely different technical answer before treating it as fixed.
A, anchor. Every requirement states the outcome, a number, and the cost of missing it. No batch schedule, no schema, no model name, no algorithm, anywhere in that section.
R, risk. The first time a mechanism sneaks into a requirement, engineering builds and defends exactly that mechanism, even once a promo weekend proves it wrong, because the PRD said it, so it must have been on purpose.
K, keep out. Don't name the batch-vs-streaming decision, the schema, or the model choice in this section. Do keep the reorder alert's exact wording in full, because that's a product decision with one right answer, not an implementation with several.
Why the anchor and the risk have to match Check them against each other: does stating an outcome with a number actually survive the day the mechanism turns out to be wrong? Only if the outcome is specific enough that any fix meeting it counts, batch or event-triggered, whichever engineering picks. That's why the anchor isn't just "state an outcome." It's "outcome, plus a number, plus a real cost," because an outcome with no number can still be satisfied by whatever's easiest to ship.
A numbered list of what the PRD leaves for engineering: batch vs streaming cadence, table and column names, which model or algorithm, infra and scaling choices, with the alert's exact wording marked as staying with the PM
What stays out of the requirements section, and the one thing that doesn't

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

A county permits office writes PRDs the same rushed way. Different building entirely, same mistake, and a different reason the mechanism shouldn't have been named.

A five-step flow, application submitted, OCR library named in the PRD, field matching, flag gaps, human review, with the OCR step circled as the one that was over-specified
Same framework, a different mechanism locked into the wrong document

S. Perpetua Alonso, product lead on Fennimore County's permit-office tools team. Clerks check each building-permit application against a paper checklist of required documents, one file at a time.
P. The habit worth building: whoever reads the PRD checks that a requirement survives more than one way of building it, instead of trusting a sentence just because it sounds technical.
A. Name the outcome: flag at least 95 of every 100 real missing-document gaps before a reviewer opens the file, and never auto-reject an application. No OCR library, no regex, no table named anywhere in that section.
R. A vague-in-the-wrong-way version, "run OCR library X against every upload and match fields with a regex," locks that library in engineering's mind as the requirement itself. Six months later, when the scanned documents need a different parser, engineering says the PRD requires library X, and swapping it costs two sprint weeks of arguing with a document instead of changing code.
K. Don't name the parsing library, the storage schema, or how the confidence threshold gets tuned. Do keep the reviewer's exact flag message in full, "Missing: proof of ownership," because that wording is product surface, not implementation.

Swap the trigger and it still runs

  • Speed: even if the reorder signal could recompute in under a second, the batch-versus-event decision still isn't the PM's to lock in. Fast doesn't make a mechanism belong in the requirements section.
  • Cost: compute gets cheap enough to recompute every SKU every minute for free. That doesn't make "recompute every minute" the right thing to write down. The actual requirement is still "within 4 hours of a promo," and specifying "every minute" just locks in overkill nobody asked to review.
  • The model gets better: forecasting accuracy improves across the board. A more accurate nightly batch is still a nightly batch. Better accuracy doesn't fix a freshness problem, because accuracy and freshness are two different ways to be wrong.

Where people run it wrong

  • Treating any number in a PRD as suspect, since it's the mechanism that's the problem, not numbers. The 4-hour freshness bar is a number too, and it belongs in the requirement.
  • Writing the mechanism as a soft suggestion, "maybe nightly is enough," and having engineering read it as a decision anyway, because a PM's suggestion inside a requirements section doesn't read like a suggestion to whoever builds from it.
  • Cutting mechanism detail from everywhere, including the parts that were genuinely a business rule, so the PRD goes vague instead of getting more precise about the outcome.

How to use it live

If you're asked this cold, read the sentence you're about to write out loud and ask the room: "if I handed this exact sentence to a completely different engineering team with no other context, could they still build something totally different and still be right?" That's not stalling, it's stage one of the actual answer, and asking it out loud buys you the five seconds you need before you write a sentence you'll have to walk back once someone builds the wrong thing from it.

Flashcards (click a card to flip it)

1 · THE SITUATION
Who is this answer about, and what does she do before any rule exists?
Tap to flip
ANSWER
Thandeka Nkosi, product lead for supply chain tools at Briarcross Grocers, a 14-store chain. She fills in every PRD's technical section herself, because her data-analyst background means she always has an answer ready.
2 · THE REFRAME
Why isn't "recompute nightly, 2am batch, 21-day lookback" a neutral technical detail in a PRD?
Tap to flip
ANSWER
It already picked one implementation before anyone checked if it was the right one. A real requirement should survive a completely different technical answer; that sentence can't.
3 · THE ANCHOR
What's the one rule this answer holds a PRD requirement to?
Tap to flip
ANSWER
State the outcome, with a number, and the cost if it's missed. Never name the mechanism, batch job, schema, model, or algorithm, that hits it.
4 · THE RISK
What breaks the first time a PRD names the mechanism instead of the outcome?
Tap to flip
ANSWER
Engineering builds and defends exactly that mechanism, even once it's proven wrong, because a document written by the PM reads like a decision, not a guess.
5 · THE PROOF
What actually happened after Thandeka's nightly-batch sentence reached engineering?
Tap to flip
ANSWER
The signal stayed up to 30 hours stale during weekend promotions. All 14 stores stocked out on a promoted item at least once across six weekends, and engineering pointed at the PRD to say it was working as specified.
6 · THE NUMBER
___ of ___ stores stocked out on a promoted item before the requirement got rewritten.
Tap to flip
ANSWER
14 of 14. Every single store hit it at least once across six weekend promotions, because the 2am batch couldn't see a Saturday-morning promo coming.
7 · THE REPLAY
Same weekend promo, new requirement. What changes?
Tap to flip
ANSWER
Engineering picks an event-triggered recompute instead of a nightly batch, because the PRD only asked for 4-hour freshness, not a schedule. 1 of 14 stores stocks out once, instead of 14 of 14.
8 · CROSS-PRODUCT
Section 4 runs SPARK again on a different product. Which one, and what changes about the anchor?
Tap to flip
ANSWER
Fennimore County's permit-checking tool. The anchor names catching 95 of 100 missing-document gaps and never auto-rejecting, and leaves the OCR library and parsing approach for engineering to pick and swap later.

Check yourself Score: 0 / 0

Fill in the blank
1. The reorder signal was allowed to sit stale for up to ___ hours under the original nightly-batch design, because the batch only ran once, at ___ am.
Show hint
Think about a promo that starts Saturday morning and a batch job that only runs once a day.
Show answer
30 hours, at 2am. A Saturday-morning promo wouldn't show up in the signal until the Monday 2am run, so the system spent the whole weekend reading old sales.
Multiple choice
2. Which of these sentences would pass the swap test this answer describes?
  • A. "Recompute the reorder signal nightly at 2am using a 21-day rolling average."
  • B. "Reflect promo-driven demand within 4 hours, or flag the item for manual review."
  • C. "Store all reorder signals in a new reorder_signals table with a timestamp column."
  • D. "Use a 1.3x safety-stock multiplier for every SKU, regardless of how fast it sells."
Show hint
Ask which one would still be true no matter which technical approach engineering picked.
Show answer
B. A, C, and D each name a specific mechanism, a schedule, a table, a fixed multiplier, that only one implementation could satisfy. Only B states an outcome a different technical fix could still meet.
True or false
3. True or false: Thandeka should have stripped every number out of the PRD's requirements section to avoid this problem.
  • True
  • False
Show hint
Ask what kind of thing the 4-hour freshness bar is.
Show answer
False. The 4-hour freshness bar is a number too, and it belongs in the requirement. The problem was never numbers. It was naming the mechanism, the batch job, that hit them.
Short answer
4. What old decision does this answer take back, and why did it make sense when it was first made?
Show hint
Think about what the PRD template made feel incomplete if left blank.
Show answer
Model answer: The team's PRD template had an open "Technical Approach" section, and leaving it blank felt like handing over an unfinished document, so Thandeka filled it in fully every time. That made sense when her PRDs were small dashboards and alerts, where a wrong guess cost nothing. It stopped making sense the moment a requirement's exact mechanism decided whether a shelf stayed stocked.
Short answer, apply it yourself
5. Pick a spec, ticket, or brief you've written or read at work. Did it name an outcome, or did it name a specific tool, table, or method? What got built because of that choice?
Show hint
Look for a sentence that names a library, a schedule, or a data structure instead of a result.
Show answer
Model answer: "A ticket once read 'send a Slack message using the existing webhook every time a ticket ages past 3 days.' It named the mechanism, the webhook, instead of the outcome. Six months later we wanted to switch to email for a subset of teams, and had to reopen the ticket to argue about it, because the spec had quietly made the webhook feel like the requirement instead of 'notify someone within 3 days.'"
True or false
6. True or false: "Use a 1.3x safety-stock multiplier for every SKU" is fine to leave in the PRD in full detail, the same way the reorder alert's exact wording is.
  • True
  • False
Show hint
Ask whether a different multiplier, or a different approach entirely, could still be a reasonable choice.
Show answer
False. The multiplier is a mechanism with more than one workable value, an implementation choice. The alert's wording has one obviously right answer for what a manager needs to read, which is why it, and not the multiplier, is safe to spec in full.
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