"The summary shall be accurate" is untestable, and every AI feature spec that contains a sentence like it will fail at UAT. This playbook rewrites AI acceptance criteria the only way they can be tested: as pass rates against a referenced golden set, zero-tolerance categories, latency and cost budgets, and explicit behavior-on-uncertainty clauses.
Workflow area: AI Requirements & Agent Redesign · Tier: Advanced · Hands-on time: ~45 minutes
Classic acceptance criteria assume determinism — given input X, the system shall produce Y, and QA can verify it forever. An LLM feature breaks that assumption: the same input can produce different phrasings, quality is a distribution, and "correct" often has grades. The BA's move is not to abandon testability but to relocate it: the criterion no longer describes one output, it describes the measured performance of the feature across a versioned set of cases — exactly the way classic specs reference test cases, but with statistics.
Inventory the untestable sentences. Sweep the draft spec for adjective-criteria: accurate, relevant, high-quality, appropriate, helpful, safe. Each one is a placeholder for a measurement that hasn't been designed. List them — this is your rewrite backlog, and its length is a useful shock statistic for the review meeting.
For each, design the measurement before the wording. Decide four things with the SME and product owner: the golden set that represents the task (which cases, how many, who validated — pb-48), the scoring method (exact match, rubric, or LLM-judge with human audit), the threshold (what pass rate ships), and the tolerance floor (which failures are never acceptable at any rate). Then have AI draft the clause:
Rewrite this acceptance criterion as an eval-based requirement.
Original: [e.g. "The claim summary shall be accurate."]
Context: golden set GS-CLM-v1 (120 cases, SME-validated),
scoring rubric R-SUM-01, thresholds agreed: 92% pass,
zero fabricated policy/amount/date values.
Produce:
- AC-n: threshold clause referencing set + rubric + version
- AC-n+1: zero-tolerance clause with the fatal categories
- AC-n+2: behavior-on-uncertainty clause
- AC-n+3: latency budget (p95) and cost-per-case budget
- Verification method line for each (who runs what, when)
Do not use the words "accurate", "appropriate" or "high-quality".
Check the output against the pattern of a testable AI criterion. It should read like this:
AC-12 On golden set GS-CLM-v1 scored with rubric R-SUM-01,
the summary feature achieves ≥ 92% pass rate.
Verify: eval run in CI, report attached to release.
AC-13 Zero instances of fabricated policy numbers, claim
amounts, or dates across the full set. One instance
fails the release. Verify: rubric category F1 count = 0.
AC-14 Where source documents lack a required field, the
feature outputs "Not stated in documents" and flags
for review. It does not infer a value.
Verify: 15 missing-field cases in GS-CLM-v1, 100% pass.
AC-15 p95 latency ≤ 8s at 50 concurrent requests; cost
≤ $0.05 per case at contracted pricing.
Verify: load test report + billing export.
Every clause has a number, a referenced artifact with a version, and a verification method. That triplet is the test of testability.
Negotiate thresholds as business decisions, not engineering guesses. The right pass rate is a function of the failure's cost and the fallback's quality: 92% with a clean escalation path may beat 97% with silent failures. Bring the sponsor the trade-off explicitly — "each point of threshold costs roughly X in model spend and Y in latency" — and record the rationale in the spec. Thresholds without recorded rationale get relitigated forever.
Wire the criteria into change control. Add one meta-requirement: any model version change, prompt change, or golden-set update triggers a full eval rerun, and results below threshold block release. This single clause converts your acceptance criteria from a launch gate into a permanent regression gate — which is where their real value lives (pb-50 governs the process around it).
Golden sets and rubrics embedded in requirements often contain real customer cases — apply the same DPDP/GDPR handling to the spec pack as to the source data, anonymize cases before they enter shared requirements tools, and check that sharing the eval set with a vendor for acceptance testing is covered by contract and consent basis.
An AI acceptance criterion is testable when it carries a versioned dataset, a scoring method, a threshold, and a verification owner — "shall be accurate" is a wish; "≥92% on GS-CLM-v1 under R-SUM-01, zero fabricated values, rerun on every model change" is a requirement.