A Single AI Score Cannot Run a Release Process
An AI release can improve a headline score while making the product worse.
Perhaps the new model writes friendlier answers but retrieves older policies more often. Perhaps a prompt revision makes tool calls more reliable for English requests and less reliable for multilingual ones. Perhaps a lower-cost model matches the previous output score but takes enough extra turns that customers abandon the workflow.
One aggregate metric cannot show those distinctions. It can only report that some number moved.
A production evaluation pipeline turns that number into evidence engineers can act on. It connects a product change to the components that produced it, the cases it affected, the criteria used to judge it, and the outcome users experienced. It does not promise perfect measurement. It makes uncertainty, disagreement, and regressions visible before a vague quality score becomes a release decision.
Evaluate the System, Not Just the Model
An AI feature is a chain of decisions. A language model is only one of them.
For a retrieval-backed assistant, quality depends on document ingestion, revision handling, chunking, embeddings, search filters, authorization, prompt construction, model generation, tool calls, output rendering, and the feedback path. A bad answer can originate anywhere in that chain.
If the only test asks whether the final response looks useful, an engineer has little guidance after a failure. Was the right document missing from the index? Did retrieval select an unauthorized source? Did the prompt omit a policy exception? Did a model version change its tool-call format? Did the interface hide the citation or make a provisional answer look final?
Create evaluation boundaries at the components where the system makes a meaningful transformation:
| Component | A useful question | Example evidence |
|---|---|---|
| Document ingestion | Did the current, complete source enter the index? | Revision ID, parsing checks, deletion test |
| Retrieval | Did an allowed source enter the candidate set? | Recall at a chosen rank, permission test |
| Prompt and context | Did the model receive the instructions and evidence it needed? | Versioned context snapshot, size budget |
| Generation | Did the response follow the task contract? | Schema, rubric, reference comparison |
| Tool execution | Did the proposed action respect authority and state? | Auth checks, idempotency tests, audit record |
| User workflow | Did the person finish the job safely? | Completion, correction, escalation, time |
This does not mean every component needs an expensive model-based score. It means every component needs an observable contract. A retrieval miss should be diagnosable as a retrieval miss instead of appearing later as a mysterious hallucination.
Keep Turn Checks and Task Checks Together
Multi-turn systems make this especially important. A support assistant might ask an accurate clarifying question on every turn and still fail because it never reaches a resolution. A coding assistant can produce a useful patch in one response but fail the task when it does not identify the required runtime or test command.
Turn-level checks evaluate an individual response: was it grounded, valid, safe, concise enough, and consistent with the response schema? Task-level checks evaluate the completed workflow: did the user reach the intended outcome, how many turns were required, and did the system hand off appropriately when it could not complete the job?
Use both. Turn checks catch a privacy leak that happens during an otherwise successful workflow. Task checks catch a pleasant conversation that consumes twenty messages before the user gives up.
The frontend owns part of the task contract. If a user cannot cancel a long request, correct an extracted fact, inspect a source, or recognize that a recommendation needs review, the product has reduced the practical value of an answer even when the model's text is good. Evaluation should exercise those states as real interaction paths, not only as static prompts.
Turn a Rubric Into a Versioned Product Artifact
Every evaluator contains a definition of success. The question is whether that definition is visible.
An instruction such as "rate the response from one to five" hides too much. Is a four acceptable for release? Does one missing policy exception outweigh three well-written paragraphs? Does a refusal pass when a request lacks evidence? Different reviewers will supply different answers unless the product provides a rubric.
A useful rubric separates the properties that materially affect the product. For an internal knowledge assistant, that could include:
- authorization: only evidence the requester may access appears in the response;
- groundedness: material claims are supported by the supplied source set;
- completeness: conditions that change the requested decision are not omitted;
- actionability: the response gives a safe next step or an explicit escalation;
- presentation: the response follows the required format and avoids unnecessary detail.
Each criterion needs examples of pass, fail, and uncertain cases. Let reviewers choose an escalation state instead of forcing a false score. Then version the rubric like any other production input. A changed definition of "complete" can make an evaluation graph move even when no model behavior changed.
type EvaluationResult = {
caseId: string
rubricVersion: string
modelVersion: string
criteria: {
authorization: 'pass' | 'fail' | 'uncertain'
groundedness: 'pass' | 'fail' | 'uncertain'
completeness: 'pass' | 'fail' | 'uncertain'
actionability: 'pass' | 'fail' | 'uncertain'
}
releaseDecision: 'accept' | 'reject' | 'human-review'
}
Schema validation confirms that the result arrived in the expected shape. It does not prove that a judge assigned the right label. Preserve the case, the rubric, the source evidence, the model configuration, and the reviewer or evaluator identity under appropriate access controls so disagreement can be investigated later.
Match the Evaluation Method to the Failure
No single method sees every kind of defect. An effective pipeline layers methods according to their cost and what they can prove.
Deterministic checks are the strongest option where the condition is objective. Use them for schemas, exact identifiers, permissions, tool arguments, compilation, test results, numerical totals, and policy rules that can be encoded. They are cheap enough to run across every eligible case.
Reference and source checks help when a response should preserve known facts. A comparison can flag an answer that dropped a required date, eligibility condition, or citation. It needs careful design: a reference answer can be stale or unnecessarily narrow, and a semantically similar response can still reverse the decision with one omitted clause.
Evaluator models can inspect open-ended explanation quality, nuance, and source use where a deterministic rule is not practical. They should receive a concrete rubric and relevant evidence, return structured criterion-level results, and be calibrated against human reviewers. They are a useful signal, not an authority that can certify its own assumptions.
Human review remains necessary where expertise, high consequence, or ambiguous policy makes automated judgment unreliable. Its role is not merely to produce labels. Reviewer disagreements reveal whether the product requirement, evaluation data, or explanation of the task is underspecified.
Behavioral signals show what happens in a real workflow: completion, edits, repeated attempts, escalation, abandonment, and support cost. They are indispensable after release but do not establish factual correctness on their own. A user may accept a fluent wrong answer because checking it is difficult.
Log probabilities can sometimes offer another operational signal, especially for constrained classification or token alternatives. They are not a universal confidence score. A model can be very confident in an answer that is unsupported by the available evidence.
Build Data Around Decisions and Slices
An evaluation set should resemble the cases the product is responsible for, not merely the examples that make the feature look impressive. Include routine inputs, difficult examples, incomplete evidence, stale sources, supported languages, long context, malformed documents, access-control boundaries, and requests that should be declined or escalated.
Then define the slices that can change the decision. For example:
- product area or document type,
- language and locale,
- user role, tenant, or permission level,
- input length and context size,
- request complexity or required tool count,
- source freshness and conflicting evidence,
- task consequence and escalation requirement.
Slicing prevents a global average from laundering a local failure. A model can improve on high-volume easy requests while regressing on the smaller but high-consequence subset where users rely on it most. In more surprising cases, aggregation can even reverse the apparent comparison between two systems because the systems were evaluated on groups of different sizes. This is the practical danger behind Simpson's paradox: an average can answer a different question from the one the release needs answered.
Do not create a slice for every available column. That creates dashboards with too little data to interpret. Start with hypotheses tied to product risk, then add slices when incidents, reviewer disagreement, or user feedback show that the aggregate result is hiding a meaningful pattern.
Small Improvements Need More Evidence Than They Seem To
Teams often declare a winner after a handful of test prompts. That may be enough to notice a large difference. It is not enough to distinguish a small improvement from ordinary variation.
The closer two candidates are, the more cases are required to tell them apart. Reducing the difference a team wants to detect by roughly a factor of three can require about ten times as many examples. The exact count depends on the metric, variance, and desired confidence, but the direction is consistent: a one-point improvement claim is much more expensive than a dramatic regression check.
Plan evaluation capacity accordingly. A small, well-reviewed regression suite can run on every pull request. A larger comparison may run asynchronously before a model upgrade. Human review can be concentrated on cases where automated methods disagree or where the risk is high. A production experiment can validate a promising candidate with real workflow outcomes after offline checks have removed known unacceptable behavior.
This is a reason to make release thresholds concrete. "No significant regression in authorization or high-consequence completeness, and a measured improvement in agent edit time" is a decision rule. "The new output feels slightly better" is not.
Track Change So a Result Remains Interpretable
AI systems change more often than conventional deterministic components. Prompts, model versions, temperature, retrieval indexes, document corpora, evaluator models, and UI behavior can all move at once. When every variable changes, a quality graph cannot explain why.
Record the configuration that produced an evaluation result:
- candidate and evaluator model versions;
- prompts, tool descriptions, and context-template revisions;
- retrieval and index configuration;
- evaluation-set, source-document, and rubric versions;
- sampling strategy, date range, and selected slices;
- timeout, retry, latency, and cost settings.
Use this record to run a release sequence that matches the feature's risk:
- Test component contracts and a stable regression set before merging.
- Compare viable candidates against the same versioned data and rubric.
- Run a shadow or limited rollout when real behavior is needed but the cost of a mistake is material.
- Monitor quality slices, tool failures, authorization violations, latency, cost, corrections, and escalation after release.
- Feed representative failures back into the evaluation set, then test the actual fix rather than only the final response.
Evaluation records can contain prompts, documents, account details, and outputs that are more sensitive than ordinary telemetry. Redact secrets, minimize retained content, restrict access, and define deletion behavior. An evaluation pipeline that improves quality by creating an unbounded archive of customer data has introduced a different reliability problem.
Make a Score Explainable Enough To Change the System
An AI evaluation pipeline earns its cost when it tells the team what to do next. It can show that a retrieval filter broke a permission boundary, that a prompt revision hurts a multilingual slice, that an evaluator is rewarding verbosity, or that an offline quality gain did not survive contact with a real user workflow.
That is more valuable than a single number because it keeps responsibility in the system where it belongs. The model, the data, the interface, the policy, and the release process all shape the product's behavior.
Measure them together, keep the criteria stable enough to learn from them, and make every score traceable to a case that a person can examine. Then an AI release becomes an engineering decision rather than a bet on a dashboard.
