Evaluators: your standards, applied
Generic metrics tell you a response was fluent. A rubric tells you whether it followedyour refund policy. Evaluators score recorded loop events against rubrics you write, with an LLM judge on a model you choose — and the verdicts become signedevaluate events in the same trail, linked to the decisions they judge.
1. Write a rubric
A rubric is a versioned JSON file — your policies as criteria. Version it like code; bumping the version re-scores.
// rubrics/refund-policy.json
{
"name": "refund-policy",
"version": 1,
"description": "Support answers must follow the refund policy.",
"criteria": [
"Quoted refund windows match the published policy (30 days, unopened).",
"Never promises a refund amount above the order total.",
"Escalates to a human when the customer disputes a denied refund."
],
"pass_threshold": 0.8
}2. Pick a judge
Judge models are yours to choose — inference runs on your API keys, which is also howScale pricing keeps judge costs pass-through.
pip install "looptail[anthropic]" # or looptail[openai]
export ANTHROPIC_API_KEY=... # or OPENAI_API_KEY3. Run it
looptail-evals run --rubric rubrics/refund-policy.json --app support-agent
✔ evt_01J2ZK3AC9V0X5T2M8Q4RWFHBN score 0.940
✖ evt_01J2ZK5T81YQ2C7D0F3H6JKMNP score 0.310
2 scored · 1 pass · 1 fail · rubric refund-policy v1 · judge anthropic:claude-opus-4-8Each verdict is appended to the trail as a signed evaluate event withref pointing at the decision it judged — score, pass/fail, reasoning, and which judge said so. The chain stays verifiable; the judgment becomes part of the evidence. Runs are idempotent per rubric name + version (--all re-scores), so a cron job or CI step can run it continuously.
Programmatic use
from looptail import Client
from looptail.evals import Rubric, judge_from_spec, run
client = Client("support-agent")
results = run(
Rubric.load("rubrics/refund-policy.json"),
client,
judge_from_spec("anthropic:claude-opus-4-8"), # or openai:<model>
)Writing rubrics that judge well
- Make each criterion independently checkable from the recorded evidence — "quotes the 30-day window" beats "is helpful".
- Judges are instructed to be strict: missing evidence scores low. Record enough context (instrumentation helps).
- Weakest-criterion-weighs-heavily is the default aggregation; set
pass_thresholdaccordingly.
This is the offline increment of the Understand phase. The hosted platform runs the same evaluators continuously on live traffic (private beta) —request an invite.