Step 1: sorting models into tiers
There is no hand-maintained list of “good” and “cheap” models. Each model is placed in a tier when routing runs, in this order:- Large by family name. Identifiers containing
opusorfable, orgpt-6-astra, are Large regardless of price. - Small by family name. Identifiers containing
haiku,-mini,-nano,-liteor-lunaare Small regardless of price. - By blended price. Otherwise, the blended price is the average of the model’s input and output price per million tokens, from CorePillar’s model catalogue:
A model with a listed price of zero falls back to Mid. A model identifier that is not in the catalogue at all is priced at a default $3.00 blended and so lands in Small, unless its name matches a family rule.
The boundaries sit in gaps between price clusters, so a small price change does not reshuffle the tiers. The 8 and a cluster at $9 (Claude Sonnet 4.5 and 4.6, Kimi K3), so those land in Large.
Examples from the current catalogue of 62 models across 11 providers:
If the same model is connected to a project twice (for example after a key rotation), it counts once. The row with an API key attached wins; between equals, the later one wins.
Step 2: scoring the message
Each message gets a difficulty score from 0 to 1. It is computed from the text that will be sent, so if Optimise is on, the trimmed text is scored. The score starts at 0.28, deliberately below the Small ceiling of 0.42. An unremarkable message therefore routes to Small, and something has to argue for more.Signals that raise the score
Difficulty phrases count at most twice. They are checked in the order listed. The first one that matches adds its full weight, the second adds half its weight, and any further matches are ignored. “Design a schema and explain the trade-offs, step by step” is harder than “design a schema”, but not three times harder.
Signals that lower the score
Only the first of these that matches counts, checked in the order listed.
The final score is clamped to between 0 and 1.
Step 3: turning the score into a tier
Measured examples (first message of a conversation, Optimise off):
Step 4: the second opinion
Rules are confident in the middle of a range and guess at the edges. When a score lands within 0.1 of a boundary (roughly 0.32 to 0.52, or 0.58 to 0.78), a small, fast model is asked to classify the message instead.
It runs at the same time as the AI part of privacy screening, which every message waits for anyway, so it adds no time to the answer.
Step 5: choosing the model
- If you picked a model, it is used. Routing never overrides an explicit choice. The reason reads “You picked this model”.
- On Auto, ModelHub takes every connected model whose tier is at or above the required tier and picks the one with the lowest blended price.
- If none reaches the required tier, it uses the most capable connected model, so a project with only small models still answers.
Step 6: grading the decision afterwards
When the answer is complete, ModelHub checks whether the choice was right, using something the router could not know in advance: how much the model actually wrote. This is arithmetic, not another AI call; paying a second model to grade the first would double the cost the feature exists to reduce. The grade compares the tier the score called for (the second opinion is not used here) with the tier of the model that ran.
For an Overpowered answer, ModelHub names the cheapest connected model at the needed tier and prices this exact answer on it, using the real token counts. That becomes the Use suggestion and the saving shown on the answer card. For an Underpowered answer, the card suggests the cheapest connected model that reaches the needed tier, or failing that the strongest model above the one that ran.
Savings
For each answer where Auto chose the model, ModelHub records:saved = cost of this answer on the most expensive connected model − what it actually cost
using the provider’s real token counts, floored at zero. Answers on a model you picked yourself are credited with no saving. These add up to Saved by auto-routing on the AI Usage page.
Guarantees
- Your explicit choice always wins. Routing only acts on Auto.
- Nothing is hidden. Every answer shows which model ran, what it cost, the verdict, and the signals behind the score.
- Routing never blocks a message. The scoring is local arithmetic; the second opinion has a short timeout and falls back silently.
- A dead key is not a dead end. If the chosen model’s API key is revoked or rejected by the provider, the organization’s other keys for the same provider are tried before the message fails. This only happens before the first word arrives; a key is never swapped mid-answer.
Limits worth knowing
- The score reads the shape of the message (length, code, keywords), not its meaning. A short message that is genuinely hard can score low; pick a Large model yourself when you know.
- Keyword matches are in English.
- Tiers come from price, which tracks capability closely but not perfectly.
- With only one model connected, every message goes to it and there is nothing to save.