Why I'm Building My Own AI Model Router Instead of Using Claude's New Smart Routing

I spent last week getting excited about Claude's new smart routing feature. Finally, I thought, I could delete the hacky model selection logic I'd been maintaining for three months and let Anthropic handle the complexity of choosing between Claude variants for each request.
But before I made the switch, I decided to run some numbers on what I'd actually built. What I found made me pause—and ultimately convinced me to keep building my own routing system instead of handing control back to the platform.
What I Actually Built
My routing setup is embarrassingly simple. Three months ago, I got tired of manually switching between Claude models depending on what I was trying to accomplish, so I built a basic dispatcher that sits between my requests and the API.
The logic routes based on three factors: task type (creative, analytical, coding), expected response length, and my cost threshold for the session. Every request gets logged with the model used, token counts, actual cost, and a quality rating I assign afterward.
I built it because I found myself consistently over-modeling. I'd default to Claude-3.5-Sonnet for everything, even simple tasks that Haiku could handle just fine. The routing forced me to be more intentional about model selection.
The Numbers: 2,847 Requests Later
Looking at three months of data, my total spend was $127.32 across 2,847 requests.
When I mapped those same requests against Claude's documented auto-routing criteria, the estimated cost would have been around $198—roughly 56% higher than what I actually paid.
The difference comes down to optimization targets. Claude's routing appears to prioritize user experience: faster responses, higher-capability models as defaults, erring on the side of over-provisioning rather than under-delivering.
My system prioritizes cost-per-quality ratio. For creative writing tasks, I route to Haiku first and escalate to Sonnet only if my post-response quality rating falls below a threshold. Turns out my creative projects don't need the most powerful model most of the time.
What "Smart" Really Optimizes For
This isn't a criticism of Claude's approach. Platforms optimize for engagement and satisfaction metrics across millions of users. Default to the better model, avoid user frustration, keep people using the service.
But my optimization function is different. I'm optimizing for my specific use cases, budget constraints, and quality standards. When Claude routes creative writing to Claude-3.5-Sonnet by default, that makes sense for their average user experience. When I route it to Haiku first, that makes sense for my workflow and wallet.
The gap between platform optimization and personal optimization is what keeps me building my own tools.
The Hidden Complexity I Discovered
Building the routing logic forced me to understand my actual usage patterns in ways I hadn't expected. I learned that I genuinely need Claude-3.5-Sonnet for complex analysis and multi-step reasoning, but Haiku handles most of my daily writing and brainstorming just fine.
More importantly, the routing system became a mirror for my thinking patterns. I started noticing when I was reaching for the expensive model out of habit versus genuine need. The constraint of having to justify model selection—even to my own automated system—made me more intentional about prompt crafting.
What I'm Still Building
The current system is crude, but it's taught me what's worth building next. I'm working on feedback loops that use my quality ratings to improve future routing decisions. Instead of static rules, the system could learn which task types genuinely benefit from higher-tier models.
I'm also building context awareness—routing based on conversation history, not just the current prompt. If the previous three exchanges were handled well by Haiku, maybe the fourth should stay there too.
The most interesting piece is custom model hierarchies for different project types. Research writing gets a different escalation path than creative fiction, which gets a different path than code reviews.
The Real Question I'm Wrestling With
Is the control worth the maintenance overhead? My routing logic breaks whenever providers change pricing or add new models. I spent two hours last month updating it when Anthropic adjusted their rate limits.
Platform routing "just works" but optimizes for someone else's goals. My routing works for my goals but requires constant attention.
Maybe the answer isn't binary. I've been thinking about hybrid approaches—using platform routing as a baseline but with override rules for my specific edge cases. Or building routing logic that can fall back to platform defaults when my custom rules don't have enough confidence.
Where This Leaves Me
I keep thinking about this tension between convenience and control across all the tools I use. Every time a platform adds "smart" automation, I face the same choice: am I comfortable with their definition of optimal?
The routing question feels like a microcosm of something larger. The convenience is real—Claude's auto-routing would save me maintenance time and probably deliver better average performance for tasks I haven't optimized for. But the cost difference over three months suggests the tradeoffs might be bigger than they appear on the surface.
I'm most curious about how many of these automated convenience features I accept without measuring what they actually cost—not just in money, but in agency over my own workflows.