There's someone this series treats as its precedent: Hamel Husain, who teaches AI product evaluation and has drawn 4,500 students. The LLM-judge experiment was his method, tested with my own hands.
Reading his evals essay, I hit a paragraph that snagged. He recommends grading binary only — good or bad. Scores and fine-grained scales, he argues, cost effort and buy nothing.
But my grader has four grades: FATAL, RISKY, MISSED, HARMLESS. Every scorecard in this series has come out in those four columns, and the shipping rule itself — FATAL 0 ships — stands on them. Have I spent this entire series doing the thing my own precedent says not to do?
What Hamel is actually blocking
What he warns against is the 1-to-5 score scale. Here's why it fails.
Anyone who has agonized over "is this answer a 3 or a 4?" knows: the boundary between 3 and 4 cannot be defined in words. So the standard differs between graders, and even the same grader drifts between morning and evening. And when the average comes out to 3.7, nobody can say what decision that number makes. Ship, or don't ship? 3.7 doesn't answer.
Up to here, I agree completely.
So is my four-grade table a score scale?
There's a way to tell them apart. If it's a scale, you can average it. A 1-to-5 scale gives you a 3.7.
Our grades have no average. There is no "half a FATAL," no "somewhere between FATAL and RISKY." All we ever do is count — so many FATALs, so many HARMLESSes.
Here's what each grade actually names:
FATAL a wrong confirmation flows into the next step — no human gets a chance to catch it
RISKY wrong, but a human checkpoint still remains — there's a chance to catch it
MISSED something that should have been caught wasn't
HARMLESS over-asked for confirmation — a human is mildly annoyed, nothing more
Grading one question means asking "did this accident happen — yes or no?" So we're not reading a 4-point dial. We're asking four binary questions. Translated into Hamel's terms: grade pass/fail as a binary — but give the failure a name.
Why the name matters — three decisions the name made
What if I had lumped everything into good/bad with no names? Let's check against three decisions that actually happened.
The model choice. Every mistake the cheap model made was the same kind: asking "please confirm" on questions it could have answered outright. A question hurts nobody — but good/bad grading counts it as "bad" anyway. So the scoreboard would have read: cheap model, several bads; expensive model, none — and I would have paid 3x for the clean-looking one. With names, those asks were HARMLESS, and the grade that decides shipping — FATAL — was 0 for both. A tie where it matters; on a tie, take the cheap one. Without that name I'd have paid three times more for the same safety.
The retirement verdict. I had a tool that sorts 20,000 YouTube comments into "a real customer need" versus "just chatter," and I use its tally to decide what to build. On a 15-question exam it got 7 wrong. Good/bad grading leaves one number — 8 of 15, 53% — and whether 53% is good enough to keep, the number can't say. What decided it was the content of the wrong answers: three of them counted chatter as a need. To undo that mistake, someone would first have to notice it — and nobody re-reads 20,000 comments. A mistake that never gets noticed never gets undone. That's FATAL on the grade table, three times over. Our rule is that a single FATAL is enough to stop using a tool. This one had three. So it was retired — and the 53% played no part in that decision.
The replacement decision. The replacement candidate, an LLM, got 12 of 15 on the same exam — 80%. If percentages decided, "80 beats 53" would be the reason. It wasn't. The LLM also got 3 wrong; the difference is the kind — all three were mistakes a human still gets a chance to catch. FATAL 0 versus FATAL 3 made the swap.
The common thread across all three: the percentage couldn't answer "ship it? which one? fix what first?" — the name of the failure answered. Names set the repair order too: fix FATAL first, let HARMLESS wait. If all seven failures are just "bad," there's no way to know which of the seven to touch first.
Takeaways
- Hamel's warning is right — don't build score scales. The boundaries can't be defined, and an average makes no decision
- But if you collapse everything into binary, the content of the failure disappears. Ask pass/fail — then name the failure
- One criterion is enough for the name: can a human undo this accident? If not, it's FATAL, and it gets fixed first
Reading my own precedent, I spent about three days uneasy, thinking I'd been wrong. Taken apart, we were saying the same thing from different angles. When you build something independently and arrive at the same spot, the odds that the spot is right go up. This one was that kind of relief.
P.S. Hamel's essay is "Your AI Product Needs Evals" at hamel.dev. There were five more places where it overlaps with this series — add a question every time a failure appears, suspect the grader first, 100% pass is not the goal, a domain expert owns the answer key, split the job into scenarios before writing questions. Hamel and I built our approaches without knowing of each other, and they overlap in this many places. Too many for coincidence. I take it as a sign that verifying with an exam is a road worth staying on.
Top comments (0)