Treating the router as a product boundary reframes it the right way, because the moment two models sit behind one interface you've made an implicit contract about latency, format, and cost that callers depend on. The hardcoded if works until you need per-model fallbacks, versioning, and a way to shift traffic without a redeploy, and by then it's a boundary whether you designed it as one or not. Do you version the routing policy separately from the app, so you can change routing without shipping the whole service?