By Sagar Shankaran, Founder of CallSphere
Build an eval loop for Claude agents: real test sets, LLM-as-judge scoring, tool-call assertions, and CI gates that block regressions before release.
Key takeaways
You change one line of the system prompt to fix a tone complaint, ship it, and three days later support is flooded because the agent now mishandles refunds — a workflow you never touched. This is the defining hazard of building with agents: behavior is global and emergent, so a local edit can break something far away, and you have no way of knowing until users tell you. The cure is the same one that tamed flaky software decades ago, adapted for non-determinism: an eval loop that measures quality and refuses to let a regression ship. For a startup, evals are not a nice-to-have; they're the difference between iterating confidently and iterating blind.
The hard part is that there's no compiler for "was this a good answer." You're grading open-ended behavior against fuzzy criteria. But "hard to measure" is not "impossible to measure," and a rough, automated eval that runs on every change beats a perfect manual review that happens never. Let's build one from the ground up.
An eval is only as good as its examples, and the best examples come from reality. Mine your logs and support tickets for the inputs users actually send — including the weird, ambiguous, and adversarial ones — and turn each into a test case. A test case is an input plus a way to judge the output: sometimes an exact expected value (the agent must return order #4471's status), sometimes a checklist of properties (the response must cite a real policy, must not promise a refund, must stay under 120 words).
Aim for coverage over volume early on. Forty cases that span your distinct workflows — happy paths, edge cases, the failure modes you've already been burned by — are worth more than four hundred near-duplicates. Every time a bug reaches production, add the trajectory that caused it as a permanent test case. Over time your suite becomes a memory of every mistake you've made, and that memory is what stops you repeating them.
Different outputs call for different graders, and you'll mix three kinds. Deterministic checks are best when possible: did the agent call the right tool, return valid JSON, include the required disclaimer, stay under the token budget? These are cheap, fast, and never flaky, so encode as many criteria as you can this way. Programmatic assertions on tool calls — checking the exact arguments the agent passed — catch a huge share of regressions because most agent failures are tool failures.
Hear it before you finish reading
Talk to a live CallSphere AI voice agent in your browser — 60 seconds, no signup.
For the genuinely subjective parts — was the answer helpful, correct, appropriately toned — use an LLM-as-judge: a separate Claude call that scores the output against an explicit rubric you write. The judge isn't perfect, but a well-prompted rubric ("score 1-5 on factual accuracy; deduct for any unsupported claim; output a number and one-line reason") is consistent enough to catch real movement in quality. The diagram below shows how these graders combine into a gate.
flowchart TD
A["Prompt or tool change"] --> B["Run agent over eval set"]
B --> C["Deterministic checks (tool, format)"]
B --> D["LLM-as-judge on rubric"]
C --> E{"Score >= threshold & no regressions?"}
D --> E
E -->|Yes| F["Allow merge / deploy"]
E -->|No| G["Block, show failing cases"]
G --> H["Fix, add case, re-run"]
H --> B
The gate has two conditions worth highlighting. The aggregate score must clear a threshold, and no previously-passing case may newly fail. That second condition is what catches the refund regression from the opening — even if your average score went up because the tone fix helped, the eval flags that a specific refund case broke, and you don't ship until it's resolved or consciously accepted.
An eval that you run manually is an eval you'll skip under deadline pressure. The discipline that works is running the suite automatically on every change to prompts, tools, or model version — in CI on each pull request if you can, and as a quick local command developers run before pushing. The output should be blunt: pass or fail, the aggregate score, and a list of which specific cases regressed, with their trajectories, so a developer can open the failing one and see exactly what the agent did.
Treat model upgrades as a release that must pass the gate. When a new Claude version ships, you don't just swap it in — you run your full eval suite against it and compare scores case by case. Sometimes a newer model improves nearly everything but shifts behavior on one workflow that depended on a quirk of the old one. The eval surfaces that before your users do, turning a scary upgrade into a measured decision.
The first trap is grading only the final answer. For agents, the trajectory matters as much as the output — an agent that returns the right answer by making three wrong tool calls and getting lucky is a latent bug. So assert on the tool calls and their arguments, not just the text. The second trap is an over-trusting judge: if your LLM-judge rubric is vague, it rewards confident nonsense. Calibrate it by spot-checking its scores against your own judgment on a sample, and tighten the rubric until they agree.
The third trap is a stale set. As your product and users change, old test cases drift out of relevance while new failure modes go uncovered. Schedule a periodic refresh — pull fresh real inputs, retire dead cases — so the suite keeps reflecting reality. An eval set is a living asset, not a one-time artifact.
Once the loop is running, the whole feel of building changes. You can rewrite a prompt, swap a model, or refactor a tool and know within minutes whether you broke anything, because the eval tells you. That confidence is what lets a small team iterate fast without iterating recklessly. The teams that ship the most reliable agents aren't the ones with the smartest prompts — they're the ones with the tightest measurement loop.
Still reading? Stop comparing — try CallSphere live.
CallSphere ships complete AI voice agents per industry — 14 tools for healthcare, 10 agents for real estate, 4 specialists for salons. See how it actually handles a call before you book a demo.
An agent eval loop is a measurement harness that scores the agent's behavior over a curated set of real test cases and blocks any release that regresses a previously-passing case. Build the set from real traffic, score with a mix of deterministic checks and an LLM judge, gate on no-regressions, and run it on every change. That loop is what turns agent development from guesswork into engineering.
An eval loop is an automated harness that runs your agent over a curated set of real test cases, scores each output with deterministic checks and an LLM-as-judge, and blocks any release where the aggregate score drops or a previously-passing case fails. It turns subjective quality into a measurable, gateable signal.
Combine three graders: deterministic checks for objective properties (right tool, valid format, required disclaimer), programmatic assertions on the exact tool-call arguments, and an LLM-as-judge with an explicit rubric for subjective quality like helpfulness and accuracy. Encode as much as possible deterministically and reserve the judge for the genuinely fuzzy parts.
Coverage beats volume early. Around forty cases spanning your distinct workflows — happy paths, known edge cases, and the failures you've already hit — are more useful than hundreds of near-duplicates. Then grow the set by adding the trajectory of every production bug as a permanent regression test.
Yes, ideally on every pull request that touches prompts, tools, or the model version, plus a fast local command before pushing. The gate should output pass/fail, the aggregate score, and the specific cases that regressed with their trajectories, so a developer can immediately see what broke.
CallSphere runs this same eval discipline behind its voice and chat agents — scoring real conversations against rubrics and gating every change so quality only moves up. See measured, reliable agentic AI answering live calls at callsphere.ai.
Source & attribution: This is an independent, original explainer inspired by Anthropic's coverage on the Claude blog. Claude, Claude Code, Claude Cowork, Claude Opus, and the Model Context Protocol are products and trademarks of Anthropic. CallSphere is not affiliated with or endorsed by Anthropic.

Written by
Sagar Shankaran· Founder, CallSphere
LinkedInSagar Shankaran is the founder of CallSphere, where he builds production AI voice and chat agents deployed across healthcare, hospitality, real estate, and home services. He writes about agentic AI, LLM engineering, and shipping voice agents that handle real calls in production.
See how AI voice agents work for your industry. Live demo available -- no signup required.
Why the first four minutes of a 2:14 a.m. hospice call cost real money, and how a 2026 assistant that quotes only your own approved documents shortens them.
Carrier shortlists are built by software before dawn. What makes a 38-truck fleet invisible: stale MCS-150, no lane page, and a phone that stops at 6pm.
Build a 200-case test set from your own janitorial work orders, grade the agent, and widen its authority in stages. Includes the five pass/fail call types.
How a dealership funding clerk starts Tuesday with a sorted exception queue instead of a schedule, and what four fewer days in transit is actually worth.
The truck order and the retail price file cannot be undone. How independent grocers scope an acting AI assistant to everything else without losing control.
Case managers send one referral to eight agencies and families ask assistants to compare. What makes a home health or hospice agency invisible to both.
© 2026 CallSphere Inc. All rights reserved.
Made within San Francisco
Watch how CallSphere handles real customer calls, schedules appointments, and processes payments — live.