Case study 03/Evaluation & measurement/2026

How do you know the output is any good?

I built the instrument to find out. Its most valuable output was telling me, repeatedly, that I was wrong.

Comprehension3.3 → 7.8
Mean score103.8/140
Judge agreementr=0.78
Cycles logged56
Premise

Ask a team how they know their AI output is good and the honest answer is almost always: we look at it. That fails in three specific ways, and I hit all three.

  • 01
    It does not scale.Reviewing a hundred outputs carefully is days of work. So you skim, and skimming finds only catastrophic failures.
  • 02
    It is biased toward your own work.You know what the output was supposed to be, so you fill in what it failed to convey. You are the worst possible judge of whether something communicates — you are the only person who already knows.
  • 03
    A score does not tell you what to fix.“Six out of ten” is not actionable.

I was building a pipeline that turns written material into narrated video with generated imagery. Quality was subjective, failure modes were subtle, and I had no way to tell whether a change helped. So before improving the output, I built something to measure it.

The instrument

One decision matters more than the rest

The critic never sees the source — only the finished rendered output, exactly as a stranger would encounter it.

A judge that has read the script will confirm the video makes sense. Because it does — to someone who read the script.

Sourcewhat it should say Rendered outputas a stranger sees it Blind judge never sees the source blocked — this is the whole design Retellingwhat it understood Compare gap = the line to fix A judge that has read the source will confirm the output makes sense — because it does, to them.
The blocked path is the design. Everything else follows from it.

The load-bearing output is a retelling, not a score

The judge watches and retells what it understood. Comparing that against what the piece was meant to convey shows exactly where comprehension broke: which scene, which transition, which unexplained object. A score says the output is bad. A retelling says why, and points at the line to change.

Positive controls

Known-good and known-bad material goes through the judge to verify it can tell them apart. Without this an evaluation harness is a random number generator with a confident tone — and I would have trusted it.

Correction log

What it caught — including in me

An evaluation harness only earns its cost when it contradicts the person who built it.

I caught myself eyeballing thumbnails
Entry 01

Judged27/1003 faces, 1 character

I reported that character identity was holding across generated frames — the contact sheet looked fine. Judged at full resolution, the same sequence contained three visibly different people playing one character. At thumbnail size the differences were invisible.

Looking at it is not an instrument.

It killed an architecture I had just recommended
Entry 02

Proposed40.0Incumbent48.7

I proposed replacing a working approach with one I thought was cleaner. Calibrated head to head, it lost. I killed it the same day I recommended it.

Without the harness I would have shipped it on the strength of my own enthusiasm, then spent weeks wondering why output had got worse.

It caught a fix that made things worse
Entry 03

Image score36 → 28

A change meant to correct unnatural character posing dropped scores by eight points. I reverted the harmful half and kept the rest. Unmeasured, that reads as “still not fixed, try harder.”

It caught me overclaiming from three data points
Entry 04

Held atn=3Broke atn=5

I reported that quality tracked an input variable monotonically, based on three samples. At five samples the relationship broke. Three points will support almost any story you want to tell.

And it caught its own blind spot
Entry 05

Missing axiscoherence

A piece the harness scored well read, to a human, like a dream — abstract, elements unconnected, technically fluent and semantically empty. The harness had no axis for that. It measured whether each part was intelligible, not whether the parts cohered. I added coherence as a separate heavily-weighted axis and re-ran everything. Scores that had looked strong dropped sharply, which was correct.

An evaluation harness is itself software with bugs, and the worst bug is a missing dimension. It never reports an error. It reports a good score for work that fails in a way you forgot to measure.

Outcome

Iteration became directed rather than hopeful

CORRECTIONS THE INSTRUMENT FORCED architecture killed40 vs 48.7pose fix reverted36 → 28overclaim at n=5n=3 heldcoherence axis addedscores dropped cycle 1cycle 56 3.37.8 comprehension, blind judge (/10) Mean 103.8/140 · judge self-agreement r = 0.78 · mean absolute difference 0.27
The rise is the headline. The red marks are the evidence the instrument works.
MeasureBeforeAfter
Comprehension (blind judge, /10)3.37.8
Overall (mean, /140)—103.8
Judge agreement (two runs)—r = 0.78
Judge drift (mean abs. diff)—0.27

Those last two rows matter as much as the first: I measured whether the measuring device agreed with itself before trusting what it said.

All 56 cycles are documented, including every dead end. Several were expensive. The record is what stops me re-running them.

Where this applies

Any team with a generative feature in production and no automated notion of output quality — which, in my experience, is most of them. Concretely: LLM output regression testing before release, A/B evaluation of prompt and model changes, detecting quality drift after a model upgrade, and building review that scales past what humans can read.

Also directly relevant where this has to run locally, because the content being judged cannot be sent to a third-party API.

Private Call Analysis Pipeline · Self-Healing Agent Fleet · All work