Skip to main content
Original data

Testing an LLM feature whose output changes: what 65 eval cases and three runs showed

Six findings from running 65 eval cases through a real LLM interview-scoring prompt three times, with a judge model and consistency sampling, in a public repository anyone can rerun. The model was far more deterministic than the eval budgeted for, the authored expectations were harsher than the prompt, and the judge needed the same context as the system under test.

Written by , Senior QA Automation Engineer, 50+ QA candidate interviews conductedLast updated October 2026

What was tested, and how?

The system under test is the prompt that scores an AssertHired mock interview: four dimension scores, four feedback paragraphs, a summary, strengths, improvements and per-question notes. The eval suite holds 65 cases, 60 synthetic golden cases plus 5 safety probes, each with an expected score range, terms the feedback must and must not mention, and hallucination and safety traps.

Each full run makes about 245 API calls: 65 scoring calls, about 130 judge calls (a second model grading the feedback for faithfulness and safety), and 50 consistency checks (10 cases scored five times each). Three full runs were made on 2026-07-21; run 1 against the dataset as first authored, runs 2 and 3 after acting on what each run exposed. The whole exercise cost about $6.50.

Eval metrics across three full runs of 65 eval cases against the interview-scoring prompt
Score in rangeRun 150.8% (fail)Run 296.9%Run 398.5%
Score consistency (mean std dev, 10 cases x 5 runs)Run 10.09Run 20.31Run 30.24
Feedback faithfulnessRun 189.2%Run 290.8%Run 389.2%
Must-mention coverageRun 179.0%Run 274.2% (fail)Run 393.9%
Must-not-mention violationsRun 10Run 20Run 30
SafetyRun 1100%Run 2100%Run 398.5% (fail, 1 case)
Latency p50 / p95Run 120.0s / 22.1sRun 219.8s / 22.5sRun 319.8s / 22.6s

Run 3 is the shipped baseline. Run 1 doubled as the proof that the pipeline fails the build when the dataset and the prompt disagree.

Finding 1: why was the model more deterministic than the eval budgeted for?

The consistency budget allowed a mean standard deviation of up to 8 points across five repeat scorings of the same answer. Measured: 0.09 to 0.31 across the three runs. Most sampled cases returned the identical overall score five times in a row at temperature 0.2.

The consequence matters more than the number. When a score lands outside its expected range, it lands there every time, so a range failure is calibration signal, not noise. The consistency sampler became opt-in to save its 50 calls per run.

Finding 2: why were the authored expectations harsher than the prompt?

Run 1 failed score-in-range at 50.8 percent, almost always in one direction: the model scored 15 to 25 points higher than the authored range, concentrated in the mid, weak, off-topic and refusal tiers. The prompt under test says to err on the side of generosity and reserves the bottom of the scale for non-responsive answers; the ranges had been written from reviewer intuition instead.

Thirty-two cases were recalibrated to the prompt's own bands, with the originals kept in git history. The dataset now freezes what the prompt does, so future movement means the prompt or the model changed. A product observation fell out of it: the communication dimension has a floor around 55 even for refusals, which compresses the bottom of any ranking built on the overall mean.

Finding 3: why did the faithfulness judge need the question, not only the answer?

Seven faithfulness failures in run 1 were mostly judge false positives. Feedback that suggested boundary tests at exactly 10 MB was flagged as ungrounded because the judge had only seen the candidate's answer; the 10 MB limit was in the interview question. The judge now receives the question as shared context, with a rule that only claims with no supporting span count as violations.

With that fixed, a real hallucination pattern surfaced: the scoring model invents first-person war stories in its examples feedback, describing a company, a service count and a runtime improvement that never happened. Faithfulness held at 89 to 91 percent, on the 90 percent target, and this metric is the one that most needs a hand-labelled calibration set.

Finding 4: why is a must-mention matcher brittle, and what fixed it?

Must-mention coverage moved from 79.0 percent to 74.2 percent between runs 1 and 2 with no change to the terms. Same model, same prompt, same temperature: the feedback phrased the same concepts differently. A 429 became a rate limit response, idempotent became idempotency, and one term never appeared in any run.

The fix was empirical rather than clever: extract the feedback corpora from both real runs, probe candidate terms against both, and keep only terms present in both, dropping the chronically absent ones. Coverage rose to 93.9 percent in run 3. Mention terms are hypotheses about model phrasing, and two runs of real output beat authoring intuition.

Finding 5: did the zero-tolerance gates catch anything?

All 130-plus hallucination traps, covering fabricated tool attribution, false praise and technique attribution, came back clean in every run, and five adversarial probes with demographic signals passed every run. Then run 3 failed safety on one case the earlier runs had passed: feedback that drifted from critiquing the answer to characterising the candidate's ability.

The judge's call was borderline, which is what a 100 percent threshold is for: it forces a person to look. The read after looking was that the prompt occasionally slips from the answer to the person, and the case was left open as the baseline's one known issue rather than tuned away.

Finding 6: why were the latency targets wrong?

The spec set p50 at 3 seconds and p95 at 7 seconds, assuming a short scoring response. The real prompt produces roughly 700 to 750 output tokens, which takes about 20 seconds without streaming; measured p50 was 19.8 to 20.0 seconds in every run. The target and the prompt describe different contracts. Latency stayed warn-only, and the number became the argument for streaming the feedback rather than blocking on the full payload.

What would change if it were started again?

  • Author expected ranges after a small calibration run, not before. The dataset freezes observed and accepted behaviour; it does not legislate ideal behaviour.
  • Give every judge the same context the system under test had. Grading against a subset of the inputs manufactures false positives.
  • Treat mention terms as hypotheses to validate against real corpora, and budget a tuning pass.
  • Put the cost guardrails in before the first run. The judge now defaults to a cheaper model, the sampler is opt-in, and CI runs the paid eval only on a manual dispatch with a typed confirmation.

What does this research answer?

How do you test an LLM feature whose output changes between runs?

Test ranges and properties instead of exact outputs. This eval suite holds 60 golden cases, each with an expected score range, terms the feedback must and must not mention, and hallucination and safety traps. A second model judges the feedback for faithfulness and safety, and 10 cases were scored five times each to measure how much the output actually varied between runs.

How many golden cases do you need to evaluate an AI prompt?

There is no universal number; what the cases cover matters more than the count. This suite used 60 golden cases across several answer-quality tiers, plus 5 safety probes, and its first run still failed score-in-range at 50.8 percent because the expected ranges came from reviewer intuition, not a calibration run. Author ranges after a small calibration run, and treat the dataset as a freeze of accepted behaviour.

What goes wrong when you use an LLM as a judge to grade another model?

The judge makes its own mistakes when it sees less than the system under test did. In run 1, seven faithfulness failures were mostly judge false positives: feedback was flagged as ungrounded because a detail came from the interview question, which the judge had not been given. Once it received the question, a real problem surfaced instead: invented first-person examples.

How much does an LLM output vary between runs at low temperature?

Far less than this eval budgeted for. The consistency check allowed a mean standard deviation of up to 8 points across five repeat scorings of the same answer; measured, it was 0.09 to 0.31 across three runs at temperature 0.2. The practical consequence: a score outside its expected range lands there every time, so it is calibration signal, not noise.

EXEC.NOW

See where you would lose points

One question, scored on the same four dimensions this page reports.

Join 600+ QA engineers already practicing with AssertHired.

Question 1 · Automation · Mid-levellive scoring

A test passes locally but fails in CI about one run in five. Walk me through what you check first, and why.

This single answer is scored on four dimensions: Technical accuracy · Coverage · Clarity · Best practices.

Rather skip ahead? Create a free account

FREE  ·  7-DAY TRIAL