Is Your LLM Doing Work It Shouldn't Be? A 10-Minute Pipeline Audit
In the LLM world, the trend of "more, bigger, better" is a good way to get large results with even larger bills. More prompts to cover edge cases. Bigger models because they feel safer. Better quality by throwing more reasoning at every question. Each instinct is reasonable on its own. Together, they cause a tidal wave of costs that destroy your margins.
This is a step-by-step audit which will let you come out with a flagged list of opportunities for reducing your LLM bill.
This is mainly centered around text and reasoning pipelines. Audio and image generation run into cost in their own ways, and while they can still benefit, the results are less likely to be dramatic.
A note before you start: these steps aren't equally valuable. Finding a step that can skip the LLM entirely (Step 4) almost always saves more than making an existing call cheaper (Step 3) – removing a cost beats discounting one. Keep that in mind as you prioritize what you find.
Step 1 – Find your main flow
Don't start with the flow you're proudest of, or the one that feels most complex. Start with the one that costs the most
It's tempting to go after a flow because it's messy or convoluted, even if it barely runs. Cost doesn't care about that – it cares about volume. A flow riddled with waste that only fires occasionally is worth far less of your time than a plain, boring flow running on every request.
- List every place your product calls an LLM
- Next to each, estimate calls per day × cost per call (or ideally, back it up with real data)
- Sort by total cost, highest first
Output: the one flow you're auditing for the rest of this exercise.
Step 2 – Break the flow into its real actions
Look past the prompt's wording and identify the distinct actions being asked of the model – not the sentences, the actions. A single prompt can often be several smaller tasks running at once, and it's easy to miss because it reads as one coherent instruction.
One reliable tell: any time your prompt uses a conditional – "if the post mentions a competitor, do X," "when the sentiment is negative, do Y" – there's a good chance you're asking the model to run several different tasks depending on a branch, all inside a single call. That's several actions in disguise, not one.
- Write out the distinct actions the prompt is actually performing
- Flag any conditional language (if / when / unless) – it's a strong signal of a hidden branch
Output: a list of the real actions inside your flow, not just the prompt that wraps them.
Step 3 – Ask: what's the lowest-tier model that could comfortably do this?
For each action from Step 2, assume for now that it still needs an LLM, and that each step is its own LLM call. Ask what's the smallest, cheapest model that could do it reliably – and what information it actually needs to work.
This is a right-sizing question, not a removal question. You're not asking "does this need an LLM" yet – just "if it does, which one does it need?"
- For each action, name the cheapest model tier you think could handle it
- Note whether it needs the full original context, or just a narrower slice
- Also note what the minimal output from each step is
- Flag anything currently running on a bigger model than this suggests
Worth knowing going in: this is often the fastest saving to find – sometimes 50%+ immediately. It's also the least durable. Push it too far and quality suffers, and even a well-chosen cheap model isn't guaranteed to stick around – providers deprecate and reprice models, and a saving you locked in today can quietly erode.
Step 4 – Ask: does this need an LLM at all?
This is where the largest savings live. Go back through your list of actions and check each one against two categories.
Traditional code
- Is it transforming from one structure to another, or validating a structure?
- Is it performing calculations, like adding or multiplying results?
- Is it searching for specific text, or keywords?
- If it fits: flag as potentially removable with plain code – no model needed, at any tier
Traditional ML or embeddings
- Does it match one of these patterns?
- Classify – assign a fixed category
- Recommend – suggest something based on specific criteria
- Compare – judge similarity or difference between two things
- Rank / score – order items or assign a number
- Cluster – group similar items, no fixed categories
- Deduplicate – catch near-identical items, not just exact matches
- Detect / flag – spot outliers or anomalies
- Retrieve / search – find the most relevant item(s) in a set
- If it fits: flag as potentially removable with ML or embeddings
A step you remove entirely costs nothing on every future call, forever. That's a different order of saving than a cheaper model tier, and it's why this step deserves the most attention of the four.
This step is about flagging candidates, not committing to an implementation – how you'd actually build the replacement depends on your data, your accuracy bar, and your engineering time.
Putting it together
Once you've got flagged actions from Steps 3 and 4, the real question is whether it's worth acting on each one.
Not every flagged opportunity is. Weigh each one against the cost of the flow it came from, available expertise, and your product reality.
From here, a few shapes of opportunity tend to show up repeatedly:
- Cascading – routing a right-sized action (Step 3) to a genuinely cheaper model
- Shrinking context – narrowing what a remaining LLM call needs to see, often by handling an earlier action with code or a cheap LLM call.
- Guarding – using a cheap classifier in front of an LLM call to skip it entirely for some cases.
- Replacing – removing a step outright with code, ML, or embeddings
Quick self-check
A short list to run your pipeline against once you've worked through the audit:
- All my calls are using the minimum viable model for what they're doing
- Every conditional branch in a prompt has been checked for hidden sub-tasks
- Every classify / recommend / compare / rank / cluster / deduplicate / detect / retrieve task has been checked against an ML or embeddings alternative
If you've worked through this, you likely already have a real list of opportunities to make significant reductions in your LLM bill.
If you'd like advice for your specific situation, you can email me and we can set up a meeting to discuss the opportunities present for you and your business.
Carl Anderson