I benchmarked 8 LLMs for a niche production app. The flagship cost 5.8x more - and lost. A developer benchmarked eight LLMs for a niche BaZi birth-chart app and found that the flagship model cost 5.8x more yet lost on accuracy. The developer built a routing layer with ordered fallback chains and error classification, revealing that generic benchmarks are useless for niche domains and that 429 errors can be two different failures. My app generates personalized readings for BaZi — Chinese "Four Pillars" birth charts. Every reading is an LLM call, every call costs money, and the domain is full of trap terminology that models love to botch. So before launch I benchmarked every candidate model on my actual workload, and then built the routing layer around what the benchmark found. The results generalize to any "LLM in a niche domain" app, so here they are — including the part where the most expensive model lost to one costing 5.8× less. Generic benchmarks were useless to me. My acceptance criteria were: Running my own corpus through the candidates produced findings no leaderboard would have surfaced: 400 InvalidParameter: The value of the enable thinking parameter is restricted to True , so you pay for the inner monologue whether you want it or not. On one streamed request that was 286 reasoning events before the first character of the actual answer: 2.1s to the first reasoning token, 10.5s to the first character a user can read. On list price the flagship already costs What survived: a cheap-and-accurate small model for the free tier, and a mid-tier model for paid — with the surprise that the mid-tier's previous generation was equally accurate at lower cost, which is exactly what you want in a fallback. The eval's outputs — which models are allowed, in what order, at what price — live in one file. A Route is a provider endpoint + key plus a model plus that model's list price: js const PRICE: Record