The response is not the product
A practical evaluation loop for building AI workflows people can understand, trust, and use—without mistaking a polished model output for a reliable system.
Written by
Michael Onofre
Notes on practical AI systems, evaluation, and human review.
An AI workflow can look impressive in a demo and still fail the moment it meets real work. A model may produce fluent output, but fluency does not tell us whether the right inputs were available, whether uncertainty was handled, or whether a person could correct the result before it caused harm.
The useful unit of design is not the response. It is the complete path from an input, through a model and its tools, to a decision someone can inspect and act on. That path becomes much easier to improve when it is treated as a small system with observable behavior—not as a clever prompt that either feels right or does not.
1. Frame the decision before the prompt
A prompt is an implementation detail. Start with the decision the workflow is meant to support and the consequence of getting it wrong. A summarization workflow for personal notes has a different risk profile from one that prepares evidence for a compliance review, even if both begin with the instruction “summarize this.”
A useful workflow brief should make the user, source material, expected action, and review boundary explicit. This moves the conversation away from vague goals such as “make the output better” and toward behavior that can actually be tested.
- User and decision
- Who acts on the output, and what decision or next step will it inform?
- Evidence boundary
- Which sources may the system use, and what must it never infer without support?
- Failure cost
- What happens when the answer is incomplete, confidently wrong, late, or unavailable?
- Review boundary
- Which conditions require a person to inspect, correct, approve, or reject the result?
2. Turn “good” into observable criteria
Teams often evaluate AI output by reading a few examples and asking whether they look good. That is useful for exploration, but it is too unstable for comparison. Different reviewers notice different things, and polished language can hide missing evidence or a broken constraint.
A short rubric creates a shared definition of quality. The criteria should map back to the workflow brief, and each criterion should be specific enough that two reviewers can explain why they scored an output differently.
- Grounding
- Are factual claims supported by the permitted source material?
- Completeness
- Does the output cover every required field, question, or decision factor?
- Constraint adherence
- Did the system respect format, policy, tone, and tool-use boundaries?
- Calibrated uncertainty
- Does it distinguish what is known, inferred, missing, and disputed?
- Usability
- Can the intended person understand the result and take the next step?
3. Build a small evaluation set that resembles the work
An evaluation set does not need to begin as a giant benchmark. For early iteration, a few dozen carefully selected examples can reveal more than hundreds of convenient ones. The important question is whether the set reflects the range of situations the workflow will face.
Keep a stable core set for version-to-version comparison, then add cases when production exposes a new failure mode. Avoid tuning against every example in the set; keep some cases aside so improvements are less likely to be accidental memorization of the test.
- Ordinary cases
- Frequent, well-formed inputs that represent the center of the workflow.
- Edge cases
- Sparse context, conflicting sources, unusual formats, or ambiguous instructions.
- Failure-seeking cases
- Inputs designed to tempt unsupported claims, ignored constraints, or unsafe tool use.
- Change cases
- Examples tied to recent prompt, model, retrieval, policy, or tool changes.
4. Design human review as part of the product
“A human will check it” is not a control unless the workflow defines when review happens and gives the reviewer enough evidence to do it well. A person staring at an answer with no source context, no uncertainty markers, and no clear authority is being used as decoration, not as a safeguard.
Review should be selective and legible. Route the cases where judgment matters, show why a case was routed, and make correction easier than blindly accepting the first output. If everything requires review, automation has created a second inbox. If nothing does, the system has no practical way to express doubt.
- Triggers
- Define which risks, missing inputs, confidence signals, or business rules cause escalation.
- Evidence
- Place sources, tool results, assumptions, and uncertainty beside the proposed output.
- Authority
- Make it clear whether the reviewer edits, approves, rejects, or chooses among options.
- Feedback capture
- Record the reason for meaningful corrections so recurring failures can become tests.
5. Test the whole system, not only the model
Many failures blamed on the model happen elsewhere. A document was parsed incorrectly. Retrieval returned stale context. A tool timed out and the workflow continued as if it had succeeded. A structured response passed through a formatter that dropped a field. Evaluating only the final generation makes these defects hard to see and harder to reproduce.
Instrument each stage well enough to answer what entered it, what came out, which version ran, and how an error was handled. Then test the unhappy paths deliberately. A dependable workflow should fail visibly and recoverably when a dependency is missing; it should not quietly manufacture continuity.
- Validate inputs before they reach the model.
- Inspect retrieved context for relevance, freshness, and permissions.
- Record model, prompt, tool, and policy versions with each run.
- Check structured outputs before downstream systems consume them.
- Exercise timeouts, partial tool results, retries, and explicit abstention.
6. Release with a learning loop
Pre-release evaluation tells you whether a workflow is ready to meet real inputs. It does not tell you that the job is finished. Usage changes, source data shifts, models are updated, and people discover shortcuts no test set anticipated.
Monitor a small group of operational signals: successful completion, escalation, reviewer correction, latency, cost, and repeated error categories. Sample successful outputs as well as failures; a workflow can appear healthy simply because users stop reporting the problems they have learned to work around.
When a meaningful failure appears, preserve it as a regression case, fix the smallest responsible layer, and rerun the stable evaluation set. That closes the loop between production evidence and design instead of relying on a growing prompt full of one-off warnings.