What auditing LLMs at scale taught me about software quality
Three months of grading frontier-model training data changed how I review my own code. The failure patterns are the same, they just hide in different places.
I spent the last few months moving from AI Model Trainer to Queue Manager Auditor at Outlier AI. The job, stripped down, is this: read a lot of model output, decide whether it's actually good, and turn the why behind bad output into feedback that makes the next batch better.
It turns out that's the same job as code review. Here's what carried over.
Root cause beats symptom, every time
When a contributor's submission fails, the useless feedback is "this is wrong." The useful feedback names the class of mistake: the model followed the instruction literally instead of by intent, or it hallucinated a constraint the prompt never stated, or it optimized the visible metric while breaking an invisible one.
The same three failure classes show up in code:
- Literal over intent, the function does exactly what the ticket said and nothing the ticket meant.
- Invented constraints, defensive handling for inputs that can't occur, which then reads as if they can.
- Visible metric, invisible cost, the fast path that quietly corrupts state under concurrency.
Once you can name the class, you can prevent the next instance instead of patching this one.
Guidelines are a spec, and specs rot
Every project I audit runs on a rubric. And every rubric has a section that used to be right. Requirements drift; the rubric doesn't move on its own. A huge fraction of "quality problems" are really stale-spec problems, the contributor followed the letter perfectly and still failed, because the letter was out of date.
I now read my own README and my own tests the same way: as a spec that is probably a little bit wrong, and worth re-checking before I trust it.
Recurring patterns are the real deliverable
One-off corrections don't scale. What moves a whole project's quality is documenting the pattern, the reproducible failure mode, so it stops recurring across hundreds of contributors.
That's the mindset I bring to a codebase now. A bug is data. The fix is local; the pattern is what's worth writing down.
The best reviewers aren't the ones who catch the most mistakes. They're the ones whose feedback means the same mistake doesn't come back.
If you're building AI systems and you've never sat on the evaluation side of one, I'd recommend it. You stop trusting outputs that merely look right, and you start noticing how often "looks right" is doing all the work.