| name | cost-guardrail |
| description | LLM and cloud cost awareness — model tiering, token budgets, right-sizing, and when a cheaper model suffices. Trigger before finalising any architecture that calls LLMs, before scaling a workload, or when a cost estimate is needed. |
Cost Guardrail
The most expensive model is the one running on every request when it does not need to.
LLM cost is not a finance problem — it is an architecture problem. The design determines the bill. This skill enforces cost-awareness as a first-class design constraint, not an afterthought.
When to use
- Designing any system that calls an LLM (directly or via an agent)
- Before scaling a workload to higher volumes
- When a cost estimate is required for a feature or release
- When reviewing an architecture for unbounded cost vectors
- When choosing between model tiers for a given task
Procedure
-
Identify every LLM call in the system — list: which agent or component makes the call, the model tier used, the approximate input and output token counts, and the call frequency (per user action / per minute / per batch).
-
Apply the model tiering test — for each LLM call, ask:
- Does this task require deep reasoning, or is it classification / extraction / reformatting?
- Can the task be completed with a smaller or faster model?
- Is the model tier choice based on evidence (benchmark, A/B test) or assumption?
General tiering principle (verify current pricing against your provider's documentation before relying on it):
| Task type | Appropriate tier |
|---|
| Simple classification, extraction, summarisation | Small / fast model |
| Complex reasoning, multi-step planning, code generation | Mid-tier model |
| Deep analysis, architecture decisions, adversarial review | Highest-tier model |
-
Identify unbounded cost vectors — flag any call pattern where the token count or call volume has no upper bound:
- Loops that call an LLM until a condition is met (with no max-iteration guard)
- User-triggered calls with no rate limiting
- Context windows that grow unboundedly across a conversation
- Batch jobs with no per-run budget ceiling
-
Estimate the monthly cost envelope — for each LLM call:
estimated monthly cost ≈ (input tokens × input price) + (output tokens × output price) × calls/month
Use current published rates from your provider. Do not use rates from training data — they change.
-
Add cost controls — for each unbounded vector:
- Set a max-token budget per call (trim context if needed)
- Add rate limiting at the application layer
- Add a budget alert at the infrastructure layer
- Consider caching repeated calls with identical or near-identical inputs
-
Check for caching opportunities — LLM calls that return the same result for the same input are cacheable. Prompt caching (where supported by the provider) can reduce cost significantly on repeated prefixes.
-
Document the cost model — in the ADR or design doc, record: model tiers chosen, rationale, estimated monthly cost at target scale, and the controls in place.
Outputs
- LLM call inventory: component | model tier | input tokens (est.) | output tokens (est.) | frequency | monthly cost (est.)
- Unbounded cost vectors flagged with mitigations
- Monthly cost estimate at target scale
- Recommended model tier per call with rationale
Guardrails
- Never use pricing from training data. Rates change. Fetch current rates from the provider's documentation before estimating.
- A call that "works" at low volume may be unaffordable at scale. Always estimate at the target scale, not the current scale.
- Caching is not optional for high-frequency repeated calls. An uncached LLM call repeated thousands of times per day is a design flaw.
- Token budgets are architecture decisions. Decide them explicitly; do not let the model decide by consuming whatever context is available.
Anti-rationalization table
| Excuse | Counter |
|---|
| "It's only a few cents per call" | At scale, cents become thousands of dollars. Estimate the monthly envelope. |
| "We'll optimise later" | Cost optimisation is hardest after the architecture is set. Do it now. |
| "The big model gives better results" | Verify with a test. Small models are often sufficient for structured tasks. |
| "We don't know the volume yet" | Estimate a range. A 10x cost swing between low and high volume is a design risk. |