The playbook

A cost audit to a cheaper route, without changing the answer

Find out where the money actually goes before switching models, because usually it is repeated context rather than the model's rate.

4 stages Measured on live traffic, checked by hand, then priced Claude 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.

  1. You start with
    A week of production responses with their usage blocks kept
    Why this stage
    Almost always the bill is one of three things: the same context re-sent and re-charged every turn, work that could wait running at the live rate, or an agent looping. This stage measures the first and the next moves the second; the third is a spend ceiling and an iteration cap, which the two fix pages linked from this chain carry and no stage here reaches. The published rates do not say which of the three you are paying for, so the reading comes before the route change.
    Do this
    Read cache_creation_input_tokens and cache_read_input_tokens on live traffic and find out how much of your input is unchanged between requests.
    You end with
    The share of your input that is repeated
    The move Cache the part that never changes
  2. You start with
    The same week of traffic, with the place in the code that issued each request attached
    Why this stage
    Nothing in the usage block says who was on the other end, so the split comes from the call site, which is why this stage needs the code attached and the reading before it did not. The batch route is asynchronous by definition and anything user-facing cannot use it, so a request with a person waiting on it does not belong in the second group.
    Do this
    Separate the requests with a human waiting from the ones without, and move the second group asynchronous.
    You end with
    Two routes with different price points
  3. 03

    Compare

    Your work
    You start with
    A held-out set of real requests from last week, and the prompt in the shape it had before the stable part moved to the front
    Why this stage
    The cache is a prefix, so making it hit moves the stable part of the prompt to the front, and the technique record's own note is that putting stable content first can change behavior and that the held-out set is re-run after. The batch route is not what is in question here; the ledger's expected line for it is the same output at half the token price. So the comparison is the prompt before the move against the prompt after it, run on a set frozen back at the measuring stage: picked now, it would be picked with the new answers already in view.
    Do this
    Run the set through the prompt as it was and the prompt as it is now, and read the two answers against each other yourself. A text diff tells you the wording moved; it does not tell you the answer got worse.
    You end with
    A pass, or the list of requests where the answer got worse
    The move Hold back a set the agent never sees
  4. You start with
    Last month's request and token counts, and the rates published today
    Why this stage
    A repeated share, a grouping and a set of answers that held are still not money. The arithmetic is the easy part; what decides the number is the published rate, and rates change - an old price sitting inside a cost model is a cost bug of its own.
    Do this
    Model the two routes against last month's real volume rather than an estimate.
    You end with
    A before-and-after number you can defend
    The move Give it the data, not a picture of the data

Where this leads