Downsize
Flags sessions whose shape matches a class where a cheaper model is worth reviewing.
Downsize flags sessions whose structural shape matches a class of work where a cheaper model in the same provider family is worth a look.
tj optimize downsize
What it does
The analyzer looks for sessions with short input (under 5K tokens), short output (under 500 tokens), and few tool calls (5 or fewer). That shape is a signal, not a verdict. It says the work looks light enough that a smaller model in the same family is worth reviewing.
It pairs premium models with cheaper alternatives in the same family:
| Provider | Premium → cheaper |
|---|---|
| Anthropic | claude-opus-4-7 / claude-opus-4-6 / claude-sonnet-4-6 / claude-sonnet-4-5 → claude-haiku-4-5 |
| OpenAI | gpt-4o → gpt-4o-mini; o3 → o4-mini |
gemini-2-5-pro → gemini-2-5-flash |
Pricing for both sides is resolved at runtime from the packaged pricing table. If either model is missing from that table, the candidate is skipped rather than shown with an invented number.
How to read the output
For API plans the finding is dollar-denominated: what the flagged sessions would have cost on the smaller model versus what they actually cost, plus a projected monthly figure. Subscription plans see token-share framing (how many fewer tokens of your allocation the switch would have used) with no dollar spend claim. Local plans see token counts only. Unknown plans have the finding suppressed with a note explaining why.
tj optimize --json mirrors the same data with top-level plan and pricing_mode fields.
Honesty caveat
Downsize does not claim quality equivalence. It reports that the shape of the work matches a class worth a closer look, not that the cheaper model would have produced the same output. The mandatory caveat surfaces in every render mode:
Candidate-flagging heuristic, not a quality judgment. Review the example sessions before changing models.
You will never see “safe to downgrade” or “would have worked.” Review the example sessions before you switch anything.