Skip to the case study

Improving a customer support agent handling 3,480 cases a month

A UK driving school uses an AI agent to answer its support email, 3,480 cases a month. Most of those cases turn on a few decisions: whether a refund is due, whether a medical request came with evidence, and whether to change a booking, open a task for staff or hold the reply for a person. Before any changes, the agent sometimes softened a firm no on a refund, said it had done things it hadn’t, or failed to pass a case to a person.

Over six rounds, we used Permafrost™ to test changes to the agent’s instructions and to measure what each one did to those decisions. For the main comparison we kept the model fixed, Claude Sonnet 4.6, and ran the original and the new instructions on the same 300 synthetic cases. Cases graded send-ready nearly doubled, from 48 to 92. Cases with a serious error fell from 94 to 44.

Evaluation setup

two instruction sets · one model · 300 shared cases

Original → V6InstructionsPolicy, action rules and ordering
Held fixedSonnet 4.6The same model throughout
Paired comparisonEvaluationSame cases, answers and grader

Only the instructions changed. No model was retrained.

Figure 1. The main comparison changes only the agent’s instructions. The model, the 300 synthetic cases, the reference answers and the grading stay the same.

Same model, new instructions

The send-ready rate rose from 16.0% to 30.7%, a gain of 14.7 percentage points, or 92% in relative terms. The paired 95% interval runs from +9.2 to +20.5 points.

“Send-ready” is a grade. It means the grader found no serious or major errors. A correct decision to hold a case, or not to reply, counts too. It does not mean the email could have gone out without review.

Same-model evaluation

300 paired cases · Claude Sonnet 4.6 · same grader

Original instructionsPermafrost V6
Paired change95% family interval+14.7 pp+9.2 to +20.5

No serious or major errors; correct holds and no-reply decisions count too.

Figure 2. Original and V6 instructions, both on Claude Sonnet 4.6. Choose a measure to compare. The interval is for the paired change, resampled over 221 families of related cases. It is not an interval around either bar.

Cases with a serious error fell by 53%. The rubric score, which weights each requirement by severity, rose from 43.3 to 57.3 out of 100. The score gives partial credit; the send-ready rate only asks whether a case cleared the bar for serious and major errors. Neither one measures customer satisfaction or how the agent does with real customers.

Six rounds of changes

In each round we proposed changes, tested them and decided which to keep. Most were left out. One round kept nothing new, and the first version turned out to be a side branch that the final agent does not descend from.

Version history

six rounds · 2–13 October 2026

Kept lineSide branch or no change
V5

Ask for the evidence first.

Medical requests that came without evidence needed a clearer next step. The kept change tells the agent to ask for it first.

Decision and evidence Small gain

Keep that change alone. The other candidates did not hold up on the holdout set, or missed the threshold we set in advance.

On the matched GLM runs: +2.39 score points over V4, with a 95% interval of +0.47 to +4.41. The changes in the send-ready and error rates were inconclusive.

Figure 3. The kept line runs from the original instructions through V2, V4, V5 and V6. V1 was an alternative starting point, and V3 kept V2’s instructions unchanged. Choose a version to read the decision and its evidence. Spacing shows order, not elapsed time.

One case short

One V5 candidate had the agent check each draft against the rubric and then repair it. Its average score went up, but only 46 of 66 paired cases scored the same or better. Our rule, set before the test, was 70%, which meant 47. We left it out.

The 70% rule

check-and-repair candidate · 66 paired development cases

46 scored the same or better20 scored worse
46 / 66 = 69.7%70% needs 47 / 66

One more case scoring the same or better would have passed. The candidate was dropped.

Figure 4. The candidate raised the average but missed the threshold. Each mark is one paired development case, sorted by outcome.

From V5 we kept only the change about medical evidence. On the matched GLM runs its gain over V4 was small, but the paired interval supports it. V6 then added an ordered checklist for policy and actions. Its extra gain over V5 is inconclusive, though V6 is far ahead of the original agent.

Scores by version

rubric score / 100 · GLM-5.3 Flash · 300 cases

Figure 5. Scores on the matched GLM runs. V4 to V5: +2.39 points (95% interval +0.47 to +4.41). V5 to V6: +0.72 points (interval −1.13 to +2.54), which is inconclusive. V1 to V3 have no comparable scores on the 300-case test, so they are not plotted.

What got better, and what got worse

The net gain of 44 send-ready cases hides some losses. 55 cases became send-ready, and 11 that had been send-ready fell back. The grid groups every case by its original grade.

Paired outcomes

one square per case · grouped by original grade

Originally: send-ready48 cases
Originally: needs edits158 cases
Originally: serious error94 cases

55 cases became send-ready and 11 fell back. Net gain: 44.

Show the counts
Original → V6Send-readyNeeds editsSerious error
Send-ready3783
Needs edits291209
Serious error263632
Figure 6. Each square is one case, coloured by its V6 grade and grouped by its original grade. Hover or tap a square, or choose a count, to see the numbers. “Needs edits” means neither send-ready nor a serious error.

Serious errors moved both ways too. In 62 cases a serious error went away, 12 other cases gained one, and 32 still had one. So the 53% drop shows the agent got better. On its own, it is not a reason to ship it.

Results by category

The test covers 15 kinds of support request, with 20 cases each. Groups that small show what happened, but they can’t prove an effect in any one category.

Support categories

same-model comparison · 20 synthetic cases per category

OriginalPermafrost V6

Higher is better. A rust-coloured line marks a change for the worse. Hover or tap a row for its numbers.

Figure 7. The same-model comparison by category, 20 synthetic cases in each. Open circles are the original agent; filled ones are V6. These results are descriptive, with no significance tests and no correction for multiple comparisons.

Changing the model too

With the V6 instructions frozen, we ran them on three models. The result above isolates the change in instructions. Swapping the model as well makes a different comparison, so we report it separately.

On GLM-5.3 Flash, V6 produced 108 send-ready cases at about $0.0103 of recorded model usage per case. Against the original agent on Sonnet 4.6, that is 2.25 times as many send-ready cases at 88% lower model cost. Both the instructions and the model changed.

Model trade-offs

send-ready rate · recorded model usage · 300 synthetic cases

Recorded model usage per 1,000 evaluated cases · USD

V6 · Sonnet 4.692/300 ready$0.0992/case42.4 s median

Show the numbers
ConfigurationReady / 300Score / 100$/case
Original · Sonnet 4.64843.3$0.0862
V6 · Sonnet 4.69257.3$0.0992
V6 · Sonnet 5.59461.7$0.0476
V6 · GLM-5.3 Flash10863.5$0.0103

Same model as the original. A separate $3.02 of usage we could not account for is left out of the cost.

Figure 8. Recorded model usage against send-ready rate. Hover or tap a point for its numbers. Costs leave out grading, development, hosting and human review, and the original logs may miss some intermediate calls. Timings come from separate runs, so they are not a controlled speed test.

On the same model, V6 cost about 15% more in recorded usage than the original. Its Sonnet 4.6 run also has $3.02 of usage we could not account for. We list it separately; it is not confirmed billing. Between GLM and Sonnet 5.5 we found no clear difference in mean score or send-ready rate at 95% confidence.

See what Permafrost fixes in your agent.

A good fit

  • Your agent runs in production, for real users.
  • Its mistakes are expensive.
  • You can run it on a task and score the result.
Research previewApplications open

The founders read every application.