Rules or a model? The honest answer is a split.
Gmail filters and AI triage are usually framed as old-versus-new. They're actually two failure modes in tension: rules fail by going stale, models fail by being unaccountable. Anyone telling you one side wins outright is selling the side they have.
Where filters genuinely win
- Determinism. A filter does exactly what it says, every time. No drift, no model update changing behaviour under you.
- Auditability. The rule list is the explanation. When mail is misrouted you can find the guilty rule.
- Known senders. For a fixed set of senders that matter — your team's domain, an alerts address — a filter is unbeatable and finished.
Where they structurally can't
- Novelty. A rule can't match a sender you haven't met. The first email from a new customer matches nothing and gets default treatment — which is precisely the mail you most needed routed well.
- Staleness. Rules encode last year's life. Nobody audits filter lists; they accrete until behaviour surprises you.
- Silent failure. When a filter mis-archives something, nothing alerts you. The failure mode of rules is absence.
What a model adds, and what it costs
A language model reads the message and generalizes — new sender, no rule, still a sensible judgment. That solves novelty and staleness in one move. The cost is accountability: ask why a message was buried and you get either nothing or a post-hoc paragraph the model composed after deciding. And the failure is still silent, now with less recourse — there's no rule list to audit.
The split that keeps both halves
The framing error is making one mechanism do both jobs — perceiving the message and deciding what happens. Split them and each side does what it's good at:
- The model perceives: it reads the mail and scores a few features — confidence, sender trust, reversibility, urgency. Generalizes to novel senders, never decides anything.
- A rule decides: a small deterministic policy maps those scores to exactly one outcome. Auditable, unit-tested, and it fails in a declared direction — in Klorn's case, uncertainty degrades to a visible queue, never to the hidden lane, and that's a CI-enforced test rather than an intention.
- Your corrections close the loop the way filters never did: moving a row is the training signal, two identical corrections make that sender deterministic (the model is skipped), and learned behaviour can promote senders to visible lanes but can never bury one.
How the perception half is chosen isn't a vibe either — we benchmark it across models with a committed eval set anyone can re-run: the six-model bake-off. Rules where rules win, a model where a model wins, and a visible seam between them.
Try Klorn free