Sort thousands of items for cents
For high-volume sorting into a fixed set of boxes, a decision model did the job 4.9 times faster and 12 times cheaper than Claude Sonnet 5.
What the reel showed
10,000 Skittles, each one a short description that never names the colour, like 'coloured as a stop sign is', so the model has to actually decide. Two models sorted the same items in the same order, one item per request, 20 requests at a time.
Jev, TypeSafe's decision model, cleared the bowl in 3m41 for 15 cents. Claude Sonnet 5, with reasoning switched off so it ran as fast and cheap as it can, took 17m55 for $1.86. That is 4.9 times faster and 12 times cheaper.
Sonnet was more accurate, 99.43% against 97.00%. Most of Jev's misses, 189 of its 300, came from one description, 'a tennis ball under floodlights', which sits right on the line between the yellow and the green option.
| Entrant | Tool | Time | Cost | Verdict |
|---|---|---|---|---|
| TypeSafe Jev 1.13 | OpenRouter, System One | 3m41 | $0.15 | 97.00% correct, 300 wrong |
| Claude Sonnet 5 | OpenRouter, chat completions | 17m55 | $1.86 | 99.43% correct, 57 wrong |
Both models sorted the same 10,000 items through OpenRouter, one item per request with 20 in flight; Jev on its decision endpoint, Sonnet on chat with reasoning off.
What this means for your business
This is the shape of a lot of back-office work: a stream of items, and each one goes into one of a few boxes. Which inbox an email belongs in, whether a lead is hot or cold, which team owns a ticket, which category an expense or a product goes under, whether an invoice needs a person.
At 15 cents for 10,000 decisions, price stops being part of the conversation. You can sort every item, every time, instead of sampling or leaving it for Friday.
Jev returns a confidence with every answer. A good setup acts on the confident ones and sends the unsure ones to a person or to a bigger model like Sonnet. You get the speed on the easy majority and the care on the rest.
Write the options like instructions. In a coin version of this test, giving each option a real description instead of just its name took Jev from about 91% to 100% on 1,000 items. When a decision model gets something wrong, fix the wording first.
What I’d use
For sorting at volume I would use Jev on OpenRouter, with a confidence threshold that hands the unsure cases to Claude Sonnet. For a few dozen items a day, just use Sonnet, in the Claude app or in Claude Code on your Claude plan. The difference is pennies and you already know how to talk to it.
If you use a chat model to classify, switch its reasoning off. Otherwise it spends tokens, time and money thinking about a one-word answer.
Try it yourself
Run a sorting job from your own business through both models and compare speed, cost and accuracy. The whole test costs a few cents. Jev is only on OpenRouter, and running Sonnet there too keeps the comparison fair, so both model calls go through one OpenRouter account.
Create an OpenRouter account
One account and one bill for Jev, Claude and hundreds of other models. Sign up and add a few dollars of credit.
Create an API key
This lets a script use your account. Keep it private, like a password.
Install Claude Code
Claude Code writes and runs the test for you. It is included with Claude Pro and Max, which is how I use it every day, so only the test calls go on your OpenRouter bill. No Claude plan? Run it on your OpenRouter key with OpenRouter's guide (linked below), or use Codex CLI on a ChatGPT plan instead.
Make a folder, add your key, paste the prompt
Create an empty folder with a text file called .env containing OPENROUTER_API_KEY=YOUR_OPENROUTER_KEY, using your real key. Start Claude Code there and paste this.
I want to compare two models on a sorting job, using OpenRouter. My OpenRouter key is in the .env file in this folder as OPENROUTER_API_KEY. Never print it. 1. Read https://openrouter.ai/docs/guides/community/jev-tutorial 2. Make a list of 200 realistic expense lines for a small business, like "Grab ride to client office" or "Adobe subscription", each with the correct category: travel, software, meals, office or marketing. Keep the right answers in a separate column. 3. Sort every line twice, with the same one-sentence description of each category on both sides: - Jev: POST https://openrouter.ai/api/alpha/decisions, model typesafe/jev-1.13, one "choice" question. - Claude Sonnet 5: OpenRouter chat completions, model anthropic/claude-sonnet-5, reasoning off, answer with the category name only. Run 10 requests at a time on both sides. 4. Report for each model: total time, total cost, accuracy, and the lines it got wrong.
Run it on your own data
Swap the samples for 200 real lines from one of your exports, with personal details removed. If the misses cluster in one category, the description of that category is the problem.
Links
- OpenRouterOne account, every model, pay per useopenrouter.ai
- Jev 1.13 on OpenRouterTypeSafe's decision modelopenrouter.ai
- Jev tutorialYour first decision callopenrouter.ai
- Jev LabLive Jev demos in the browseropenrouter.ai
- Claude Sonnet 5 on OpenRouterAnthropic's mid-tier modelopenrouter.ai
- Claude CodeAnthropic's coding agentclaude.com
- Claude Code with Pro or MaxRun it on your Claude subscriptionsupport.claude.com
- Codex CLIOpenAI's coding agent, signs in with a ChatGPT plangithub.com
- Claude Code on OpenRouterRun Claude Code on your OpenRouter keyopenrouter.ai
Have a sorting job eating part of someone's day?
Tickets, leads, invoices, product data. Testing it takes an hour. Wiring it into your inbox or CRM, with a safe fallback for the unsure cases, is what I set up.