Cost · MIT

Pick a model tier, not a flagship

Choose the cheapest model tier that can actually do the task instead of defaulting to a flagship, and verify the choice before spending on it.

Installing a skill

Version 1.0.0 · 143 lines

When an agent loads it

What the file covers.

Use when selecting a model for a feature or agent, when one model dominates a bill, or when asked to cut inference cost without losing quality.

  1. 01

    The five tiers

  2. 02

    What each tier is actually for

  3. 03

    The procedure

  4. 04

    Verify before you spend

  5. 05

    The ceiling is a structural cap

  6. 06

    Do not

The file

The whole SKILL.md, and where it goes.

In Lobstack, open Skills › Add a skill and paste it. In Claude Code, make the folder and paste it in, then start a new session.

shell
mkdir -p .claude/skills/lobstack-model-tier
# paste SKILL.md into .claude/skills/lobstack-model-tier/SKILL.md
lobstack-model-tier/SKILL.md143 lines
---name: lobstack-model-tierdescription: "Choose the cheapest model tier that can actually do the task instead of defaulting to a flagship, and verify the choice before spending on it. Use when selecting a model for a feature or agent, when one model dominates a bill, or when asked to cut inference cost without losing quality."license: MITmetadata:  title: "Pick a model tier, not a flagship"  version: 1.0.0  author: lobstack  category: cost  tags: [cost, routing, models, gateway]--- # Pick a model tier, not a flagship Defaulting to the best available model is the most common and most expensivedecision in an LLM codebase, and it is almost never a decision — it is theexample from a quickstart, left in. claude-haiku-5-5 costs $0.1/$0.5 per million tokens in/out. claude-fable-5-1 costs $10/$50. That is roughly 100× on the same tokens, which is why "which model" is a cost decision before it is a quality one. Prices last checked against each provider's own page on 2026-10-16. ## The five tiers Lobstack groups every model into five capability tiers and routes "auto"requests to the cheapest tier that can handle the request. The thresholds and thelead model of each tier are the router's actual configuration: | tier | complexity | what `auto` serves | $/Mtok in/out | relative cost || --- | --- | --- | --- | --- || nano | ≤ 20 | gemini-3.1-flash-lite | $0.25/$1.5 | 0.10× || small | ≤ 40 | claude-haiku-5-5 | $0.1/$0.5 | 0.30× || standard | ≤ 70 | claude-sonnet-5-5 | $2/$10 | 0.67× || premium | ≤ 90 | gemini-3.1-pro | $2/$12 | 2.00× || flagship | ≤ 100 | claude-opus-5-5 | $4/$20 | 5.00× | complexity is a heuristic score from 0–100 over the prompt: length, whether itcontains code, whether it asks for multiple steps, analysis or creative writing,and how long the conversation already is. It is a heuristic and it is worthknowing that, but it is the same one the live path uses — not an approximation ofit. ## What each tier is actually for - nano — classification, routing, extraction, yes/no, tagging, short  rewrites, "is this spam". Anything where the answer is short and the judgement  is shallow. If you are calling a model in a loop over rows, start here.- small — summarisation, straightforward Q&A over supplied context, format  conversion, commit messages, simple tool selection. The workhorse for anything  where the context does the work and the model only has to be careful.- standard — most user-facing chat, most agent turns, code that fits in a  file, multi-step tool use with a clear plan. This is the default you should be  arguing yourself *up* from, not down to.- premium — genuine reasoning over a large context, hard debugging, design  work with real trade-offs, long multi-file changes.- flagship — the tasks where a wrong answer costs more than the call. Use it  deliberately, per call site, and be able to name why. ## The procedure 1. Write the task down in one sentence. If the sentence contains "classify",   "extract", "label", "route" or "reformat", you are in nano or small and you are   done.2. Ask what a wrong answer costs. Cheap to detect and cheap to fix (a draft a   human reads, a retry, a suggestion) argues down a tier. Expensive and silent   (a migration, a payment, a customer-visible claim) argues up.3. Try the cheap tier on twenty real inputs, not on the one you invented.   Cheap models fail differently: they do not produce slightly worse prose, they   miss an instruction or drop a field. Diff the outputs on the failure you care   about, not on taste.4. Set a ceiling rather than a model wherever you can. "auto" plus a plan   ceiling means the easy 80% of traffic lands cheap without anyone tuning   anything, and hard requests still reach a capable model.5. Spend the saving on the prompt. A cheaper model with an explicit,   well-structured prompt beats a flagship on a vague one, and costs a twentieth   as much. See cost-aware-system-prompts. ## Verify before you spend POST /api/gateway/v1/route-preview answers "what would the router do withthis?" without running inference. It is unauthenticated, writes nothing, and usesthe same selectModel() and the same price registry the live path uses — so theanswer is the decision, not a simulation of it. ```bashcurl -s https://www.lobstack.ai/api/gateway/v1/route-preview \  -H 'Content-Type: application/json' \  -d '{"prompt":"Label this ticket: billing, bug, or feature request.\n\n…",       "requested_model":"claude-opus-5",       "plan_tier":"developer",       "expected_output_tokens":8}'``` ```json{  "object": "routing_preview",  "complexity": 12,  "tier": "nano",  "routed": true,  "reason": "Trivial query → nano tier",  "model": { "key": "gemini-3.1-flash-lite", "provider": "google",             "price_per_mtok": { "input": 0.25, "output": 1.5 } },  "token_estimate": { "input": 31, "output": 8, "estimated": true },  "cost_usd": 0.0000198,  "baseline": { "model": "claude-opus-5", "cost_usd": 0.000355, "saving_usd": 0.000335 }}``` Two honesty notes that matter when you quote these numbers: - token_estimate.estimated is true. It is roughly four characters per token,  and the output length is unknowable before generation — pass  expected_output_tokens when you know your own shape. The billed figure always  comes from the provider's usage block on the real request.- baseline is null on an "auto" request. There is nothing to compare  against when nobody named a model, and inventing a flagship comparison is how  every savings claim in this category gets manufactured. ## The ceiling is a structural cap Plans carry a tier ceiling, and the router never exceeds it — so cost control isa property of the configuration rather than something to catch in review: | plan | price | meter | included | tier ceiling || --- | --- | --- | --- | --- || Free | $0/mo | spend | $5 to start, once | standard || Team | $79/mo | spend | $20 of model usage at provider prices | flagship || BYOK | $19/mo | requests | 100,000 requests | flagship || Developer | $29/mo | spend | $10 of model usage at provider prices | flagship || Agency | $99/mo | spend | $30 of model usage at provider prices | flagship || Scale | $299/mo | spend | $100 of model usage at provider prices | flagship | The effective ceiling is the lower of the model you asked for and your plan's.Naming a nano model on a flagship plan caps you at nano, which is the correctbehaviour and occasionally a surprise. ## Do not - Do not pick a model because it was in the example you copied.- Do not benchmark on one hand-written input.- Do not use "auto" and then quote a saving against a flagship. Nobody asked  for the flagship; see lobstack-receipts, rule 2.- Do not assume cheap means fast or dear means slow. They are unrelated; measure  p95 separately.
More for developers

More SKILL.md files, from Cost first.

Cost on its own shelf, or every developer skill.