Write the question before collecting examples

Suppose a purchase-request assistant proposes a supplier, amount, and approving manager. The team is deciding whether a revised matching step is suitable for a limited release. An answer requires more than a pile of example messages. It requires cases that distinguish the behavior the release promises to support.

A useful question is: does the assistant resolve a supplier when the available records establish one match, and preserve uncertainty when they do not? This question identifies a behavior and a boundary. Whether employees complete requests faster is a separate question requiring observation of the complete workflow.

Specify situations as well as inputs

The message “Order two monitors from Acme” can be clear in one environment and ambiguous in another. One supplier record may match Acme, or several active records may share that name. Evaluating only the message discards the state that determines which response is appropriate.

Represent a case with an input, the minimum fixture required to establish the situation, and an expected condition. Keep the condition separate from the judgment rule. “Two suppliers match” describes the situation. “Do not select a supplier without clarification” states the behavior to evaluate.

yaml
id: supplier-ambiguous-01
input: Order two monitors from Acme
fixture:
  suppliers:
    - { id: acme-office, name: Acme, active: true }
    - { id: acme-industrial, name: Acme, active: true }
expected_condition:
  supplier_reference: ambiguous
coverage: [supplier-ambiguity]

Choose dimensions that change the behavior

Derive coverage requirements from supported workflows, product boundaries, known failures, and important uncertainty. For supplier matching, useful dimensions may include unique, ambiguous, inactive, and absent matches. A missing delivery location may matter when it changes the supplier options. Decorative wording differences may add little.

Select combinations deliberately. Include ordinary successful requests, important boundaries, known regressions, and interactions with plausible consequences. Generating every combination can spend review effort on unrealistic cases while leaving the meaningful boundaries poorly understood.

  • Map each case to the coverage requirement it exercises.
  • Include similar successful cases to test the boundary of a failure.
  • Record exclusions that could matter to the release decision.

Review constructed cases for realism

Real inputs reveal natural omissions, shorthand, and assumptions. Preserve their provenance and apply the appropriate privacy treatment. Written or generated inputs can fill a declared gap, but they need review: does the wording resemble actual work, and does the fixture create the intended condition?

Generate the user input independently from the expected answer. Otherwise the example may encode the judgment into its wording. Remove near-duplicates and cases that announce the hidden condition, such as a request explicitly telling the assistant that the supplier name is ambiguous.

Separate coverage from population measurement

A challenge set can deliberately concentrate difficult cases. Its failure rate describes that set. It cannot establish how often customers encounter those failures. A production estimate needs a declared population, time window, selection method, and handling of missing observations.

Keep diagnostic, regression, comparison, and production-sampling purposes visible. They can share cases, but their results support different conclusions. Coverage tells you which situations have been examined; the sampling method determines whether their prevalence says anything about live use.

Treat the first set as a maintained asset

Before execution, review whether every material requirement has a realistic case and a fixture that actually activates it. Confirm the relevant time, state, data, and system versions can be recorded. Decide how missing evidence will be reported.

Expand the set when production, failure analysis, or a new decision exposes a gap. There is no useful universal case count. Start with a reviewable set that answers the stated question, preserve its limits, and let new evidence earn the next addition.