Brazilian startups are burning Anthropic credit for nothing
I audit a lot of AI-startup Anthropic bills. Three patterns show up in almost every one. None are about the model; all are about operation.
by Zechim
In the last few weeks I helped three Brazilian startups look at their Anthropic bill for the first time. All in production for at least 6 months. All burning money they didn't need to burn.
Three patterns show up in almost every audit. None are about "picking the wrong model". All are about operation. Sharing them here because they probably apply to your case too.
Pattern 1: Sonnet for everything
The Vercel AI SDK default and most tutorials use Sonnet 4.5. You write generateText({ model: anthropic('claude-sonnet-4-5') }) and move on. It costs $3 per million input tokens and $15 per million output.
But in most agent conversations, the model runs 3 to 5 calls: tool choice, SQL generation, result reading, final synthesis. The first 3 are mechanical. Haiku 4.5 handles them with quality indistinguishable from Sonnet, at one-sixth the price ($0.80 input, $4 output).
The final synthesis, where prose quality and multi-step reasoning matter, still deserves Sonnet.
I wrote about this in an earlier post. Short version: split the tool loop (Haiku) from the synthesis (Sonnet) and per-conversation cost drops 60%. Zero UX difference. Yes, sixty.
Pattern 2: prompt caching disabled (or enabled wrong)
Anthropic charges 10% of normal price for cached tokens. If your system prompt is 3000 tokens and repeats on every call in the conversation, from the second turn on it costs 300 tokens instead of 3000. Nine out of ten startups I audit haven't enabled it.
Worse: some of the ones that did enable it are doing it wrong. Caching depends on the prompt prefix being identical across calls. If you inject the user's timestamp, name, or session ID into the top of the system prompt, you break the cache on every call. I've seen this in production more than once.
The rule is simple: dynamic information goes at the end of the message, not the beginning. Stable prefix, variable suffix.
Pattern 3: no streaming, paying for what the user abandons
If you call generateText (non-streaming), the model generates the full response before you receive the first byte. If the user closed the tab at second 3 of a response that was going to take 8 seconds, you already paid for the full 8 seconds.
With streamText, you receive tokens as they're generated. If the user's connection dies, you stop generating. You pay only for what got delivered.
This weighs more in products with visible chat UI (where users choose to close), less in background job processing. But if you have conversational UI in production, streaming isn't optional. It's cost control.
The meta pattern: nobody watches the bill
Anthropic doesn't send weekly summaries by default. You see spending when you go into the console to look, or when the card fires. Most startups I audit didn't even know the structure of their bill: input tokens per day, cache hit rate, endpoint breakdown.
The fix is 5 minutes:
- Anthropic Console > Settings > Cost Alerts
- Create a soft alert (email when daily spend passes $X)
- Enable server-side telemetry in your app to log tokens per request (we use PostHog)
After that, if a new burn pattern shows up (abusive user, refactored prompt that broke the cache, new feature generating tons of output), you find out in hours instead of months.
The expensive consultant
AI consultancies love selling "Anthropic cost optimization" like it's rocket science. It isn't. The three patterns above cover 80% of what those optimizations actually do in practice. You can apply them yourself on a Saturday.
What senior consulting actually does differently is the fourth pattern: understanding the product enough to know when cutting Sonnet is worth it and when it isn't (financial products, healthcare, legal often aren't). That's what justifies paying someone.
If you've been in production for more than 3 months and never done this audit, spend an afternoon on it. You'll find 30 to 60% of spend to cut without touching UX.
If you want a second opinion on your bill breakdown before you make a call, worth 30 minutes.