How ICA Solves Complex Enterprise Routing — SupportLogic
Intelligent Case Assignment

Why Enterprise
Case Routing Is
Fundamentally Broken
— and How ICA
Fixes It

12 min readTechnical Blog March 09 2026SupportLogic Engineering v8.10 +Current Release
ICA Assignment Pipeline
01
CRM Ingestion
Salesforce / ServiceNow / Zendesk
Source
02
ICA Ingestion Service
50%+ faster than Fivetran path
SFDC
03
ML Scoring Engine
5 pillars · weighted formula
Core
04
Queue Rules Applied
Priority buckets · Round Robin · Limits
Config
05
Availability Hard Limits
OOO · Shifts · Capacity guards
Guard
06
Final Ranking
Best agent surfaces to top
Rank
Assignment Written Back to CRM
Manual or automatic · every 2 minutes
Done
01

What Rules-Based Routing Gets Wrong

Every enterprise support organization eventually hits the same wall: the routing rules they wrote six months ago no longer reflect reality.

Traditional case routing is built on deterministic logic — if/then rules, skill tags, queue membership, and round-robin rotation. These tools work well when your support team is small, your product line is narrow, and your customers behave predictably. None of those conditions hold at enterprise scale.

Consider what actually needs to happen when a new P1 case arrives at 2:47 AM from a strategic enterprise account in Singapore. A rules engine might check: is the agent in the APAC queue? Are they marked available? Does the case contain the keyword “critical”? But it cannot tell you: which agent in that queue has the most relevant recent experience with this account’s specific product version? Who has 40% bandwidth remaining versus 90%? Whose shift window overlaps best with the customer’s own business hours for the next 24 hours?

Rules systems fail at the combinatorial complexity of enterprise routing. The moment you add regional coverage, tiered support entitlements, specialist skill matching, real-time workload awareness, and fallback escalation logic, you have a problem that no static rule set can solve without becoming an unmaintainable tangle of exceptions.

53%
Reduction in MTTR reported by Coveo within 6 months of ICA deployment
Mean time to resolution
31%
Increase in first-day case resolution across ICA customers
vs. rules-based baseline
56%
Reduction in escalations achieved after full ICA rollout
Escalation rate delta
2 min
ACA Service cycle time — how frequently ICA evaluates and assigns new cases
Auto-assignment cadence

The fundamental limitation isn’t effort — engineering teams often spend months building increasingly elaborate rule trees. The limitation is that routing quality is a function of real-time, multi-dimensional data that cannot be encoded in static rules. You need a system that can reason about five different variables simultaneously, weight them against each other, and update that reasoning every time a case is assigned, an agent goes OOO, or a customer escalates.

That is exactly the problem ICA was built to solve.

02

The Five-Pillar Scoring Engine

ICA’s recommendation engine computes an overall score for every candidate agent on every eligible case using a weighted average of five independently trained ML models — called “pillars.” Each pillar answers a distinct question about the agent-case fit.

33%
Time Overlap
Measures the overlap between the agent’s active hours and the customer’s predicted activity window over the next 24 business hours. Uses shift data (working or assignment hours) minus any scheduled OOO, with ML-predicted hours as a fallback for unshifted agents. Weekend hours are skipped automatically. The higher the overlap, the better the agent can provide responsive support.
33%
Bandwidth
Measures an agent’s remaining capacity based on their current backlog, weighted by case priority and status. A Priority 8 case counts as 8 separate cases in the formula. New-status cases carry extra weight. Hard-stop capacity limits (active backlog and hourly assignment limits) can override ML scoring entirely when an agent is at their ceiling.
17%
Customer History
Evaluates the agent’s track record with the specific account (not individual reporter). Factors include: average case sentiment during ownership, sentiment trend, need-attention scores, resolution time, and whether the agent was the final resolver. Baseline is 20% — scores above indicate positive history, below indicate prior negative interactions.
17%
Skills Match
Uses three ML sub-models: a Case Skills model (detects keywords from the incoming case), an Agent Skills model (monthly scan of agent history), and a Skill Matching model. Powered by an Ontology file of curated keywords. Skill detection uses LLM modules plus logical inference — e.g., “locked out of account” predicts the need for “password reset” even without that exact phrase.
Decay modifier
Penalty for Recent Assignment
A time-decaying score reduction applied to agents who have recently received assignments. Default window: 180 minutes, weight: 0.6. An agent assigned 1 minute ago receives a larger reduction than one assigned 170 minutes ago. This is not a hard block — a penalized agent can still be assigned if they score highest overall. Prevents the same high-performer from being constantly overloaded.
Penalty Decay Behavior
penalty = 0.6 × (1 t / 180)

t = minutes since last assignment

At t=1: penalty = 0.597 (large)
At t=90: penalty = 0.300 (moderate)
At t=180: penalty = 0.000 (reset)
Overall Agent Score Formula · Default Weights
score = ( 0.33 × timeOverlap + 0.33 × bandwidth + 0.17 × customer + 0.17 × skills ) × (1 penaltyModifier)

— All pillar weights are configurable on request via Jira model update
— Score range: 0.0 – 1.0 (rendered as 0% – 100% in UI)
— Hard-stop availability limits applied after scoring (OOO, capacity, shifts)

The pillar weights can be customized per customer via a Jira model update request — no code changes required. For example, a customer with a highly regulated compliance team might increase the Skills weight to 0.40 and reduce Bandwidth to 0.25, prioritizing expertise over workload distribution. All customization requests go to the ML team.

03

Enterprise Routing Scenarios ICA Was Built For

The true test of any routing system is whether it can handle the messy, real-world edge cases that enterprise support generates at scale. Here are the scenarios that pushed SupportLogic to build ICA the way it was built.

Enterprise Pain Point
The 8AM Ticket Flood
At shift start, 20 cases are waiting. The first 5 agents online immediately absorb 4 cases each. By 9AM when 7 more agents join, only a handful of cases remain — the early birds are drowning, latecomers are idle, and case quality suffers because overloaded agents rush through their initial assignments.
ICA Solution
The Hourly Assignment Limit caps how many new cases can be assigned to any agent within a rolling X-hour window. The ACA Service’s 2-minute cycle naturally staggers assignments. Combined with the Penalty for Recent Assignment, agents who just received cases are deprioritized, giving latecomers a level entry point.
Enterprise Pain Point
The Single DSE Bottleneck
A group of key accounts is tied to one designated support engineer (DSE). That DSE goes on two weeks of PTO. Suddenly every case from those accounts lands in a vacuum — the CRM queue still routes to the same team, but nobody has the account context the DSE had built up over years.
ICA Solution
Fallback Priority Buckets let you configure the DSE as Priority 1, and a product team as Priority 2. During OOO, ICA falls through to Priority 2 automatically. The Customer History pillar surfaces Priority 2 agents who have prior positive interactions with those accounts — not just whoever is next in rotation.
Enterprise Pain Point
The 24×7 Entitlement P2 at 2PM ET
A US enterprise customer with 24×7 SLA opens a P2 case mid-afternoon. The case must route to: NAM Secret Server Enterprise → NAM Secret Server Transactional → NAM Secret Server IBM → Global Secret Server. Assigning to a tech in the wrong region at the wrong tier violates the SLA contract and signals poor service quality.
ICA Solution
Virtual Queues map each support tier to a specific agent group. Queue Prioritization enforces the ordered fallback chain across tiers. Time Overlap scoring ensures that even within the correct tier, the agent with the best coverage of the customer’s active hours surfaces first.
Enterprise Pain Point
New Agents With No Track Record
Freshly trained agents have completed a certification program for specific product modules. But the ML model has no case history for them — so they score near zero on Skills and Customer History pillars. ICA would consistently deprioritize them in favor of experienced agents, making it impossible to onboard them into a meaningful workload.
ICA Solution
Manual Skill Editing lets managers assign Ontology skills directly to new agents. A case matching a manually added skill receives a guaranteed 100% match score in the Skills pillar, overriding the lack of ML history. Combine with Hourly Assignment Limits to control their ramp rate.
Enterprise Pain Point
All Agents Hit Daily Limits at 4PM
A team of 10 handles a high volume of cases. By mid-afternoon, every agent has hit their maximum daily case limit. New cases — including critical P1s — start stacking unassigned because the system respects the hard stops. The support manager has no easy path to ensure priority cases still get handled.
ICA Solution
Round Robin fallback for priority cases: configure specific case priority levels (e.g., “Critical”, “Urgent”) to bypass daily capacity limits and use Round Robin when all agents are at their ceiling. This ensures critical work always moves while routine volume respects the limits.
Enterprise Pain Point
Monday Morning Queue Chaos
High case volume pours in Monday 9–11 AM. Round Robin ensures fairness during this burst. But at 2 PM, incoming cases are more complex and nuanced — pure rotation would assign them to whoever happens to be next, regardless of skill fit or customer context.
ICA Solution
Round Robin framed by time: configure Round Robin to run only from 9–11 AM in the queue timezone. Outside those hours, ICA switches automatically to the full ML recommendation engine — balancing fairness during peak burst with quality optimization throughout the rest of the day.

The companies that get the most from ICA aren’t the ones with the simplest routing needs. They’re the ones that have been burned the hardest by rules-based systems — and are finally ready to stop writing exceptions to their exceptions.

SupportLogic Product Engineering
04

Building a Routing Hierarchy That Reflects Your Business

ICA’s queue model is the layer where business logic meets ML intelligence. Understanding the two queue types — and when to use each — is fundamental to a well-architected ICA deployment.

Queue Architecture Overview
CRM Queue Virtual Queue
CRM Queue

Imported directly from the CRM system. SupportLogic sees only queue names — not the internal routing logic. Each case belongs to at most one CRM queue. CRM queues are managed within the CRM.

Best for: Mirroring existing CRM structure. Adding SupportLogic agents to existing CRM routing without disrupting current CRM workflows.

Virtual Queue

SupportLogic-native queues defined by filter logic — any combination of CRM queue membership, case fields (standard or custom), accounts, reporters, virtual accounts, and virtual groups. A case can match multiple Virtual Queues simultaneously.

Best for: Cross-cutting concerns that CRM queues can’t express — e.g., “all P1 cases from enterprise accounts in EMEA using Product Module X.”

The real power of Virtual Queues is their composability. AND/OR logic (with brackets) lets support managers build arbitrarily complex filter expressions. A simple example: Priority = Critical OR Priority = Urgent AND Product Group = Security Platform. This lets a small team of security specialists handle only the most urgent security cases, while the general queue handles everything else — without any CRM reconfiguration.

Queue Prioritization Logic

Cross-queue prioritization (delivered in Q2 2025) adds a critical capability: the ability to define which groups of queues should be fully drained before ICA starts assigning from lower-priority queues.

“We need to make sure that the cases with high priority will be assigned first, and only then cases with Low priority. Today, the team is bombarded with low-priority cases, and then we have a limit that can block the cases with high priority from being assigned.”

This is solved by placing the high-priority queue group in Priority 1 of the General Queue Settings, and all other queues in Priority 2 or leaving them unprioritized (they are assigned last). The ACA service evaluates Priority 1 queue cases, assigns them, and only then moves to lower priority groups.

The same logic applies at the agent level within a queue. Each queue’s agent list can itself be stratified into Priority Buckets — so if your most skilled specialist is Priority 1 and a general pool is Priority 2, the specialist gets offered cases first every time they’re available.

05

Hard Limits vs. Soft Scoring: The Two Layers of ICA

One of ICA’s most important architectural decisions is the strict separation between soft scoring (the ML recommendation engine) and hard availability limits (the availability module). These two systems operate sequentially, not in competition.

ML scoring answers: among all available agents, who is best for this case? Hard limits answer: which agents are even allowed to receive a case right now? Availability limits are applied after ML scoring, meaning a perfectly scored agent is still blocked if they are OOO, outside their assignment hours, or over their capacity limit.

Source Priority 1
Shift Assignment Hours or Working Hours
The primary availability source. Agents are eligible during their defined assignment window (narrower) or working hours (broader), based on queue configuration. OOO is subtracted from whichever applies.
Source Priority 2
CRM Omnichannel (Salesforce)
For customers using Salesforce Omnichannel, agent presence status is read directly from SFDC. Allows SupportLogic to reflect real-time availability changes made in the CRM without manual OOO updates.
Source Priority 3
Custom CRM Field
For ServiceNow, Zendesk, and other supported CRMs: a custom field in the CRM record can signal agent availability. Useful for teams that manage presence outside Salesforce Omnichannel.
Source Priority 4 (Fallback)
ML-Predicted Active Hours
When no shift or CRM availability source is configured, ICA uses an ML model trained on the agent’s historical case activity to infer when they are likely active. Less precise, but ensures unshifted agents can still participate in recommendations.
Hard Limit
Active Backlog Limit
A cap on the number of active (non-Closed) cases an agent can hold. When reached, their bandwidth is forced to 100%+ — a hard stop that prevents further auto-assignment regardless of ML score. Assignments in both SupportLogic and the CRM count toward this limit.
Hard Limit
Hourly Assignment Limit
A cap on new case assignments within a configurable rolling window (e.g., per 8 hours). Prevents burst overload at shift start. Also respects the round-robin method — agents at their limit are skipped even during Round Robin cycles.
Resolution
Lowest Limit Wins
If both a queue-level “Maximum cases per agent per day” AND an agent-level hourly/backlog limit exist, the more restrictive limit applies as the hard stop. This ensures an agent cannot exceed whichever boundary is tighter.

OOO and “outside assignment hours” are absolute blocks — no configuration can override them for standard assignment. Round Robin fallback for priority cases can only override capacity limits (hourly limit, backlog limit, max-per-day), never OOO or out-of-hours status. This distinction is critical to understand when diagnosing unassigned cases.

06

Beyond Keywords: How ICA Reasons About Expertise

Most routing systems treat skills as boolean flags — an agent either has “SQL” checked in their profile or they don’t. ICA treats skills as a learned, continuously updated signal derived from thousands of historical case interactions.

The Skills engine consists of three independently trained ML models. The Case Skills model analyzes the incoming case using LLM modules — not just keyword matching, but logical inference. A case that opens with “I am locked out of my account” doesn’t need to contain the phrase “password reset” for ICA to detect that this skill is relevant. The model has learned the vocabulary patterns that correlate with specific resolution skills.

The Agent Skills model scans the agent’s entire case history monthly, identifying recurring topics in cases they resolved well. TFIDF weighting prevents common skills from dominating the signal — an agent who handles hundreds of “login” cases doesn’t score unreasonably high on that skill just due to volume.

The Skill Matching model bridges the two, producing a percentage score reflecting how well this agent’s skill profile maps to this case’s requirements. The top five matching skills are surfaced in the UI for transparency.

Scenario — New Hire
100%
Skills match guaranteed when a manager manually assigns an Ontology skill to a new agent — overriding the absence of ML history. Enables immediate routing of relevant cases without waiting for the monthly model update cycle.
Scenario — Specialist
86%
An agent with deep Bitcoin/Vault/Signer expertise surfaces at 86% skills match for a relevant case, even though those skills appear infrequently in the team’s overall case volume — because TFIDF weighting amplifies rare-but-precise matches.
Scenario — No Match
0%
When ICA cannot identify any skills match between a case and an agent, the UI explicitly shows 0% with the message “We didn’t identify any skills match with the case topics” — giving managers a clear signal to look at other agents or expand the queue.

Skills weights: A planned future enhancement will allow specific skills to carry higher weights in the recommendation formula — reflecting case complexity. A “kernel panic” or “data corruption” skill would indicate a long-resolution case, reducing how many such cases an agent receives in a given period, rather than treating it the same as a password reset.

07

When ICA Stops Working — and How You Know Immediately

Any system that handles case assignment automatically bears a direct responsibility for visibility. If ICA fails silently, cases stop being assigned and nobody knows why until a customer escalates. The Customer-Facing Alerting Framework (introduced Feb 2026) eliminates that blind spot.

Severity Trigger Condition Aggregation Threshold Action Required
WARNING All agents recently assigned and declined the case 10× within 1 hour Review agent availability and queue rules
WARNING No agents available in the queue 10× within 1 hour Check shifts, OOO, and capacity limits
WARNING Too many matching agents — queue scope too broad 10× within 1 hour Narrow Virtual Queue filters
URGENT CRM sync failure — auto-assignment stopped 5× within 30 minutes Check Fivetran / CRM Importer health
URGENT ML model failures — auto-assignment stopped 5× within 30 minutes Contact SupportLogic ML team
CRITICAL Unhandled exceptions — auto-assignment stopped 3× within 15 minutes Immediate escalation to DevOps/NOC

The alert aggregation thresholds are intentional — they prevent alert fatigue from brief transient spikes while still catching persistent failures quickly. A single ML model glitch won’t fire an Urgent alert; five failures within 30 minutes will. Alerts are delivered to the customer’s configured email and to an internal SupportLogic mailing list simultaneously.

08

Standing Up ICA: The Right Sequence

ICA’s power is proportional to the quality of its configuration. Skipping setup steps or configuring them out of order is the most common source of poor initial recommendation quality. Here is the correct sequence.

  • 01 · Validate or build the Ontology The Ontology file of keywords and skills is the foundation of the Skills pillar. Without it, all agents score 0% on skills. Work with SupportLogic SAs to either load a customer-supplied ontology or run the ML discovery tool to build one from existing case data. Requires ML Model Update Request Jira.
  • 02 · Create Virtual Teams Group your agents into logical teams before creating queues or shifts. Virtual Teams can be reused across queues, shifts, OOO schedules, and priority buckets. Changing team composition later propagates everywhere automatically.
  • 03 · Configure Shifts Every agent that should receive ICA recommendations must be linked to a Shift with assignment hours defined. Without this, they fall back to ML-predicted hours — less precise and less reliable. Define both Working Hours (when agents are generally active) and Assignment Hours (when they accept new cases). Set the correct timezone per shift.
  • 04 · Create Queues and Link Agents Add CRM queues that mirror existing CRM routing. Build Virtual Queues for cross-cutting concerns. Link agent teams to each queue using Priority Buckets to define fallback chains from the start — it is easier to add buckets during setup than to retrofit them after launch.
  • 05 · Configure Queue Rules For each queue: set the “When to use this queue?” condition (Always/Never), configure Round Robin if needed (including time windows), set Maximum cases per agent per day, choose Assignment vs. Working Hours evaluation, and configure Round Robin fallback for priority cases if needed.
  • 06 · Set Cross-Queue Prioritization In General Queue Settings, define which queue groups should be processed first. This step is often skipped in initial deployments and added later when teams notice low-priority cases competing with high-priority ones for the same agents.
  • 07 · Configure Agent Capacity Limits Set Active Backlog Limits and Hourly Assignment Limits for agents or teams that have known capacity constraints. New hires, part-time agents, and training cohorts especially benefit from explicit limits during their onboarding period.
  • 08 · Enable Auto-Assignment and Monitor Enable auto-assignment queue by queue — start with one non-critical queue and observe the Recently Assigned tab for 24–48 hours before expanding. Watch for alert conditions (especially “No agents available” warnings) that indicate configuration gaps. Enable the Customer-Facing Alerting Framework before full rollout.
09

The Architecture of Routing Intelligence

ICA is not a smarter rules engine. It is a fundamentally different approach to the problem — one that treats routing as an optimization problem, not a classification problem.

Rules engines classify: this case belongs in this bucket, which routes to this team. ICA optimizes: given everything we know about this case, this customer, every available agent, and the current state of each agent’s workload, what is the best possible assignment right now?

The distinction matters because optimization handles the combinatorial complexity that classification cannot. It degrades gracefully when the ideal agent isn’t available — falling to the second-best option, then the third, rather than routing to the wrong agent or leaving the case unassigned. It learns continuously from historical outcomes rather than requiring an administrator to write a new rule every time a new edge case emerges.

The enterprise organizations that get the most from ICA are the ones that treat configuration as an ongoing practice rather than a one-time project. Revisit queue structures as your product portfolio changes. Update skill ontologies when new technologies enter your support scope. Tune capacity limits as team size and case volume evolve. The ML models improve with data over time — but the business logic layer (queues, shifts, priorities) requires human stewardship to stay current with organizational reality.

Done well, ICA becomes invisible in the best possible sense: cases simply arrive with the right person, at the right time, without anyone having to think about how they got there.

The goal isn’t to automate routing. The goal is to make routing so reliably good that your support managers can spend their time on the work that actually requires human judgment.

SupportLogic Product Engineering

Support Experience Podcast on YouTube