CaseAdvancedQuality, Cost & Token Economics / Leading vs lagging indicators for AI / #8

What leading indicator would catch a prompt regression before an eval run does?

Quality, cost & token economics // leading vs lagging indicators

A check that runs once a day only tells the truth once a day. Everything that happens in between still happens to someone.

The direct answer
Score a small, always-on set of about 30 verified questions against the tool's live output every few minutes, not once a night. Page someone the moment the match rate drops below 90 percent of normal, two checks in a row. Build and wire that scorer first. Nothing else on this list works as an early warning until it exists.
Build it in this order
  1. Build and wire an always-on golden-set check against live traffic, with a real alert.Why: every other signal on this list only matters once this one exists. None of them are "leading" without it.
  2. Watch how often the tool's SQL fails to run at all, in real time.Why: costs almost nothing to build and catches a broken query in minutes, though it would have missed this exact bug, since the query still ran, just against the wrong table.
  3. Run a fixed set of test questions through any new prompt before it ships, not after.Why: catches an obvious break while it is still on one engineer's screen, before a single real user sees it.
  4. Flag production queries whose result numbers land far outside their normal range.Why: catches the cases the golden set does not cover yet, without waiting for a person to notice first.
  5. Keep the nightly full eval running, but treat it as the backup check, not the first one.Why: it still finds things the small set misses. It is just too slow to be anyone's early warning.
  6. Do not count on the weekly satisfaction number to catch a regression early.Why: it is a real signal, but by the time it moves, a wrong number has usually already reached someone's slide deck.

How to answer this, stage by stage

Nobody is grading whether you can name a pile of possible signals. They are grading whether you can rank them and say which one gets built first. Eight moves get you there.

1
Scope it to one real product and person
Say it like this
"Let's ground this. Ironwood Analytics builds Rowcast, a tool that turns a plain English question into a SQL query and runs it against the warehouse. Odunayo Larrimore owns the prompt behind it, and has for about two years."
Why this works
Grounds the ranking in a real product before naming a single candidate signal.
2
Say your structure out loud
Say it like this
"Here's how I'd take this apart. I'll name the outcome every candidate signal is actually protecting, rank them by how hard a miss is to undo, flag what has to get built before the best one even works, then make the call."
Why this works
Two seconds of structure tells the interviewer you're running a method, not guessing out loud.
3
Name the outcome everything is competing for
Say it like this
"The outcome isn't passing the next eval run. It's catching a bad query before its wrong number gets used for something real, a renewal call, a board slide, a pricing change. That's a much earlier deadline than tonight's eval."
Why this works
Without naming the outcome first, ranking candidate signals is just opinion. That's ORDER's own test.
4
Rank by what's hardest to undo
Say it like this
"A slow dashboard, you fix. A number a customer already heard on a call, you can't unsay. So I rank each candidate signal by how much time sits between a bad prompt going live and a real person acting on what it produced, and I protect the shortest gap first."
Why this works
This is the load bearing move in ORDER, the same reasoning behind stopping someone from quitting before you make the product better.
5
Call out the dependency
Say it like this
"The strongest signal here doesn't exist yet. Somebody has to write 30 verified questions, check their answers by hand, and wire that set to run against live traffic every five minutes with an alert on it. That build is the first item on the plan, not a footnote under it."
Why this works
Naming the dependency stops the plan from assuming a tool nobody has built yet.
6
Name what's cheap to check first
Say it like this
"Before I ask anyone to spend a sprint on the golden set, I'd check two things that already exist for free. How often does the tool's SQL fail to run at all? And does a fixed set of test questions, run every time we deploy, already catch the obvious breaks? Both answers tell me how much the golden set actually needs to cover."
Why this works
This is the cheap learning step. It shows you where the real gap is before you spend real engineering time.
7
Give the ranked call
Say it like this
"So here's the order. Build and wire the golden set alert first. Add real time SQL error tracking the same week, it's nearly free. Run test questions at every deploy. Keep the nightly eval as backup. Don't trust the weekly survey to catch anything early."
Why this works
Matches the direct answer. A named, ordered list beats saying you'd look at a few different signals.
8
Close on what you ruled out, and what it costs
Say it like this
"We looked at just running the full 240 question eval every fifteen minutes instead of building something new, and we ruled it out. It costs too much to run that often against the warehouse, and it was built for broad coverage, not for catching one mis-joined table fast. The real cost of the golden set alert is a bit of extra warehouse spend and one more page someone has to own. That's cheaper than a wrong revenue number reaching a renewal call."
Why this works
Naming a rejected option and a real cost turns "watch more things" into a decision you can defend.
If you remember one line A signal you have not built yet cannot lead anything. Rank the build itself as the first priority, not the reward for finishing everything else.

Let's learn

What do you watch to catch a bad prompt before the harm is already done, not after the next scheduled check confirms it?

Rowcast is a tool built by Ironwood Analytics. Type a question in plain English, something like "what was our net revenue by plan tier last month," and it writes the SQL, runs it against the warehouse, and hands back a table.

Before Rowcast, an analyst wrote that kind of question by hand. A question that touched three or four tables took about 12 minutes, longer if the tables had moved since the last time anyone looked.

With Rowcast, the same question comes back in about 15 seconds. Analysts stopped writing raw SQL for anything routine. So did the customer success team, who used to wait on an analyst for every number they needed on a call.

Here is the turn. On a Wednesday, Odunayo shipped a new version of Rowcast's prompt, meant to make it better at questions that touch several tables at once. The new prompt worked. It also had a bug nobody had caught yet. For one kind of question, net revenue questions, it started joining against an old table that had already been folded into a newer one. That old table subtracted returns a second time. Every net revenue number Rowcast gave back for that kind of question came out about 9 percent too low.

The bug did not make Rowcast slower or less sure of itself. It made Rowcast just as fast and just as confident, and wrong.

At its worst, this does not stay inside engineering. At 3:40 that afternoon, a customer success manager pulled "net revenue by plan tier, trailing 30 days" through Rowcast for a renewal call starting in twenty minutes, and read the wrong number straight off the screen to the customer. Nobody flagged it. Rowcast does not know when it is wrong, it only knows when a query fails to run, and this one ran fine.

Knowledge spark: what is a golden set? A small pile of questions with answers a person has already checked by hand. You do not use it to test everything. You use it to catch the exact kinds of mistakes you already know a prompt can make.
Golden set match rate, the Wednesday of the deploy
30/30 21/30 0 2:05pm, drops 2:15pm, alert fires 2:45pm, fixed 10:00am 2:00pm deploy 4:00pm
The renewal call happened at 3:40pm, inside the broken window. The nightly eval does not run until 1:00am the next day, eleven hours after the deploy and over ten hours after the bug was already fixed. By then it would show 30 out of 30 and never know anything happened.

The nightly eval did catch the bug, eventually. It runs once a day, at 1 in the morning, against 240 hand checked questions, and it usually lands at 96 percent right. By the time it ran that night, the mistake was already 11 hours old, and the customer had already heard the wrong number.

Hand sketched flow diagram titled What has to exist before the alert works. Three boxes connected left to right: Verify 30 Qs, Wire to live traffic, Turn on alert, with the third box highlighted in blue.
The fast signal is not free. It is a small build, in order, before it protects anyone.
The decision that mattered We treated the nightly eval as the review step for every prompt change, full stop. That was true back when Odunayo shipped a new prompt about once a month. Nobody ever asked whether it was still true once prompt changes started shipping every week.

The choice I would take back is not building Rowcast, and it is not the nightly eval either. It is that we never asked how long a bad number gets to live before someone acts on it. We assumed a day was fine because a day was fine for something else, a while ago.

What I would leave alone: Rowcast's "explain this query" feature, the one that just walks an analyst through SQL someone already wrote. A prompt change there can produce a confusing explanation. It cannot produce a wrong number, because it never touches the warehouse. That one can stay on the slower nightly check.

The lesson: a check that runs once a day is not slow because someone was lazy. It is slow because nobody ever put a real number on how long a bad answer gets to live before someone uses it. Go find that number first. Then build the check that beats it.

Now here is the same thing as a story

The short version is above. Read on for the Wednesday this cost a renewal call twenty minutes of trust nobody got back.

Odunayo Larrimore has owned the prompt behind Rowcast for two years. Hand her a slow query and she can usually tell you which join is the problem before she opens the plan. That instinct is most of the job.

For most of those two years, Rowcast earned its trust the plain way, one right answer at a time. Analysts asked it questions all morning. Customer success reps started pulling numbers straight from it on live calls, no analyst in the loop at all, because it was almost always right, and fast. Nine in the morning, a rep would type a question, read the table back to a customer by nine oh two, and move on.

The double checking thinned out the same quiet way it always does. At first, a rep would glance at Rowcast's number and then ping an analyst to confirm anything over a few thousand dollars. A few months in, that shrank to just the really big ones, a new deal, a churn save. By spring, nobody was pinging anyone. Rowcast's number was the number.

On the Wednesday in question, Odunayo shipped a prompt change meant to make Rowcast better at questions with several joins in them, the ones analysts complained took two or three tries to get right. It shipped at two in the afternoon. Nothing about the release looked unusual.

At three forty, a customer success manager pulled "net revenue by plan tier, trailing 30 days" for a renewal call starting in twenty minutes. Rowcast answered in fifteen seconds, the way it always did. The number was 9 percent lower than it should have been, because the new prompt had quietly started joining that question against an old, already retired refunds table. The rep read it straight to the customer. Nobody had a reason to check it.

Nobody checked, because nobody had needed to check in months. That was not carelessness. That was the product working exactly as designed, right up until the one week it wasn't.

It was never really about 9 percent. Nobody on that call had a number in their head for how far off Rowcast could be before they would double check it. They had a feeling, and the feeling had two settings: trust it, or check it. Months of right answers had switched everyone to trust it. One bad Wednesday could not switch them back in the moment, because nothing told them it needed to.

Hand sketched comparison titled Reversible, or not. Left a gauge labeled Ship the alert, tune later, caption swings both ways. Right a document labeled Only the nightly eval, caption the wrong number already spoke.
One door still opens either way. The other one closed the moment the customer heard the number.

Months earlier, when the team set up Rowcast's launch checklist, the decision was simple. Every prompt change gets reviewed by the nightly eval before the team calls it done. At the time, prompt changes shipped about once a month, so waiting a day for the nightly run to confirm nothing broke felt more than careful enough. Nobody in that meeting pictured a week where three prompt changes would ship, each one trusted by people who no longer double checked anything.

Run the same Wednesday through the fixed design. The golden set catches the drop in the match rate five minutes after the two o'clock deploy, twenty one right answers out of thirty instead of thirty out of thirty. The page goes out at two fifteen. Odunayo rolls the prompt back by two forty five. The three forty call still happens, and the number on the screen is the real one.

One design waits for morning to find out what happened at lunch. The other one catches it before the next call starts.

What I would tell myself, before any of this: we built a fast way to answer a question and a slow way to find out when the answer was wrong, and we never once compared how fast each one actually was.

ORDER, in one screen

This is a prioritization question, so ORDER does the ranking, not FLIPS. Each letter gets a name, a question, and where it shows up in Rowcast's Wednesday.

O
Outcome. What are all these signals actually trying to protect?
Catching a wrong query before a real person acts on its answer, a renewal call, a board slide, a price change. Not passing tonight's eval.
Every ranking below is measured against this one line, not against "which signal sounds most thorough."
R
Reversibility. Which candidate failure is hardest to undo if we miss it?
A wrong number quoted on a live call cannot be unsaid. A slow dashboard can just be fixed tomorrow.
This is why a fast check on a small set beats a slow check on a big one, even though the big one is more thorough.
D
Dependency. What has to exist before the best signal can even run?
The golden set of 30 verified questions has to be written, checked by hand, and wired to live traffic with an alert, before it protects anyone.
That build is priority one on the list, not a footnote underneath it.
E
Evidence. What is cheap to check before committing real engineering time?
Real time SQL error tracking and a fixed set of test questions at every deploy, both nearly free, both worth having before the golden set even ships.
Neither one would have caught this specific bug, since the query ran fine. Both are still worth building, for the bugs they do catch.
R
Rank. Given all that, what gets built first, and can you defend it?
Golden set live check first. Real time error tracking the same week. Test questions at every deploy. Nightly eval stays as backup. Weekly survey stays last.
This is the direct answer, restated as a list anyone could actually build from.
How fast each candidate signal would have caught it
0.25 hr 11 hrs 168 hrs Golden set Nightly eval Weekly survey
Bars are not drawn to a straight linear scale past the nightly eval mark, or the weekly bar would run off the page. The hours labeled above each bar are the real numbers: 15 minutes, 11 hours, 7 days.

Two things are worth naming directly, since this is where the real judgment lives. First, the join that broke was not a syntax error, it was a confident, wrong choice of table, the same kind of overconfidence you would call a hallucination anywhere else in the model's output. The guardrail is not "ask the model to be careful." It is the golden set itself, built specifically around the join patterns Rowcast has gotten wrong before, checked every five minutes instead of once a day. Second, we looked at just running the full 240 question eval more often instead of building a smaller live check, and rejected it. It is too expensive to run that often against the warehouse, and it was built for broad coverage, not for catching one bad join fast. The real trade is a small one: a bit of extra warehouse spend and a page someone has to own, running that thirty question set continuously, in exchange for not finding out about a wrong number from a customer instead of from an alert.

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

Same five moves, an insurance claims tool instead of a query tool, and this time the hardest to undo failure is a paid claim that should not have been paid.

Cobblegate Insurance runs ClaimNote, a tool that drafts a claim summary from a recorded phone call, for an adjuster to read before approving or denying a payout. Bellamy Petrosky owns the prompt behind it.

O, outcome. Catching a bad summary before an adjuster acts on it, not before the weekly QA sample gets pulled.
R, reversibility. A summary that leaves out a liability detail and gets used to approve a payout is much harder to undo than one that just reads awkwardly. Once the money is paid, getting it back is its own project.
D, dependency. A small set of past calls with verified correct summaries has to be written and wired to score every new prompt version's draft continuously, the same build cost as Rowcast's golden set.
E, evidence. Cheap to check first: does the draft include every required field, the date of loss, the injury described, any third party named. A field completeness rule catches an obvious drop in days, before anyone builds a hand graded set.
R, rank. Build the field completeness check first, it ships in days. Then the golden set live check. Keep the weekly QA sample as the slow confirmation layer, same role as Rowcast's nightly eval.

Same shape, a different kind of unreversible A wrong number is embarrassing. A paid claim that should not have been paid is money that has already left the building. Reversibility ranks differently here, but the method for finding what to build first does not change.
Minutes before a bad summary gets used, old process vs new
about 10,080 min, 7 days 20 min Old: weekly QA sample New: field + golden set check
The old bar is capped to fit the page, not drawn to true scale against the new one. The labeled totals are the real numbers: about 7 days waiting on the weekly sample, versus 20 minutes for a field check plus a golden set check.

Swap the trigger and it still runs.
Speed: an interviewer caps the answer at ninety seconds. Skip straight to the rank: build the small always-on check against a known-answer set first, everything else after.
Cost: engineering says the live golden set check cannot ship for two months. Do not lean on the nightly eval alone in the meantime and call it fine. Ship the cheap real time error check today. It is not a full answer, but it is not nothing.
The model got better, for real: say Rowcast's accuracy genuinely improves next quarter. That does not retire the golden set. A better model just means fewer real alerts, not zero risk of one bad join slipping through unnoticed.

Where people run it wrong.
They treat "we have an eval" as the same claim as "we would catch this fast," without asking how long the gap actually is.
They build the most thorough check first, instead of the fastest one, because thorough feels more responsible.
They wait for a customer to notice, instead of charting the golden set's match rate every few minutes whether anyone remembers to look or not.

How to use it live. Say the outcome before naming a single signal: "the question isn't which check is most thorough, it's which one would have paged someone before a customer heard the wrong number." That buys you room to actually rank something, instead of listing every monitoring idea you know.

Flashcards (click a card to flip it)

1 · THE FRAMEWORK
What framework is this?
Tap to flip
ANSWER
ORDER. Rank candidate signals by what protects the outcome earliest and most reliably, what depends on what, and what is cheap to learn before you commit.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Odunayo Larrimore, senior analytics engineer at Ironwood Analytics, who has owned the prompt behind Rowcast for two years.
3 · THE HABIT
What habit made the wrong number believable?
Tap to flip
ANSWER
Customer success reps stopped double checking Rowcast's numbers with an analyst, first for small figures, then for everything, because it had been right for months.
4 · THE CALL
What's the one thing you'd build first?
Tap to flip
ANSWER
A small always-on golden set, about 30 verified questions, scored against live output every few minutes, with an alert wired to it.
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 nightly eval as the review step for every prompt change, full stop. That made sense when prompt changes shipped once a month, not once a week.
6 · THE NUMBER
Fill in the blank: the golden set's match rate dropped from 30 out of 30 to ___ out of 30 within five minutes of the bad prompt going live.
Tap to flip
ANSWER
21. That drop, not the nightly eval, is what should have paged someone.
7 · THE REPLAY
Same bad day, new design, what changes?
Tap to flip
ANSWER
The alert fires at two fifteen, seventeen minutes after the deploy. Odunayo rolls the prompt back by two forty five. The three forty renewal call still happens, with the right number on the screen.
8 · CROSS PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and what's the equivalent leading indicator?
Tap to flip
ANSWER
ClaimNote, Cobblegate Insurance's claim summary tool. The equivalent leading indicator is a field completeness check on every draft, built before the slower golden set check.

Check yourself Score: 0 / 0

True or false
1. True or false: the real time SQL error check would have caught this exact regression, since it watches every query Rowcast generates.
  • True
  • False
Show hint
Check whether the query actually failed to run.
Show answer
False. The query ran fine, it just used the wrong table. Nothing about it looked broken to an error check.
Fill in the blank
2. The golden set's match rate dropped from 30 out of 30 to ___ out of 30 within five minutes of the bad prompt shipping.
Show hint
Check the line chart in "Let's learn."
Show answer
21. That is the number that should have paged someone, seventeen minutes after the deploy, hours before the nightly eval would have run.
Multiple choice
3. According to this answer, what should Ironwood Analytics build first?
  • A. A weekly satisfaction survey with more questions on it.
  • B. A small always-on set of verified questions, scored against live traffic with an alert.
  • C. A rule that blocks all prompt changes until the nightly eval improves.
  • D. A dashboard that shows the raw number of queries Rowcast runs per day.
Show hint
It has to be fast, and it has to already exist before it can catch anything.
Show answer
B. It is the only option that is both fast and something you can actually build and wire up.
Short answer, apply it yourself
4. Think of a tool at your own job that only gets checked on a schedule, a weekly report, a monthly audit. What could go wrong in the gap between checks, and what would need watching all the time instead?
Show hint
Look for the thing that happens the moment after the last check, not the thing the check itself measures.
Show answer
Model answer: A payroll system that only gets audited once a quarter. A rate table change in week two could send wrong paychecks for ten weeks before the audit catches it. The always-on version would flag any single paycheck that moved more than a set amount from that same person's last one, checked every run, not once a quarter.
Multiple choice
5. Why does this answer rank the nightly full eval below the golden set live check, instead of dropping it?
  • A. The nightly eval is wrong and should be replaced entirely.
  • B. The nightly eval is thorough but slow, and still worth keeping as a backup check for what the small set misses.
  • C. The nightly eval costs more money than the golden set does.
  • D. The nightly eval only works for questions about revenue.
Show hint
The golden set is small on purpose. What covers everything it does not?
Show answer
B. Thirty questions can never cover what 240 questions cover. Ranking it lower is not the same as saying it is useless.
True or false
6. True or false: once the golden set alert exists, running the nightly eval is no longer worth doing.
  • True
  • False
Show hint
Think about how many questions the golden set actually covers, versus the full eval.
Show answer
False. The golden set is small on purpose, built to catch known risky patterns fast. The nightly eval still covers the other 210 or so questions the small set was never meant to hold.
Before you close the answer
Why this works
Tests whether you will rank overlapping signals by how early and how reliably each one catches something, instead of listing every monitoring idea you know. Most candidates say "add more eval" and stop there.
Follow-up traps
"Why not just run the full nightly eval every fifteen minutes instead of building something new?" Response: cost and speed. Running 240 questions against the warehouse that often is expensive, and it was built for broad coverage, not for catching one bad join fast. A tiny always-on set is cheap enough to run continuously.

"Isn't a 30 question golden set too small to catch everything?" Response: it was never meant to catch everything. It is built around the join patterns Rowcast has gotten wrong before, so it stays small and cheap enough to run every five minutes. The nightly eval and live sampling still cover the rest, just on a slower clock.
If pressed
The 30 questions are not fixed forever. Every time a regression like this one gets caught and fixed, the exact question that caught it gets added to the set, so the golden set grows around Rowcast's actual failure history instead of a generic sample somebody guessed at up front.
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