If you run an AI agent in production, you want something watching it: did it follow the refund policy, did it call the right tool, does its reply actually match what the tool returned? The usual answer is to ask a big LLM to grade it. That works, but it's slow and expensive for what are mostly yes-or-no questions, and it gives you no confidence score you can act on. Someone raised exactly this in AWS Strands Agents #4585, and I wanted to see how small the judge could get.
What I built
TinyJudge is ModernBERT-base, about 150M parameters, fine-tuned to answer three questions about an agent's turn: was the policy followed, was the right tool chosen, and is the reply faithful to the tool results. The training data comes from rule-labelled agent trajectories plus LLM-written replies, and the dataset is versioned with a SHA-256 manifest so a run can always be traced back to the exact data it saw.
Making the confidence mean something
A judge that says 0.9 should be right about 90% of the time. Out of the box it wasn't, so I fitted Platt calibration per task on a separate half of the real data. Calibration error on the grounding task halved, and once the scores were honest I could build a cascade: TinyJudge handles the cases it's sure about and only hands the uncertain ones to the big LLM. That got to 89.9% while sending about a third of the traffic upstream.
Shipping it
Runs are tracked in MLflow and models are versioned on the Hugging Face Hub. The FastAPI service exposes Prometheus metrics and simple drift signals. In CI, GitHub Actions builds the Docker image, smoke-tests it, benchmarks it, and refuses to publish if accuracy drops below 85%. That gate has caught me more than once.
It's one demo domain, and there are only 38 to 85 real test examples per task, so small differences between models are within noise. I'd want a second domain before calling it general.