Routing an inbox is a sorting problem, and most sorting problems are smaller than they look. Before you train or buy a classifier, write down every routing decision a human makes today and ask whether it can be expressed as a condition on data you already have. In practice, a large share of the traffic resolves on fields that arrive with the message: the sender domain, the From header, an account ID in the subject or body, the language, a plan tier pulled from your billing system, or an SLA flag from the contract record.
Rules win on four properties that matter in production. They are auditable: you can show a regulator or a customer exactly why a message went where it went. They are fast: no model call, no queue for an inference endpoint. They are cheap: they cost nothing per message. And they are explainable to the people who have to live with them, which matters when a support agent disagrees with a routing decision.
There is research support for keeping the simple approach in the loop rather than replacing it. A study of IT ticket classification found that simple algorithms with appropriate linguistic features delivered high prediction quality, and the authors emphasized that the linguistic representation stayed highly explainable (IT Ticket Classification: The Simpler, the Better). Explainability is not a soft virtue in routing. It is the thing that lets you change the system without fear.
Rules also handle a class of traffic that classifiers handle badly: messages where the right answer is decided by policy, not by semantics. A message from a domain on your legal hold list goes to legal, whatever it says. A message from an address on your blocked list gets dropped or quarantined. No model should be allowed to override those.
Email sender rules deserve special attention because they are stricter than most people assume. Yahoo requires all senders to authenticate with SPF or DKIM, keep spam complaint rates below 0.3%, and have valid forward and reverse DNS records (Yahoo Sender Hub). Gmail applies similar thresholds, with bulk senders required to set up SPF, DKIM and DMARC and to keep spam rates below 0.3% (Gmail email sender guidelines). Those numbers shape your routing design in a concrete way: if you run an outbound queue, you need a rule that holds messages when a sender's complaint rate crosses the threshold, and you need to know that a routed-to-spam message may never reach the customer at all.
A practical rule tier list looks like this:
| Tier | Signal | Example rule | Action |
|---|---|---|---|
| 1 | Compliance and policy | Sender on legal hold list | Route to legal queue, never suppress |
| 2 | Identity | Sender domain matches known partner | Route to partner desk, skip classifier |
| 3 | Account state | Account tier is enterprise | Route to named account team |
| 4 | Language | Detected language is not supported | Route to language-specific queue or escalate |
| 5 | SLA | Contract SLA tier is premium | Set priority and route to priority queue |
| 6 | Content keywords | Subject contains "invoice" or "refund" | Route to billing |
Order matters. Run tier 1 before tier 2 and tier 2 before tier 6, because a keyword match should never beat a compliance hold. Write the order down and version it like code.



