Cost-aware model routing for AI agents on AWS: an insurance claims walkthrough with Bedrock and SageMaker AI.
A chatbot makes one model call per conversation. An AI agent that processes an insurance claim makes nine, across a dozen steps and eighteen tool calls, before a person sees the result. If every one of those calls goes to a frontier model, you are paying frontier prices for work a lookup table could do.
This post walks through a single motor claim, step by step, and shows where a cost-aware router sends each piece of work: to deterministic code, to a small fine-tuned model on Amazon SageMaker AI, to a low-cost foundation model on Amazon Bedrock, to a strong reasoning model, or to a human adjuster. The claim is invented. The architecture is the one we build.

The architecture that burns money
A customer uploads photos of a damaged car and writes: “I had an accident yesterday. The rear bumper and tail light are damaged. I wasn't at fault. Can you process my claim?”
The first version of most claims agents looks like this:
Customer
Extract claim information
Powerful LLM
Check policy
Powerful LLM
Analyse damage
Powerful LLM
Assess coverage
Powerful LLM
Draft decision
Powerful LLM
It works. It also spends the same money on classifying a bumper as it does on reasoning about conflicting evidence in a suspected fraud. Several of those steps are trivial, one or two are hard, and the architecture cannot tell the difference. At a hundred thousand claims a month the bill for the trivial steps dominates.
The cost-aware architecture
The fix is a routing layer between the agent and the models. Before any step runs, the router scores the task and picks the cheapest path that can do it well.
Claims agent
Customer or adjuster request
Task and model router
complexity, risk, confidence, cost, latency
Deterministic
Code or API, no model
Small model
SageMaker AI SLM, or low-cost Bedrock FM
Strong model
Bedrock reasoning FM, only when triggered
Human adjuster
Sensitive and, high-risk decisions
Tools, APIs, retrieval
Policy DB, claims DB, fraud APIs
Claims workflow
Notice that the ladder has five rungs, not two. Most writing on model routing frames it as cheap model versus expensive model. In an enterprise agent the more important routes sit at the ends of the ladder.
| Route | What handles it | Typical work |
|---|---|---|
| Route 0 | Deterministic code or an API | Policy lookup, identity check, limits, dates, validation |
| Route 1 | Small model, often fine-tuned on SageMaker AI | Classification, extraction, document typing, severity, fraud flags |
| Route 2 | Low-cost foundation model on Bedrock | Straightforward reasoning with a checkable answer, drafting, summaries |
| Route 3 | Strong reasoning model on Bedrock | Conflicting evidence, ambiguous coverage, high financial exposure |
| Route 4 | Human adjuster | Sensitive, high-risk or regulated final decisions |
One claim, step by step
Here is what the router does with our rear-bumper claim as it moves through the agent.
Step 1: classify the claim
The system has: rear bumper damaged, tail light broken, no bodily injury, another driver involved, police report available. The task is a classification with a small, known label set.
Output
- claim_type
- auto_collision
- severity
- low
- bodily_injury
- false
Router decision
- Complexity
- Low
- Risk
- Low
- Reasoning
- Low
Route 1: small model
A SageMaker AI classifier or a low-cost Bedrock model.
This is exactly the traffic to keep away from a frontier model. A classifier fine-tuned on a few thousand labelled claims will do it faster, cheaper and more consistently.
Step 2: extract the documents
The customer uploaded a driving licence, the police report, a repair estimate, the policy document and three photographs. The agent needs structured fields out of them.
Output
- policy_number
- IN-928331
- vehicle
- Honda Civic 2025
- incident_date
- 2026-09-29
- estimated_repair
- 1,840
- police_report
- true
Router decision
- Task
- Structured extraction
- Complexity
- Low
Route 1: inexpensive model
With a schema the output must satisfy.
Step 3: look up the policy
Is collision damage covered under policy IN-928331? This should not involve a language model at all.
Output
- coverage
- Comprehensive collision
- deductible
- 500
- limit
- 35,000
Router decision
- Source
- Policy API
- Model calls
- None
Route 0: deterministic
Cached and audited. No token generated.
Every fact a system of record can answer is a fact the model should never be asked to guess. It is cheaper, and it is the only way the answer is defensible later.
Step 4: reason about coverage
Now the agent has a repair estimate, a deductible, an active policy on the incident date, and photographs consistent with the description. It needs to combine them.
Output
- coverage_status
- likely_covered
- estimated_insurer_payment
- 1,340
Router decision
- Complexity
- Medium
- Risk
- Medium
- Confidence
- High
Route 2: competent low-cost model
With deterministic validation of the arithmetic afterwards.
The model reasons; code checks the numbers. That pairing is the pattern for every medium-risk step: let the model do the synthesis, never let it be the last word on a figure.
Step 5: something unusual appears
The damage-analysis step notices that one photograph's metadata is three months old, another looks previously submitted, the repair estimate is well above benchmark, and a prior claim exists for similar damage. The reasoning requirement has changed completely.
Output
- task
- claim_reasoning
- fraud_signals
- 4
- conflicting_evidence
- true
- financial_exposure
- 17,800
Router decision
- Complexity
- High
- Risk
- High
- Financial impact
- High
- Conflicting evidence
- Yes
Route 3: strongest reasoning model on Bedrock
Now spending more is justified. The strong model reads the claim statement, the policy conditions, previous claims, photo metadata, the repair estimate, vehicle history, fraud rules and the police report, and returns:
Decision
manual_review_required
Reasons
- Photograph predates the reported incident
- Possible duplicate damage
- Repair estimate differs significantly from benchmark
Recommended actions
- Request the original image
- Verify the repair shop
- Send the claim to SIU review
Route 4: human adjuster, with the reasoning attached
The expensive model ran once, at the one point where extra reasoning had economic value, and even then it did not decide. It recommended, and a person decides.
Why agents make this matter more than chatbots
A traditional chatbot makes one model call. Look at what one claim generates inside an agent:
| Agent operation | Tier without routing | Tier with routing |
|---|---|---|
| Intent detection | Frontier | Small |
| Claim classification | Frontier | Small |
| Document extraction | Frontier | Small |
| Policy lookup | Frontier | No model |
| Customer identity check | Frontier | No model |
| Damage categorisation | Frontier | Small or vision model |
| Coverage reasoning | Frontier | Medium |
| Fraud triage | Frontier | Small |
| Complex fraud reasoning | Frontier | Strong, only when triggered |
| Customer email | Frontier | Small |
| Claim summary | Frontier | Small |
| Escalation explanation | Frontier | Medium |
Twelve operations. Without routing, eleven of them hit the premium model. With routing, seven go to a small model, two go to deterministic code, one goes to a medium model, and one goes to the strong model only when the fraud triage triggers it.
1
customer interaction
12
agent steps
18
tool calls
9
model calls
40,000+
tokens per claim
At a hundred thousand claims a month, that is nine hundred thousand inference calls.
At that volume a routing decision that moves one step from the strong tier to the small tier is not a rounding error. It is the difference between an agent the finance team approves and one it does not.
The router is a risk model, not a cost switch
For an insurer, easy-goes-small and hard-goes-big is not enough. Task complexity is one input among several, and some of the others matter more.
Routing score, inputs
Two claims make the point.
| Signal | Clean claim | Disputed claim |
|---|---|---|
| Claim value | Under 2,000 | 150,000 |
| Bodily injury | None | Yes |
| Fraud indicators | None | Several |
| Coverage | Clear | Ambiguous |
| Evidence | Consistent | Conflicting witness statements |
| Confidence | Above 0.95 | Low |
| Route | Small model, automated processing | Strong model, then mandatory human approval |
The router is allocating intelligence according to risk, and cost falls out of that as a consequence. That framing also answers the governance question: the same score that sends a claim to the strong model is the score that sends it to a person.
Where SageMaker AI and Bedrock each fit
Having both services in one architecture is what makes the ladder real rather than theoretical.
Claim request
Cost-aware model router
SageMaker AI
Fine-tuned insurance SLM, Route 1, high volume
Bedrock
Low-cost foundation model, Route 2
Bedrock
Strong reasoning model, Route 3
Agent workflow
- SageMaker AI is where the high-volume, narrow tasks live. A small model fine-tuned on the insurer's own claims handles claim type, document type, coverage category, severity, fraud indicators and the routing classification itself. These tasks run thousands of times a day, need consistency more than creativity, and do not need a general-purpose model. Training and evaluation run as SageMaker AI jobs against reviewer labels, so accuracy is measured rather than assumed. Our fine-tuning guide covers when a small trained model beats a prompt.
- Amazon Bedrock is where the generative and reasoning work lives: coverage reasoning, the customer email, the escalation explanation, and the rare complex fraud analysis. The router chooses the model tier per call, and Bedrock's model choice means the strong model can change as better ones arrive without touching the agent.
- Bedrock Intelligent Prompt Routing can already choose between models in a family based on predicted quality and cost. It is a good default for the generative steps. An insurer still wants its own routing layer on top, because claim value, regulatory exposure, fraud risk, confidence and workflow state are inputs a prompt-complexity router cannot see.
What stays with a person
The ladder only works if the top rung is real. In the architecture we build, three things are fixed regardless of how the router scores a claim.
- Anything that pays money, denies a claim, or touches a regulated decision waits for an adjuster. The model recommends; it does not decide.
- Every step is logged with the route taken, the model and prompt version, the evidence used, the output, and the person who approved it. That record is what makes the decision defensible in an audit.
- Confidence thresholds are tuned per claim type from real outcomes, and the approval log is what lets the insurer widen automation deliberately, on evidence, rather than on trust.
This is the same principle behind our enterprise AI work and the document and claims systems in our use cases: deterministic code handles facts, models handle synthesis, and people handle judgement.