Overview
How might we let people trade speed, quality, and cost before send without exposing raw model codenames?
When to use
- ChatGPT, Claude, Perplexity, and Gemini where Flash vs Pro or effort tiers change latency and depth.
- Products with paid tiers where premium models need honest locks, not surprise downgrades after send.
- Composer-first apps where spend and wait time should be visible before the first token.
- Threads where switching models mid-conversation should leave a visible indicator in the bar.
When to skip
- Single-model products with no meaningful quality or cost tradeoff.
- Audiences who should never see model names; prefer automatic routing with outcome labels only.
- Every nested dialog; one composer-level control is usually enough.
States
Design the picker and what it promises, not only the model name in a dropdown.
- 01
Default
A tier is preselected for the session or thread. The bar shows the current choice in plain language.
- 02
Browsing
The picker opens with speed, quality, and cost cues beside each option. Locks appear on gated tiers.
- 03
Selected
The person picks a model or effort level. Confirmation copy updates before the next send.
- 04
Locked
Free or plan limits block a tier. Upgrade or unlock paths are honest, not hidden until after failure.
- 05
Sending
The message goes out on the selected tier. The bar still shows which model handled the turn.
- 06
Switched
Mid-thread change applies to the next message. Prior answers stay labeled with the tier that produced them.
Key UX elements
The parts that must be present for model choice to feel fair and legible.
Picker
Put tier choice on the composer bar.
One tap to compare options beats burying model names in account settings after a slow answer.
Label
Show the real model name, then explain it.
Use the exact model string people recognize (Sonar, GPT-5.4, Claude Sonnet 4.6). Pair it with a one-line job description so the list stays scannable.
Tradeoff
State speed, quality, and cost together.
Each row should say what you gain and what you spend: wait time, credits, or tool access.
Lock
Gate premium tiers honestly.
Show locks and upgrade paths in the picker. Do not silently downgrade on free plans after send.
Indicator
Keep the active model visible after pick.
The bar or message header should still show which model answered, especially after a mid-thread switch.
Persist
Remember choice per thread or workspace.
Session-level defaults reduce re-picking on every message without hiding the current model.
Rules
Raw internal model IDs with no speed/quality/cost explanation.
Hidden downgrades on free tiers without locks or honest gating.
Changing the model mid-thread without a visible indicator.
Equating “Pro” with quality when it only means higher rate limits.
Evidence
| Product | Implementation |
|---|---|
| ChatGPT | Model and mode choices with outcome-oriented labels in menus. |
| Claude | Model and effort on the composer for spend and quality before send. |
| Perplexity | Model picker on the bar; free tiers show locks on premium models. |
| Gemini | Flash nickname on the bar; picker uses plain-language thinking copy. |



