CaseAdvancedAI Opportunity & Model Strategy / Model selection from a PM lens / #7

How do you evaluate a model's reliability on structured output for your schema?

LEADone green checkmark on the record hid the one field going bad

PayLeap gives gig drivers a same-day cash advance against a photo of their pay stub. StubSnap is the part that reads the photo and turns it into six fields a decision engine trusts automatically: gross pay, deductions, net pay, pay period, and employer name. Selin Marchetti reconciles the flagged ones every morning.

The direct answer
Evaluate it field by field, not record by record. Build a labeled golden set from real stubs, track each field's own confidence and error rate across every model version, and set a pass bar per field instead of one pass or fail flag for the whole record. A single "schema valid" checkmark hides exactly the field that's about to break.
Do this, in order
  1. Score reliability per field, never as one record-level pass or fail.Why: a record can look fine while its one riskiest field is quietly getting worse.
  2. Build the golden set from real stubs across every layout you actually see, labeled at the field level.Why: a model that's right on clean templates can be confidently wrong on the messy real ones.
  3. Track each field's confidence across every model version, not just the day you shipped it.Why: a new version can trade one field's accuracy for another's without the overall number moving.
  4. Route low-confidence fields to a person instead of letting the whole record pass or fail.Why: it turns a silent wrong value into a caught one, in minutes instead of never.
  5. Weight the bar by what a wrong value costs, not just how often it's wrong.Why: a rare mistake on employer name costs far more than a common one on a rounding digit.
  6. Re-run the whole golden set before every version bump, and block the release on any field regression.Why: this is the one check that would have caught the drift before a driver ever saw it.

How to answer this, stage by stage

Nobody is scoring whether you know the words "schema validation." They're scoring whether you'd have caught the one field going wrong before the record-level number ever moved.

Stage 1
Scope it to one real schema
Say it like this
"Let's ground this in one schema. StubSnap turns a photo of a pay stub into six fields: gross pay, deductions, net pay, pay period start and end, and employer name. That's the exact schema I'd build the reliability check around."
Why this works
Stops the answer from turning into a generic lecture on "eval best practices" with nothing to point at.
Stage 2
Say the structure out loud
Say it like this
"I'll run this as LEAD. Link, the real business outcome. Early signal, the thing that moves before the outcome does. Abuse, how the metric gets gamed. Decision, what actually changes at each threshold."
Why this works
Signals you have a repeatable method for any eval question, not just a one-off opinion about this one.
Stage 3
Reframe: it isn't "is the JSON valid," it's "which field breaks first"
Say it like this
"The question isn't really whether a record passes schema validation. It's which single field is quietly getting worse while the record-level number stays calm."
Why this works
This is where a strong answer stops sounding like a QA checklist and starts sounding like a judgment call.
Stage 4
Give the one decision
Say it like this
"Here's the decision: score every field on its own confidence, on a golden set of 600 real stubs across five layouts. Set a per-field bar, 85 percent for employer name specifically, since that's the field a fabricated cash advance would ride on. Anything under that gets routed to a person instead of auto-approved."
Why this works
This is the direct answer stated as an actual eval design, not a vague promise to "monitor quality."
Stage 5
Prove it with the compressed failure
Say it like this
"The overall record-pass rate looked fine, 96 down to 94 percent, across a model version bump. But employer name's own confidence had dropped from 91 to 71 percent over three weeks. A stub from a new payroll processor got read with the driver's own name as the employer, and it was one unrelated fraud rule that caught it, not the schema check."
Why this works
Compresses the whole story into the one number that would have caught it two weeks earlier than luck did.
Stage 6
Name the AI-specific reasoning and the trade-off
Say it like this
"The honest reason this isn't a generic QA problem is that the model doesn't fail loudly. It answers every field with the same confident tone whether it's right or guessing. Routing shaky fields to a person costs us review time on maybe 4 percent of stubs. I'd take that cost every time over a silent wrong employer name."
Why this works
Names the model-specific failure mode, confident wrongness with no error message, and states the cost trade-off out loud instead of pretending review is free.
Stage 7
Say what you'd leave alone, then close
Say it like this
"I wouldn't spend eval budget hardening gross pay, since it's the biggest, boldest number on every layout and it's almost never wrong. For StubSnap, the fix holds: score every field on its own, and let the riskiest field set the bar for the whole record."
Why this works
Shows judgment about where scrutiny is wasted, and closes by restating the direct answer in one breath.

Let's learn

Picture StubSnap before anyone has argued about how to grade it.

A driver photographs a pay stub. StubSnap reads it and hands PayLeap's decision engine six fields, and the engine either approves a same-day cash advance or asks for a person to look at it.

Before StubSnap, an ops team spot-checked about 30 stubs a day by hand against the photo, roughly one in twenty, and it took about 20 minutes a batch.

With StubSnap, every stub gets read, and the record either passes schema validation or it doesn't. Overall, that pass rate barely moved across a model version bump: 96 percent, then 94.

Hand sketched flow diagram titled StubSnap, one photo to one decision. Five steps left to right: photo taken, fields extracted, schema checked, confidence scored shown emphasized, advance decided.
Five steps, and the fourth one, confidence scored, is the one this whole answer turns on.

Here's the turn: those 2 extra points of record failure are not the real problem. The real problem is that a record-level pass or fail says nothing about which one field is going bad, while everything else on the stub still reads fine.

A record can pass and still be carrying the one field nobody would trust if they looked at it alone.
The gap the record-level number hides, week 1 vs week 6
100% 50% 0 97% 91% Week 1 94% 71% Week 6
Overall record pass rateEmployer name field confidence
The record-level number dropped 3 points. The one field the cash advance actually depends on dropped 20.

At its worst, that gap sends a same-day cash advance out against a fabricated employer, or it makes a real driver wait a day over a field mistake that costs nothing. Either way, the tool ends up worse than no tool at all.

The choice I would take back Early on, the team built the schema check as one pass or fail flag per record, because it shipped fast and looked clean on a dashboard. Nobody had asked for a field-by-field number yet, and the record-level flag was already green.

What I would leave alone: I wouldn't spend eval budget hardening gross pay. It's the largest, boldest number on every stub layout, and it's almost never the field that goes wrong.

The lesson: a single number that says "the record passed" can hide the one field that's already broken. The record isn't the unit that matters. The field is.

Now here is the same thing as a story

The short version above is what you'd say in a design review. Read this one for what it felt like the week a near miss changed what Selin checks every morning.

Selin Marchetti can tell in about two seconds whether a payroll number looks right, just from the shape of the stub. Six years reconciling driver pay will do that.

When StubSnap first shipped, she spot-checked ten stubs a morning against the photo, all six fields. For the first month it was never wrong on anything that mattered. By month three she checked three. By month five, most mornings, none.

Hand sketched quadrant chart titled Which fields are hardest to trust. X axis how often the field is wrong, from rare to common. Y axis cost when it's wrong, from cheap to expensive. Gross pay and net pay sit low and cheap. Pay period start sits low frequency, low cost. Employer name sits high on both axes, common and expensive, in a different color.
Four fields, one schema. Employer name was always the one worth watching hardest, and nobody had drawn this before.

Then came a Thursday. Selin was cross-checking an unrelated fraud flag, a stub that had tripped a duplicate-employer rule, and she noticed the employer name StubSnap had extracted didn't match anything on the photo at all. It read the driver's own name in the employer field, off a stub from a payroll processor StubSnap had never seen before.

That stub had already passed schema validation. Green checkmark, on time, no flag. The only reason anyone caught it was a fraud rule built for something else entirely.

Knowledge spark: why does a model fail quietly instead of raising an error? A model doesn't know when it's guessing. It answers every field in the same confident tone whether it read the stub correctly or pattern-matched something close. Nothing on the record-level output tells you which field it was least sure about, unless you ask for that number separately.

Selin pulled the last six weeks of employer name extractions herself that Thursday night. 41 stubs where the model's own confidence, a number that existed the whole time but nobody surfaced, had already dropped under 80 percent.

We weren't watching whether StubSnap was right. We were watching whether the record passed. Those turned out to be two different questions.
Hand sketched timeline titled Three model versions, one quiet drift. Four milestones: v2 ships week 1 field trust 91 percent, confidence dips week 3 down to 79 percent shown emphasized, near miss week 4 caught by luck, v3 per field bar week 6 shaky fields routed.
The drift started in week one. Nobody looked at this number until week four, by luck.

When the schema check was first designed, nobody suggested tracking each field on its own. "The record either validates or it doesn't," someone said in that planning meeting, and it was a reasonable thing to say when every field was reading well above 90 percent.

The real question was never whether StubSnap overall was reliable. It was whether any one field, the one a fraud decision actually leans on, had quietly stopped being trustworthy while the record-level number stayed calm.

Hand sketched decision tree titled What the confidence score decides. Root: employer name confidence. Three branches: above 85 percent leads to auto-approve field, 60 to 85 percent leads to flag for human review, below 60 percent leads to reject ask re-photo.
The fix isn't a smarter model. It's a decision that already had a number to act on.

With a per-field bar in place, week three's dip to 79 percent on employer name would have started routing those stubs to a person automatically, two full weeks before the near miss, instead of the whole batch riding on a record-level flag that had no idea anything was wrong.

Employer name field confidence, six weeks
100% 50% 0 route bar: 85% crosses bar 71% by week 6 Wk 1 Wk 3 Wk 5
The near miss happened in week four. This number had already crossed the line in week three.

Two weeks earlier, or one green checkmark on a fraud rule that had nothing to do with any of this. That's the whole gap between catching it and getting lucky.

What I'd tell myself, the night Selin found that stub: a number that stays quiet isn't a number that's fine. It's a number nobody built a way to hear.

LEAD, mapped onto one eval designNot a script for distrusting every field equally. LEAD is what tells you which one to watch.

L
Link. The real business outcome.
Wrongful cash advances avoided, and real drivers approved without delay. Not the model's own accuracy score.
Grounding in the actual outcome keeps the eval from optimizing a number nobody downstream cares about.
E
Early signal. What moves before the outcome does.
Employer name's own field-level confidence, tracked separately from the record-level pass rate. It dropped from 91 to 71 percent over six weeks while the record-level number barely moved.
This is the hardest step and the answer to the question: the number that would have rung two weeks before the near miss.
A
Abuse. How the metric gets gamed.
Loosen the schema so shaky fields become optional, rubber-stamp low-confidence records as valid to hit a review-time SLA, or only test on the common, clean stub layouts.
Naming how a metric gets hit without doing the work is what makes it a real metric instead of a decoration.
D
Decision. What actually changes at each threshold.
Above 85 percent, auto-approve the field. Between 60 and 85, route to a person. Below 60, reject and ask the driver to re-photograph the stub.
A metric nobody acts on is a dashboard decoration; this is the decision the number actually buys.
Hand sketched labeled parts diagram titled LEAD, in one screen. Center icon a document labeled Eval spec. Four callouts around it: link the real outcome, early signal per-field trust shown emphasized, abuse how it's gamed, decision the threshold.
The four letters, held up as one page, with the early signal as the one worth remembering.

The recap, one line per letter: link is wrongful advances avoided and drivers approved on time, early signal is employer name's own confidence tracked apart from the record-level pass rate, abuse is loosening the schema or rubber-stamping shaky records, and decision is the three-tier routing bar that turns a number into an action.

Hand sketched icon list titled How a pass rate gets gamed. Three rows: a scale icon captioned loosen the schema make shaky fields optional, a question mark box icon captioned rubber stamp low confidence records as valid, a funnel icon captioned only test on clean common stub layouts.
Every one of these three would make the dashboard look better while StubSnap got worse.

And if you want to be sure it really works, try it somewhere elseSame four letters, a city permit office instead of a gig-pay app. The schema changes, but the seam sits in the same place.

Wendell Okoro runs the permitting desk for Civica Permits, a system that reads scanned construction-permit applications into a fixed schema: applicant name, parcel ID, permit type, and structure square footage. Mapped onto LEAD: link is permits routed to the right inspector without a manual re-key. Early signal is parcel ID's own field confidence, tracked apart from the overall form-pass rate, since a wrong parcel ID sends an inspector to the wrong property entirely. Abuse is a clerk marking a low-confidence parcel ID as "confirmed" just to clear a backlog queue. Decision is the same three-tier bar: high confidence auto-files, medium routes to a clerk, low kicks the scan back for a clearer photo.

Swap the trigger and it still runs.
Speed: an interviewer caps you at sixty seconds. Say "score every field on its own, and let the riskiest one set the bar," and stop.
Cost: no budget yet for a labeled golden set. Say so honestly, and commit to hand-labeling 200 real records in the first sprint instead of skipping the whole idea.
The model got better, for real: if a new version pushes employer name's confidence up to 97 percent, that's the moment to loosen the review bar deliberately, not the moment to stop watching the number.

Where people run it wrong.
They grade the whole JSON object as one pass or fail, so a single weak field hides inside a healthy-looking average.
They build the golden set from clean, synthetic examples instead of the messy real stub layouts the model actually sees in production.
They treat a confidence score as a nice-to-have UI detail instead of the number the whole review decision should run on.

How to use it live. The moment an interviewer asks how you'd evaluate structured output, ask yourself: if I only got to trust one number, would it be the record passing, or one field's own confidence? Say the second one out loud, and the rest of the answer follows.

Flashcards (tap any card to flip it)

1 · THE FRAMEWORK
What framework fits evaluating a model's reliability on structured output?
Tap to flip
ANSWER
LEAD: link, early signal, abuse, decision. It finds the field-level number that moves before the record-level pass rate does.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Selin Marchetti, a payroll-reconciliation analyst at PayLeap who caught a fabricated employer name by accident, through an unrelated fraud rule.
3 · THE HABIT
What did Selin stop doing as StubSnap kept looking reliable?
Tap to flip
ANSWER
She spot-checked ten stubs a morning at first, then three, then most mornings none, because the record-level flag kept coming back green.
4 · THE EARLY SIGNAL
What's the number that would have rung before the near miss?
Tap to flip
ANSWER
Employer name's own field-level confidence, which crossed an 85 percent routing bar in week three, two weeks before the near miss surfaced in week four.
5 · THE OLD DECISION
What decision would you take back?
Tap to flip
ANSWER
Building the schema check as one pass or fail flag per whole record, instead of scoring each field on its own, back when every field read well above 90 percent.
6 · THE NUMBER
Fill in the blank: employer name confidence dropped from ___ percent to ___ percent over six weeks, while the record-level pass rate only moved from 97 to 94.
Tap to flip
ANSWER
91 percent down to 71 percent. The field-level drop was ten times the record-level drop.
7 · THE REPLAY
Same six weeks, per-field routing already in place. What changes?
Tap to flip
ANSWER
41 stubs get routed to a person starting week three, when confidence first crosses 85 percent, two weeks before anyone found the near miss by luck.
8 · CROSS PRODUCT TRANSFER
Section 4 runs this again for a different product. Which one, and what stays the same?
Tap to flip
ANSWER
Civica Permits' scanned-application reader. The schema changes to parcel ID and permit type, but the seam is identical: score each field on its own, and let the costliest one set the bar.

Check yourself Score: 0 / 0

Multiple choice
1. Why did the record-level pass rate stay calm while employer name confidence dropped 20 points?
  • A. The record-level check was measuring a completely different schema.
  • B. A whole-record pass or fail averages over every field, so one field going bad barely moves the overall number.
  • C. StubSnap stopped extracting the employer name field entirely.
  • D. Selin's spot checks were catching the errors before they counted.
Show hint
Look at the grouped bar chart comparing the two numbers at week one and week six.
Show answer
B. A record-level flag blends six fields into one signal, so a sharp drop in one gets diluted into a small drop overall.
True or false
2. True or false: the fix in this answer is to build a more accurate model for employer name specifically.
  • True
  • False
Show hint
Look at the direct answer and the decision tree diagram.
Show answer
False. The fix is a routing decision, a per-field confidence bar that sends shaky fields to a person, not a promise to make the model itself more accurate.
Fill in the blank
3. Fill in the blank: Selin found ___ stubs from the last six weeks where employer name confidence had already dropped under 80 percent.
Show hint
Look at the part where she pulls the six weeks of extractions herself.
Show answer
41 stubs. None of them had been flagged, because the record-level check had no way to surface a single field's confidence.
Short answer, where it wouldn't matter
4. Name a field in this schema where extra eval scrutiny would be wasted effort, and say why.
Show hint
Look at "what I would leave alone" and the quadrant diagram.
Show answer
Model answer: Gross pay. It's the largest, boldest number on every stub layout and it's almost never misread, so hardening its eval wouldn't catch anything that's actually breaking.
Short answer, apply it yourself
5. Think of a tool you use that turns something messy into a clean set of fields. Which one field, if it quietly got worse, would you never notice from the overall summary?
Show hint
Look for the field that's rare to get wrong but expensive when it is.
Show answer
Model answer: A receipt-scanning expense app: the merchant name rarely matters much if it's slightly off, but the total amount being wrong by a wide margin could sit hidden inside a "looks fine" overall accuracy score.
Short answer, work the number
6. If the routing bar had been set at 75 percent instead of 85, would week three's dip to 79 percent still have triggered review?
Show hint
Compare 79 percent against a 75 percent bar instead of an 85 percent one.
Show answer
Model answer: No. At a 75 percent bar, 79 percent still counts as auto-approve, so the fix would have missed the drift for another two weeks, right up to the point it crossed under 75 in week five.
Before you close the answer
Why this works
Tests whether you'll evaluate the thing that's actually risky, one field's own trustworthiness, instead of settling for a single record-level number that flattens six fields into one comfortable average.
Follow-up traps
"Isn't per-field scoring just more work for the same result?" Response: no, because it changes what gets caught, not just how it's measured. The record-level check would have shipped 41 bad stubs with a green flag; the field-level one routes them before approval.

"What if every field needs its own threshold, isn't that a lot to maintain?" Response: only the fields tied to a real decision need their own bar. Gross pay doesn't need one; employer name does, because it's the one a fraud outcome rides on.
If pressed
The golden set gets re-labeled quarterly with real stubs from new payroll processors as they show up in production, so the eval keeps testing the layouts the model is actually seeing, not the ones it saw at launch.
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