Test your voice agent
Verifiable Rewards vs LLM Judges for Voice Agents

# Verifiable rewards vs LLM judges for voice agents
Quick answer: Verifiable rewards score a voice agent with deterministic, programmatic checks — was the booking created, the amount correct, the disclosure spoken. They are cheap, reproducible, and hard to game, but only cover checkable facts. LLM-as-judge scoring handles subjective tone and helpfulness, at the cost of consistency. Anchor everything checkable to verifiable rewards; reserve judges for nuance.
There are two ways to score a voice agent, and teams keep mixing them up. One way asks a machine to check a fact. Did the refund post? Was the amount right? Did the agent read the required disclosure? The other way asks a language model to render a judgment. Was the tone warm? Was the answer helpful? Did the agent handle the frustrated caller well?
Both have a place. Neither should do the other's job. When a judge grades something a simple check could have verified, you trade a reliable signal for a noisy one. When a check tries to grade tone, it flattens nuance into a brittle rule. This post draws the line between the two paradigms. It shows when each fits, and how to combine them so the score you ship actually means something.
This is the scoring layer under any voice agent evaluation program. It also decides how much you can trust a number when you compare two agents on the same test cases.
What are verifiable rewards?
A verifiable reward is a deterministic, programmatic check with a right answer known in advance.
> Verifiable reward: an objective pass/fail signal computed by code against a known correct outcome. The check runs the same way every time. It needs no human or model to interpret it.
The idea comes from how machines learn tasks with clear success conditions. In reinforcement learning, the reward function tells the system whether it did the right thing. When that reward can be computed by rule rather than estimated by a model, it is verifiable. The score is not an opinion. It is a fact.
For a voice agent, verifiable rewards look like software assertions). You state what must be true, then check it:
# Verifiable checks after a booking call
assert crm.get_booking(call_id) is not None # booking exists
assert crm.booking.date == "2026-04-12" # correct date
assert "recorded for quality" in transcript.lower() # disclosure spoken
assert refund.amount == 42.50 # exact amountEach line has a known correct answer — the ground truth. The check passes or fails. There is no middle. This is the same discipline as unit testing in ordinary software, applied to the outcomes of a call rather than the internals of a function.
Verifiable rewards suit anything with a factual answer. Was a ticket created? Did the agent transfer to the right queue? Was the quoted price correct? Did it collect all four required fields? Did it avoid a forbidden phrase? These are checkable, so check them.
What is LLM-as-judge scoring?
An LLM-as-judge is a language model asked to grade an agent's behavior against a rubric.
> LLM-as-judge: a language model prompted to score a transcript or reply on a quality dimension, such as helpfulness, tone, or coherence. The score is an estimate, not a computed fact.
You give the judge a transcript, a rubric, and a scale. It returns a rating and often a rationale. This handles things no assertion can. Was the agent empathetic when the caller was upset? Did the explanation make sense? Was the summary faithful to the call? These are real quality signals, and they resist reduction to a rule.
The approach was formalized in academic work on using strong models to judge model outputs, and it has become standard for subjective evaluation. It is genuinely useful. It is also genuinely unreliable in ways that matter, which we cover in depth in the limits of LLM-as-judge for voice AI. The short version: a judge is non-deterministic, sensitive to prompt wording, prone to position and verbosity bias, and gameable by an agent that learns what the judge likes. This post is not a rerun of that critique. It is about choosing between the two paradigms, and combining them well.
The core trade-off
The two paradigms trade coverage for trust. Verifiable rewards give you a signal you can bank on, but only for facts. LLM judges cover the fuzzy dimensions, but the signal wobbles. Here is how they compare across the axes that decide which to use.
| Dimension | Verifiable rewards | LLM-as-judge |
|---|---|---|
| Objectivity | Objective — a computed fact against known ground truth | Subjective — an estimate shaped by the prompt and rubric |
| Cost per run | Very low — plain code, no model calls | Higher — a model call per graded item, at scale |
| Reproducibility | Deterministic — identical inputs give identical scores | Non-deterministic — the same input can score differently |
| Coverage | Narrow — only things with a checkable right answer | Broad — tone, helpfulness, nuance, coherence |
| Gaming risk | Low — hard to fake a real outcome | High — an agent can learn to please the judge |
Read the table as a division of labor, not a contest. The column you reach for depends on the question you ask. If the question has a right answer, the left column wins on every axis that matters. If the question is about quality a human would debate, only the right column can answer it at all.
Two axes deserve a closer look, because they are where teams get burned: reproducibility and gaming.
Why reproducibility decides trust
Reproducibility is the property that the same test gives the same result. A verifiable reward is deterministic by construction. Run it a thousand times and it returns the same score. That is what lets you gate a release on it. A regression means the agent changed, not that the grader had a bad day.
A judge does not offer this. The same transcript can earn a 7 one run and a 5 the next. You can lower the temperature and pin the model version, but you cannot make an estimate into a fact. Judge scores drift as models update. That is a poor foundation for a pass/fail gate. It is a fine foundation for a trend you watch over time. When you benchmark agents on your own data, the verifiable checks are what make two runs comparable at all.
Why gaming risk is not hypothetical
Goodhart's law says that when a measure becomes a target, it stops being a good measure. Judges are especially exposed. An agent tuned against a judge learns the judge's tells. It gets wordier because the judge rewards length. It adopts confident phrasing the judge reads as competence. The judge score climbs while real quality stalls.
Verifiable rewards resist this. It is hard to fake a booking that has to exist in the system of record. You cannot talk your way into a correct dollar amount. The check is bound to reality, not to the grader's taste. This is exactly why the checkable parts of a call should never be handed to a judge.
When verifiable rewards fit
Use verifiable rewards for anything with a knowable correct outcome. That covers more of a call than most teams assume.
- Task completion. Was the appointment booked, the order placed, the case created? Check the system of record, not the transcript's claim.
- Data accuracy. Correct amount, date, account, quantity, address. Exact-match or tolerance checks.
- Required steps. Did the agent verify identity, read the disclosure, offer the callback option? Presence checks against the transcript.
- Forbidden behavior. Did it promise something out of policy, quote a wrong price, skip consent? Absence checks.
- Routing and handoff. Did it escalate to the correct queue when it should have? A key distinction, since a clean transfer is a success even when the agent did not resolve the issue — the point we make in the containment vs deflection guide.
The rule is simple. If a competent human reviewer and a piece of code would reach the same verdict, write the check. Do not spend a judge call on it.
When LLM judges fit
Reserve judges for the dimensions that genuinely resist a rule. These are real, and skipping them leaves a blind spot.
- Tone and empathy. Did the agent match the caller's emotional state? Was it warm without being fake?
- Helpfulness and clarity. Was the explanation actually useful? Would a caller understand it?
- Coherence over a long call. Did the agent stay consistent across many turns, or contradict itself?
- Faithfulness. Does the agent's summary match what was actually said?
- Naturalness of phrasing. Did it sound like a person or a script?
For these, accept that the score is an estimate and treat it accordingly. Sample rather than grade everything. Track the trend, not a single number. Calibrate the judge against human ratings before you trust it. Measure the agreement using inter-rater reliability — the same statistic you would use to check whether two human graders agree. A judge that disagrees with humans is a broken instrument, and its scores mean nothing until you fix it.
How to choose and combine the two
The best programs do not pick one paradigm. They layer them, with verifiable rewards as the foundation and judges filling the gaps. Here is the sequence we use.
1. List every outcome the call is supposed to produce. Write them as plain statements. "The refund is issued for the exact amount." "Identity is verified before any account change." This is your ground-truth spec.
2. Sort each item into checkable or judgeable. If code and a fair human would agree on the verdict, it is checkable. If reasonable people would debate the score, it is judgeable. Most items are checkable — be honest about which truly are not.
3. Write verifiable rewards for everything checkable. Turn each checkable statement into an assertion against the system of record or the transcript. These become your release gate. A failed check blocks the ship.
4. Design judge rubrics only for the remainder. For tone, helpfulness, and faithfulness, write a tight rubric with concrete anchors for each score. Vague rubrics produce vague scores.
5. Calibrate the judge against humans. Have people grade a sample, then check the judge agrees. If agreement is weak, tighten the rubric or drop the dimension. Do not ship a judge you have not validated.
6. Combine the scores without averaging them away. Keep verifiable pass rates and judge scores as separate lines on the metrics scorecard. A blended number hides which half moved. Gate releases on the verifiable rewards; watch the judge scores as trends.
7. Re-audit the judge on a schedule. Models update and drift. Re-run the human-agreement check whenever the judge model changes, and treat a drop as a broken gauge, not a quality change.
The order matters. Teams that start with a judge tend to grade everything with it, including facts a check would have nailed. Teams that start with the ground-truth spec discover how much of the call is verifiable. They reserve the expensive, noisy judge for the sliver that truly needs it.
Where independent evaluation fits
Both paradigms are easy to grade generously when you own the agent. You write the checks that pass and the rubrics that flatter. That is why the scoring paradigm and who runs it are separate questions. Evalgent is an independent, third-party evaluator: we build verifiable checks against your real systems of record, calibrate any judges against human graders, and report the two signals separately so no single soft number carries the verdict. The value of a verifiable reward is that anyone can rerun it and get the same answer. That is the whole point of independent voice AI evaluation, and the reason a self-reported quality score deserves less trust than a check you can reproduce.
The distinction between running these scenarios and judging their results is worth keeping straight, and the testing vs evaluation guide draws that line in full.
Frequently asked questions
What is a verifiable reward in voice agent evaluation?
A verifiable reward is a deterministic, programmatic check with a known correct answer. It confirms an objective fact about a call — whether the booking was created, the amount was right, or the disclosure was spoken. The check returns the same pass or fail every time, so it can safely gate a release without a human or a model interpreting it.
How is a verifiable reward different from LLM-as-judge scoring?
A verifiable reward computes a fact with code and returns an identical result every run. An LLM-as-judge estimates a subjective quality, like tone, and can score the same transcript differently across runs. Verifiable rewards are cheaper and reproducible but only cover checkable outcomes. Judges cover nuance but are non-deterministic and easier to game.
When should I use verifiable rewards instead of an LLM judge?
Use verifiable rewards whenever a call outcome has a knowable correct answer. Task completion, data accuracy, required disclosures, forbidden phrases, and correct routing are all checkable. If code and a fair human reviewer would reach the same verdict, write a check rather than spending a judge call on it. Reserve judges for genuinely subjective dimensions.
Can LLM judges be gamed?
Yes. Goodhart's law applies directly. An agent tuned against a judge learns the judge's preferences — it grows wordier or more confident because those traits raise the score, while real quality stays flat. Verifiable rewards resist this because they check real outcomes in a system of record, which an agent cannot fake with better phrasing.
Are LLM-as-judge scores reproducible?
Not fully. The same transcript can earn different scores across runs, even at low temperature, and scores drift as the underlying model updates. You can reduce variance by pinning the model version and lowering temperature, but an estimate never becomes a fact. Use judge scores as trends you watch, not as a strict pass/fail release gate.
How do I combine verifiable rewards and LLM judges?
Keep them as separate signals. Write verifiable rewards for every checkable outcome and gate releases on those pass rates. Design calibrated judge rubrics only for subjective dimensions, and track those as trends. Do not average the two into one number, because a blended score hides which half of the picture actually moved.
Do verifiable rewards work for tone and empathy?
No. Tone, empathy, helpfulness, and naturalness resist reduction to a rule, so a deterministic check cannot grade them fairly. These are the dimensions where an LLM judge earns its place. Validate the judge against human ratings first, using inter-rater reliability, and treat weak agreement as a sign the rubric or the judge needs fixing.
What does an independent evaluator add to this?
An independent evaluator removes the incentive to grade generously. Evalgent builds verifiable checks against your real systems of record, calibrates any judges against human graders, and reports both signals separately. Because a verifiable reward is reproducible, anyone can rerun it and confirm the result, which makes an independent score far more trustworthy than a self-reported one.
The bottom line
Verifiable rewards should anchor everything checkable in a voice agent, because they are cheap, reproducible, and hard to game. LLM judges belong only where the question is genuinely subjective, and only after you have calibrated them against humans and kept their scores separate from the release gate.
Want scoring you can actually trust? Book a demo and we will build verifiable rewards against your real outcomes and calibrate the judges that fill the gaps.
Related Articles

Why AI voice agents fail in production (and how to prevent it)
AI voice agents that ace demos still break in production. Learn the 5 root causes, how to test for each, and what production readiness actually means.
Read more
Voice agent regression testing: why LLM updates break production
LLM updates improve benchmarks but break voice agents in 5 predictable ways. How to detect and prevent regressions after every model or prompt change.
Read more