Most businesses solve work routing four times. The support desk has case assignment rules. Telephony has its own queues. Chat has a different queue. Field service has a dispatch board. Each was bought or built for its channel, and each holds its own idea of who is available.
The cost shows up on a busy afternoon. An agent is at their limit on cases, so the case system stops assigning — and the phone queue, which knows nothing about cases, puts a call through anyway. Nobody made a mistake. Two systems each had half the picture.
One router, any kind of work
The insight is that these are the same problem: a unit of work needs the right person, now, and "right" means qualified, available and not already overloaded. The channel is a property of the work, not a different problem.
So routing in xMatix is polymorphic. Work is identified by which entity it is and which record — a case, a service order, a lead, a visit plan — and the router does not care which. Any entity can be routed.
That single decision removes a class of bug rather than fixing instances of it. Capacity is capacity across everything a person is doing, so the phone cannot overload someone the case system just protected.
What the router considers
- Queue — the pool the work belongs to.
- Skill — a required competence the person must hold. Without it, routing is fast and sends the wrong person.
- Capacity — a maximum concurrent workload and the current load against it, so assignment respects a ceiling instead of assuming one.
- Presence — whether the person is actually available right now, which is the state that changes most often and matters most.
- Direct assignment and exclusions — for the cases where a human already knows the answer, or where someone must be skipped.
Work also carries a capacity weight, because not all items cost the same. A complex escalation and a quick password reset should not consume the same share of a person's day, and a router that treats them identically will overload the people handling the hard things.
Accept, decline, transfer, reassign — all first class
A router that can only push work produces a predictable failure. Someone receives their sixth item, knows it is impossible, and has no supported way to say so — so the information surfaces later as a missed commitment instead of immediately as a decline.
Making refusal an operation rather than an exception keeps the plan honest. The same applies to transfer and reassign: work moves for legitimate reasons all day, and a system that treats every move as a correction accumulates a distorted record of what happened.
Acceptance also closes the loop that assignment alone leaves open — the difference between "the system gave this to someone" and "someone has it".
The supervisor's view is the point
Routing rules are invisible when they work, which makes them hard to trust. The supervisor snapshot — queue backlog alongside per-person presence and current load — is what makes the mechanism legible.
It answers the question a team lead actually has on a bad afternoon: is this a staffing problem, a skills problem, or a routing problem? Backlog with idle qualified people is a routing configuration issue. Backlog with everyone at capacity is a staffing one. Those need opposite responses, and without the view they look identical.
Where this connects to everything else
Because routing is generic, the same engine sits under support cases, telephony queues, and field work — and the field dispatch console is a visual surface over the same underlying assignment, with map, timeline and board views for a day's work.
Calls route to a queue, a person, or an AI agent identity through the same routing model, so a business adding automated handling to a channel is configuring a target rather than adopting a parallel system.
What we would tell another team
Before building a second assignment mechanism for a second channel, check whether you are about to duplicate the first. The tell is that both need to know who is available — and once two systems answer that question separately, they will disagree, and the disagreement lands on the customer.
Then make refusal a supported operation. A routing system where work can only be accepted is measuring compliance, not capacity.
Related: Field service dispatch · xMatix Support · Telephony & Messaging
