The playbook
A support inbox to answers you have actually graded
Before any reply is sent to a customer, the same pipeline runs over old tickets where the right answer is already known.
6 stages Two days to build the grader, then continuous Claude API · OpenAI API Complete
Every stage names what goes in, what to do, why it sits here and what comes out, and the chain says where it breaks.
benchr has not run these capabilities itself. Each stage points at a record describing what a provider documents, read on the date shown.
- 01
Split
Your work- You start with
- The archive of resolved tickets, each with the reply that closed it
- Why this stage
- The record and the prompt are both designed from these tickets, so a half read during that work can no longer judge it.
- Do this
- Cut the resolved tickets into two halves and set one aside, to be run but never tuned against.
- You end with
- A tuning half and a held-back half
- You start with
- One resolved ticket from the tuning half and the policy page that answers it
- Why this stage
- A field that is not in the schema is not in the answers, and the answers are all the grader gets.
- Do this
- Define the answer record: the reply, the cited internal source, and a confidence field the model must fill.
- You end with
- A schema every answer must satisfy
What goes wrong here
- You start with
- Both halves of the split, the policy documents, and the schema
- Why this stage
- Nobody is waiting on a ticket that has already closed - the condition the asynchronous path asks for, and one a live inbox never meets.
- Do this
- Run the pipeline over a few hundred resolved tickets asynchronously.
- You end with
- Candidate answers for cases with known outcomes
- You start with
- The candidate answers and the resolutions that closed those tickets
- Why this stage
- A silent model upgrade invalidates the old number, so the grading has to be a program that runs again, not a session of reading answers by hand.
- Do this
- Score the candidates against the known resolutions and compute the failure distribution rather than an average.
- You end with
- A grading report by ticket type
What goes wrong here
- You start with
- The prompt you have stopped editing, and the grading report from the last run
- Why this stage
- The technique record warns that putting stable content first can change behavior. Do it before the grading report exists and nothing measures what the reorder did.
- Do this
- Move the policy documents and examples into the cached prefix once the prompt stops changing.
- You end with
- The same pipeline at a fraction of the input cost
What goes wrong here
- You start with
- The cached prompt, the held-back half, and the stored grading report
- Why this stage
- The last graded number was measured before the prefix moved. The same record that carries the warning also says to re-run the held-back set after.
- Do this
- Send the held-back half through the cached prompt and score it with the same program.
- You end with
- Two reports on the same tickets, before and after the reorder