Fivexer
Start free

Skills-Based Routing, Explained

skills based routingslakycworkflows

Skills-based routing assigns each incoming piece of work — a ticket, a case, a field job — to the person best qualified to handle it, automatically. Instead of taking the next agent in line or whoever grabs it first, the system compares what the work needs against what each person can do, and makes the match.

That one-sentence version hides most of the interesting decisions. This post walks through what a "skill" actually is as a routing input, the four decisions inside every assignment, and why "most skilled" and "right person" are not the same thing.

If you are choosing between assignment models rather than implementing one, start with our round-robin, load-balanced and skills-based routing comparison. This article goes deeper into the skills-based model and the controls it needs.

A dispatcher at a control desk, phone to ear, schedule boards covering the wall behind him.
A dispatcher at a control desk, phone to ear, schedule boards covering the wall behind him.

What a skill is, as data

Every skills-based system reduces to three kinds of input:

Tags describe what a person can work on at all: billing, plumbing, lang:de, kyc. A task carries tags too, and the overlap between the two is what makes someone a candidate in the first place. No overlap, no consideration — tags define the pool.

Weights rank preference inside the pool. A weight says "route billing to Ana at strength 80 and to Tomas at strength 20": both are eligible, Ana is preferred. Weights encode seniority, specialization or a deliberate training rotation without writing if-statements.

Thresholds are the hard floor. "This case requires German at level 3 or above" is not a preference — someone at level 2 must never receive it, no matter how idle they are. A threshold is checked before any scoring happens, and failing it removes the candidate entirely.

The distinction between weights and thresholds matters more than any other design decision in a routing system. A weight expresses better; a threshold expresses allowed. Systems that blur the two end up sending a level-2 speaker a level-3 case on a busy day, because "preferred" quietly degraded into "if available."

The four decisions inside one assignment

When a task arrives, a routing engine makes four decisions in order:

flowchart LR
  T[Task] --> P[Pool]
  P --> R{Rules}
  R -->|fails| X[Excluded]
  R -->|clears| S[Score]
  S --> A[Arbitrate] --> W[Assigned]

1. Who is in the pool? Tag overlap, minus anyone excluded outright. Exclusions deserve to be absolute: a zero-weight veto — never route gas-certified work to Dana — should remove the candidate before anything is scored. If a veto can be outweighed by a good score, it is not a veto. It is a suggestion.

2. Who clears the hard rules? Thresholds, capacity limits, and any other constraint that is a yes/no question. Everything here is deterministic and inspectable: for any candidate who was removed, the system should be able to name the rule that removed them.

3. Who scores highest? Among the survivors, weights, priority and any learned signal rank the candidates. This is the only step where "better" lives.

4. Who actually gets it? Arbitration, and it is where load and fairness enter. If your strongest agent scores highest on every contest, pure score-ordering routes them everything until they drown while a competent colleague idles. Fairness policies — deterministic best-match, load penalties, spread-the-work modes — decide how much of a score advantage a busy person needs before winning yet another task. That failure mode gets its own post later in this series.

Most vendor documentation describes step 3 and calls it routing. Steps 1, 2 and 4 are where the outcomes are actually decided.

A worked example

Here is one ticket through all four decisions. The team, five people:

The ticket: a billing dispute from a German-speaking customer, tagged billing, requiring German at level 3 or above.

One billing dispute through pool, hard rules, score and arbitration — computed outcome:

  1. Five people carry the team's tags. One dispute arrives: tagged billing, and it needs German at level 3.
  2. Pool, then hard rules, then score. Jonas carries no billing tag. Priya is level 2 against a floor of 3. Mia is at capacity. Ana clears every rule and scores 80.
  3. The winner takes it — and the record keeps every name that did not, with the rule that removed each one.

Pool: tag overlap on billing puts Ana, Tomas, Priya and Mia in. Jonas — the best German speaker on the team — is out before anything is scored, because he doesn't work billing. Tags define the pool, and no proficiency elsewhere buys a way in.

Hard rules: the German threshold removes Priya at level 2 against a floor of 3. Mia's backlog cap removes her. Two candidates remain.

Score: Ana's billing weight of 80 ranks her above Tomas at 20. Rank alone assigns nothing yet — it only orders the qualified.

Arbitration: with both able to start now and no fairness pressure in play, the higher score wins. Ana gets the dispute, and the record keeps who was considered, which rule removed whom, and why she outranked Tomas.

Now the variant that shows why the ordering matters. Suppose Ana and Tomas are both at capacity. A threshold-respecting engine reports no eligible person and queues the ticket — visibly, with the reason attached — until someone frees up or someone's skills change. A scoring-only system, where the level requirement is just a heavily weighted preference, quietly hands the dispute to Priya at level 2. One of these systems is telling you about a staffing gap. The other is hiding it inside plausible-looking assignments.

Why "most skilled" is not "right person"

A support agent in a headset, mid-call, reading his screen.
A support agent in a headset, mid-call, reading his screen.

Three situations where the highest-scoring candidate is the wrong assignment:

The second one is the one you cannot see in a single decision. Here are six ordinary billing tickets and three reviewers of near-equal strength — weights 100, 95 and 90 — under two arbitration policies at once. Watch the queue drain twice:

Six tickets, three near-equal reviewers, two arbitration policies — computed outcome:

  1. 3 agents, 6 tasks, same team — Best match vs Balanced. Every outcome below is computed, not drawn.
  2. Task t1 (billing) — Best match: Sara (score 100); Balanced: Sara (score 100).
  3. Task t2 (billing) — Best match: Sara (score 100); Balanced: Sara (score 100).
  4. Task t3 (billing) — Best match: Sara (score 100); Balanced: Iris (score 95).
  5. Task t4 (billing) — Best match: Sara (score 100); Balanced: Sara (score 100).
  6. Task t5 (billing) — Best match: Sara (score 100); Balanced: Iris (score 95).
  7. Task t6 (billing) — Best match: Sara (score 100); Balanced: Noor (score 90).
  8. The tally — Best match: Sara 6 · Iris 0 · Noor 0; Balanced: Sara 3 · Iris 2 · Noor 1.

Pure score ordering gives Sara all six. She is, after all, the highest scorer on every single pass — the decision is correct six times and the outcome is indefensible. The balanced policy subtracts a small penalty per open item (5% of the pass's median score), which is enough to flip a near-tie: 3, 2, 1.

The honest caveat, since it decides whether this helps you: that penalty only moves near-ties. Widen the gap to 100 against 60 and the specialist keeps winning, correctly — a load nudge is a bias, not a cap. Genuine capacity limits are hard rules, and they belong in step 2.

Routing quality is mostly constraint quality. The scoring function gets the attention; the vetoes, thresholds and caps do the work.

Where machine learning belongs — and where it must not

A learning layer can genuinely improve routing: observing who resolves which kinds of work quickly, and shifting weights accordingly. It belongs strictly inside step 3. Learned preferences may re-rank eligible candidates; they must never widen the pool, override a veto, or waive a threshold.

That ordering is a safety property, not an implementation detail. A system where learning can override hard rules will eventually route a case to someone it was never allowed to reach — and will do it precisely when the statistics look most confident. In Fivexer's engine a zero-weight veto is absolute, the rules are enforced first and deterministically, and learning operates only on what survives them. The full mechanics are in how matching works.

The part everyone skips: the record

Every assignment answers a question someone will eventually ask: why did this go to them? A skills-based system can answer it properly — who was considered, who was excluded and by which rule, and why the winner won — but only if it records the decision as it happens. A log of outcomes ("task 4812 → Ana, 09:42") is not that record.

If you operate under compliance review, or ever will, treat the decision record as a first-class requirement when evaluating routing systems, not a nice-to-have.

Building the skill taxonomy without boiling the ocean

The most common way skills-based routing fails is not the engine. It is a taxonomy designed in an afternoon and never touched again. Some rules that keep it maintainable:

Start from the labels you already use. Your helpdesk categories, dispatch job types or case types are the tags your team already thinks in. Adopt them as-is rather than inventing a cleaner scheme nobody recognizes; refactor once routing is trusted.

Only encode a skill if it changes an assignment. A tag that every person on the team carries routes nothing — it is documentation, not routing input. The test for adding a skill: name two people this would route differently.

Begin with pool tags, add thresholds only where "cannot" is real. Most work needs coarse fit, not graded proficiency. Reserve levels and thresholds for cases where a wrong assignment is a genuine failure — certifications, languages, regulated case types — because every threshold you add is a rule someone must keep true.

Keep keys stable; change display names freely. The tag is an identifier that workers, tasks and historical decisions all reference. Renaming billing to payments across a live system is a migration, not an edit.

Give the taxonomy an owner and a review cadence. Certifications lapse, new hires go untagged, products get renamed. A quarterly review of "skills nobody carries" and "workers holding skills they no longer have" catches drift before it becomes a pattern of confident misroutes.

Frequently asked questions

Is skills-based routing only for contact centers?
No. The pattern applies to anything assignable to people: support tickets, field-service jobs, KYC and compliance cases, annotation and review work, engineering issues. Contact centers named it, but the mechanics are domain-neutral.

How many skills do we need to define?
Fewer than you expect. Most teams are well served by five to fifteen routing-relevant tags plus a small number of leveled skills where thresholds genuinely apply. If your taxonomy has more entries than you have people, it is describing your org chart, not your routing.

Can we still use round robin inside a skill group?
Yes, and it is a sensible arbitration policy: skills decide who may take the task, rotation decides who does among equals. Fairness modes generalize this — they handle the case where candidates are qualified but not equal.

Where does machine learning fit?
Strictly inside the ranking of already-eligible candidates. It should never widen the pool, cross a veto, or waive a threshold. If a vendor cannot state that boundary crisply, assume it does not exist.

How do we know it's working?
Watch reassignment rate (how often a human overrides the engine), time-to-first-action, the spread of load across qualified people, and whether "why did this go to them?" is answerable for any assignment you pick at random.

When you don't need any of this

Honestly: a small team doing interchangeable work does not need skills-based routing. If any of five people can handle any incoming item, round robin distributes fairly, everyone understands it, and there is nothing to configure. The comparison between the strategies — and the signals that you have outgrown the simple one — is the subject of next week's post, Round Robin vs Load-Balanced vs Skills-Based Routing.

The tipping points are specific: the first time a task must not go to certain people (certification, language, conflict of interest), the first time a wrong assignment costs real money or a compliance finding, or the first time your best person is visibly overloaded while the queue backs up. Any one of those means the simple strategies are now silently making decisions you would not sign off on.

See it decide

The fastest way to understand skills-based routing is to watch one run. Our live demo runs a real routing engine in your browser — tags, vetoes, thresholds, fairness and the per-decision record, on simulated work you can inspect. If you would rather start with your own tasks, the free tier covers 10,000 routed tasks a month, no card required.

Photography via Unsplash.

New guides, when there are new guides

Nothing else. No product news, no sequence, and an unsubscribe link on every one.