Most teams treat every failed draft the same way. The draft missed the bar, so the system tries again, maybe with a slightly reworded prompt, and eventually someone gives up and ships the weak output or drops the request. That works badly because "missed the bar" bundles three different problems with three different fixes.
Before you can build a fallback ladder you need to know which of these fired:
- A scored failure. The output parsed fine and passed validation, but an evaluator scored it below your threshold. The model understood the task and produced a competent attempt that is not good enough.
- A structural failure. The output does not parse: invalid JSON, a missing required field, a truncated response, a wrong type. There is no score because there is nothing to score.
- A policy failure. The output touches something your rules forbid: personal data in a public field, a claim you cannot make, a competitor comparison your legal team blocked, an unsafe recommendation.
Each maps to a different next step in the ladder, and the cost of getting the mapping wrong is real money and real risk. Retrying a policy failure on a stronger model does not remove the policy problem. Retrying a scored failure on the same cheap tier usually produces another draft that scores almost identically, because the score gap tells you the model could not do better with this prompt.
Braintrust makes this point directly: routing on cost or prompt complexity alone can lower spend while sending worse answers to users, and a route should only go to a cheaper model after that model clears the acceptance criteria for that traffic class (Braintrust on model routing). Treat your fallback ladder as the same kind of policy: each rung has an entry condition, not a vibe.



