By Sagar Shankaran, Founder of CallSphere
Prompt caching, batching, and model routing to keep Claude Cowork finance plugins fast and cheap. The run-cost math behind an affordable close.
Key takeaways
A finance team's first Claude Cowork plugin usually works beautifully and then surprises everyone with the bill. A single month-end close that fans out across thirty entities, re-reads the same chart of accounts on every turn, and runs the top model for trivial formatting can quietly cost more than the analyst hour it was meant to save. The good news is that agent cost in 2026 is highly controllable. The levers — prompt caching, batching, model routing, and run-length discipline — are well understood, and pulling them correctly can cut spend by a large multiple without touching answer quality.
This post is about the economics of running Claude finance plugins at scale: where the tokens actually go, which optimizations matter most, and how to keep a recurring close fast and cheap. The framing is opinionated because finance workloads are unusually repetitive — the same ledgers, the same reconciliation logic, every period — which makes them the ideal candidate for caching and batching if you architect for it.
Before optimizing, measure. In a typical reconciliation plugin the spend breaks into three buckets: the standing context (system prompt, skill instructions, the chart of accounts and entity list you attach to every turn), the dynamic context (tool results streamed back from the ERP and warehouse), and the output (the agent's reasoning and final report). For repetitive finance work, the standing context dominates, because the model re-reads the same large reference material on every single turn of a long multi-step run.
That observation drives the whole strategy. If the same ten thousand tokens of chart-of-accounts data are sent on turn one and turn forty, you are paying full input price forty times for identical bytes. Prompt caching exists precisely to fix this. Once you see the bucket breakdown, the optimization order is obvious: cache the standing context first, then trim the dynamic context, then route models, then consider batching.
flowchart TD
A["New plugin run"] --> B{"Stable context cached?"}
B -->|No| C["Send full chart of accounts"] --> D["Write cache breakpoint"]
B -->|Yes| E["Reuse cached prefix"]
D --> F{"Step difficulty?"}
E --> F
F -->|Heavy reasoning| G["Route to Opus tier"]
F -->|Bounded & bulk| H["Route to Haiku/Sonnet"]
G --> I["Stream tool results, trim history"]
H --> I
I --> J["Emit report"]Prompt caching lets you mark a stable prefix of your context so that subsequent calls reuse it at a steep discount instead of re-charging full input price. For finance plugins the stable prefix is obvious and large: the system prompt, the skill instructions, and the reference data that does not change within a close. Put all of it at the front of the context, in a fixed order, and set a cache breakpoint after it. Everything that changes per turn — the current tool result, the running tally — goes after the breakpoint.
Hear it before you finish reading
Talk to a live CallSphere AI voice agent in your browser — 60 seconds, no signup.
The structural rule that trips teams up: caching only helps if the cached prefix is byte-identical across calls. If you interleave a timestamp or a per-turn counter into the early context, you invalidate the cache every turn and pay full price. Keep the volatile bits strictly after the stable region. Here is the shape of a request that caches a finance reference block:
messages: [
{
role: "user",
content: [
{ type: "text", text: chartOfAccounts, // ~10k tokens, identical every run
cache_control: { type: "ephemeral" } }, // <-- cache breakpoint
{ type: "text", text: currentTurnToolResult } // volatile, after the breakpoint
]
}
]With that one change, a forty-turn close stops paying full input price for the reference block thirty-nine times. On repetitive finance workloads this is frequently the difference between a plugin that is too expensive to run nightly and one that is cheap enough to run on every entity.
Not every finance task needs an answer in real time. Bulk variance analysis across two hundred cost centers, overnight re-forecasts, or scoring a backlog of vendor invoices are all jobs where latency does not matter. For these, batch processing — submitting many requests as one asynchronous job that returns within a window rather than instantly — typically runs at a meaningful discount versus synchronous calls. Architect your plugin so the interactive close uses real-time calls, while the wide, embarrassingly parallel analyses are queued as a batch and collected when ready.
The design implication is that you should separate "the analyst is waiting" paths from "this can finish by morning" paths early, because they want different cost profiles. A plugin that treats both identically either makes the analyst wait on batch latency or pays real-time prices for work that never needed to be real-time.
Running every step on the most capable model is the most common avoidable expense. A close has a mix of step difficulties: deciding how to resolve an ambiguous intercompany discrepancy is genuinely hard and benefits from Opus-tier reasoning; reformatting a number, classifying a transaction into a known bucket, or extracting a field from a clean document is easy and runs perfectly on Haiku or Sonnet at a fraction of the cost. Build the plugin so the orchestrator routes each sub-task to the cheapest model that can do it correctly, and reserve the top tier for the steps that actually move the answer.
Still reading? Stop comparing — try CallSphere live.
CallSphere ships complete AI voice agents per industry — 14 tools for healthcare, 10 agents for real estate, 4 specialists for salons. See how it actually handles a call before you book a demo.
| Technique | Best for | Relative impact |
|---|---|---|
| Prompt caching | Repeated reference data (chart of accounts) | Large — order-of-magnitude on cached input |
| Model routing | Mixed-difficulty step pipelines | Large — top model only where needed |
| Batch mode | Non-interactive bulk analysis | Moderate — discount on async jobs |
| History trimming | Long multi-step closes | Moderate — bounds dynamic context |
Prompt caching marks a stable prefix of the context so repeated calls reuse it at a steep discount instead of paying full input price each time. Finance plugins re-read the same reference data — chart of accounts, entity lists, reconciliation rules — on every turn of a long run, so caching that prefix is typically the single largest cost reduction available.
Use batch mode for any task where the analyst is not waiting on the result: overnight re-forecasts, bulk variance analysis across many cost centers, or scoring a backlog of documents. Batch jobs return within a window rather than instantly and run at a discount, so reserve real-time calls for the interactive close where latency matters.
No — it spends more. A multi-agent run typically uses several times the tokens of a single agent because each sub-agent carries its own context and coordination overhead. Multi-agent is the right call when the work is genuinely parallel and you need the speed, not as a default cost-saving pattern.
Keep all volatile content — timestamps, counters, per-turn tool results — strictly after the cache breakpoint, so the cached prefix stays byte-identical across calls. Log your cache-hit rate; a sudden drop means something volatile leaked into the stable region.
The same cost discipline — caching stable context, routing by difficulty, and keeping runs lean — is how CallSphere runs voice and chat agents economically at scale, answering every call and message while staying fast and affordable. See it live at callsphere.ai.
Source & attribution: This is an independent, original explainer inspired by Anthropic's coverage on the Claude blog. Claude, Claude Code, Claude Cowork, Claude Opus, and the Model Context Protocol are products and trademarks of Anthropic. CallSphere is not affiliated with or endorsed by Anthropic.

Written by
Sagar Shankaran· Founder, CallSphere
LinkedInSagar Shankaran is the founder of CallSphere, where he builds production AI voice and chat agents deployed across healthcare, hospitality, real estate, and home services. He writes about agentic AI, LLM engineering, and shipping voice agents that handle real calls in production.
See how AI voice agents work for your industry. Live demo available -- no signup required.
The monthly IEEE 1366 reliability close takes 64 hours across three people. What goal-driven agents change, the arithmetic, and what stays with the engineer.
How pest control service managers hand the monthly food-account trend packet to a 2026 work agent as a goal - and what has to change about assigning work.
The phased plan, insurance estimate, predetermination narrative and financing page, finished before the patient leaves. What the owner has to change to get it.
Why co-pack quotes take six days, and how 2026 agents that return finished work rebuild the packet — costed formula, freight, spec sheet — in two hours.
A 1/1 commercial submission packet costs an account manager nine hours, eight of them gathering. In 2026 you hand over the goal and review the finished packet.
The Thursday production packet - prep list, vendor POs, staffing, rentals - built as one goal. Worked food-waste math and the habits an owner must change.
© 2026 CallSphere Inc. All rights reserved.
Made within San Francisco
Watch how CallSphere handles real customer calls, schedules appointments, and processes payments — live.
Try Live DemoBook a DemoCalculate Your ROI