Amazon replaced Claude Sonnet 4.6 with Strands Decider, a decision model, in one of its largest internal ticketing systems, and the cost per ticket dropped by nearly 98 percent: from 0.0222 to about 0.0005 dollars, roughly 44 times less. The figures come from the engineers themselves who made the change, in a post from November 9, 2026, and are self-reported.
What makes that post valuable isn’t the headline number. Carr Onstott and Mehul Jaiswal, the two Amazon engineers behind the change, are unusually candid about what they had to rebuild to get there and about the cases where they wouldn’t. That’s the part a CTO should read twice.
How much does Claude Sonnet cost versus a decision model?
On this task, Sonnet cost about 44 times more per ticket and each call took nearly five times longer. The task consists of labeling each incoming ticket into one of 20 categories: customer escalations, capacity requests, automated alarms, security findings, etc. Before the change, Sonnet 4.6 read a long system prompt on each ticket and generated a label in JSON with its reasoning.
| Metric | Claude Sonnet 4.6 | Strands Decider E4B |
|---|---|---|
| Average time per call | 4.215 ms | 897 ms |
| Input tokens per ticket | 6.554 | 2.009 |
| Output tokens per ticket | 170 | 1 |
| Total tokens per ticket | 6.724 | 2.010 |
| Cost per ticket | 0.0222 USD | ~0.0005 USD |
| Cost per 1 million tickets | ~22,200 USD | ~500 USD |
How the numbers were built: Sonnet 4.6 on Bedrock at list price (3 dollars per million input tokens and 15 per million output), versus an ml.g5.xlarge SageMaker instance at 1.408 dollars per hour. The 500 dollar figure per million includes margin for spikes and excludes the Lambda cost. The average Lambda duration dropped 74 percent the day Sonnet was turned off. The post talks about “millions of dollars” saved per year, but doesn’t break down that total.
What the post doesn’t give is a precision figure. It says the E4B model outperformed the production Sonnet on a separate set of tickets and that in production it performed equally well. I’d take that as a credible engineering claim, not as a published benchmark.
What is Strands Decider?
Strands Decider is a small decision model, what its authors call a system one model, that scores a fixed set of options instead of generating text. You give it a state (the ticket) and a set of options (the label catalog), and it returns a probability per option plus a calibrated confidence. It’s a project from Strands Labs, the experimental arm of Strands Agents, released under Apache 2.0 license.
It comes in several sizes. The reference model is a 2B based on Qwen3.5; the Gemma 4 family adds versions E2B, E4B, 12B, and 26B-A4B. Amazon’s figures come from the E4B, which the team chose because it clearly outperformed the 2B on their test set.
If decision models are new to you, we explain the concept and how the main options compare in Microsoft-Decision-1 vs Jev.
SLM vs LLM: Why does a frontier model lose at text classification?
Because you’re paying for words nobody reads. Look at the output row: 170 tokens per ticket with Sonnet, one with Decider. Those 170 tokens were reasoning and JSON formatting, charged at the output rate on every ticket, for a decision that has exactly 21 possible answers.
This is the pattern I’d look for in any LLM workload portfolio. A frontier model is the right tool when the answer is open-ended: writing, planning, coding. When the answer is a closed choice within a known list, like text classification, a generative model is doing a classifier’s job at a generalist’s price. And it’s also slower, because it has to generate text until it reaches an answer that a scoring model reads in a single pass. At high volume, that difference stops being an optimization and becomes a budget line.
Confidence matters as much as price. Amazon applies a label only when confidence exceeds a threshold the team tuned, so doubtful tickets don’t get the wrong label. A label generated with a paragraph of reasoning gives you nothing equivalent to threshold against.
If you want to see the same cost logic applied within the Claude family, we compare turn-by-turn in Claude Haiku 5.5 vs Sonnet 5.5 vs Opus 5.5.
What did Amazon have to change to go from Sonnet to a decision model?
Much more than the model. The post lists six changes:
- They reframed the task as a single-choice question: the 20 labels plus a “none” option.
- They rewrote each label description. The production descriptions didn’t fit in the model’s 4,096 token window, so each became a one- or two-sentence criterion.
- They trimmed long tickets, discarding the oldest comments so they’d fit in the window.
- They ordered the JSON keys in each request. Just the order of the keys shifted output probabilities by as much as 0.19.
- They tuned the confidence threshold before applying labels.
- They added a three-position deployment toggle in AWS AppConfig:
BEDROCK(Sonnet only),DUAL(both in parallel, comparing results), andDECIDER(Decider only). Rolling back took a 45-second config change.
Point 4 is what I’d highlight for any team planning something similar. A model whose output shifts 0.19 based on the order of keys is sensitive to input format, and you only discover that by measuring. The DUAL mode is what made the change safe: both models ran on real traffic and their responses were compared before turning off Sonnet.
The architecture is AWS with no surprises: ticket events to an SQS queue, a Lambda that calls a SageMaker endpoint with the model, AppConfig for the toggle, and CloudWatch for metrics and alarms, all defined in CDK with Beta, Gamma, and Prod stages. The endpoint scales automatically, runs isolated from the network, and copies the model weights from S3 on startup. One instance handles about 640 ms per request, roughly 5,600 tickets per hour at full load, with the model using about 19 GB on a 24 GB A10G.
How do you install Strands Decider?
Install the package from PyPI:
pip install strands-decider
At the time this note was published (November 10, 2026), the Gemma 4 models, including the E4B behind Amazon’s figures, weren’t yet on PyPI. To use them, install from the main branch of the repository:
pip install "strands-decider @ git+https://github.com/strands-labs/strands-decider"
The README quickstart asks the reference 2B model a choice question, a yes/no question, and a scoring question in a single command:
strands-decider ask StrandsAgents/strands-decider-2B-qwen3.5-v1-2610 \
--state "Help! My payouts have been failing for 3 days! " \
--choice "Which team should handle this?=billing,sales,retail" \
--noul "Does this convey urgency?" \
--score "How frustrated is the writer?=calm,frustrated,depressed"
It can also run as an HTTP server:
strands-decider serve StrandsAgents/strands-decider-2B-qwen3.5-v1-2610 --port 8000
The included server listens on 127.0.0.1 without authentication, and the documentation describes it as intended for local experiments. Amazon didn’t expose it: it ran the model on a network-isolated SageMaker endpoint. You don’t need a GPU, because all four Gemma 4 models run on CPU, but memory adds up: the E4B needs about 15 GB in bf16 on GPU.
When is a decision model a bad fit?
The authors themselves set the limits, which is a good sign. A decision model is the wrong choice when:
- labels need explanatory text;
- the catalog of options changes every week;
- the context needed to decide doesn’t fit in a few thousand tokens.
And it only pays off when volume is high and latency matters. Two more nuances on the numbers: costs are at list price and without Lambda, and the per-ticket figure assumes the instance is running near capacity, with margin for spikes. A low-volume load on an almost-idle GPU wouldn’t see a 98 percent reduction.
My reading: the right question for an engineering leader isn’t “Should we replace our LLM?” It’s “Which of our LLM calls are actually classifications?” Most teams have more than they think (routing, triage, tagging, moderation, intent detection) and each is a candidate for the same audit Amazon did.
What about you? Which task on your team is still paying frontier LLM prices when, at its core, it’s a classification?
- A frontier LLM (Claude, GPT, Gemini)
- A small or decision model
- A classic classifier (rules or traditional ML)
- I prefer another option (tell us which)
Comment below or, if this article reached you by email, reply directly to the email: your response gets published here.
Related: What is Flide? The engine that serves decision models like Jev 9.5x faster than vLLM