Predict Assignment
Overview
This skill predicts the most appropriate assignment group and category for incoming incidents by analyzing historical resolution patterns, keyword frequency, and group performance metrics. It enables zero-touch routing for the service desk.
- Analyze incoming incident short descriptions and descriptions for keyword signals
- Query historical incidents with similar text to determine which groups resolved them
- Rank candidate assignment groups by resolution success rate and average resolution time
- Predict incident category and subcategory based on content analysis
- Apply predicted assignment with confidence scoring and fallback routing
- Track prediction accuracy over time and refine routing rules
When to use: When new incidents arrive unassigned or miscategorized, and you want to reduce manual triage time by automatically predicting the correct assignment group and category.
Prerequisites
- Roles:
itil,incident_manager, orassignment_rule_admin - Plugins:
com.snc.incident(Incident Management) - Access: Read/write on
incident, read onsys_user_group,sys_choice,sn_agent_workspace,sys_cs_channel - Knowledge: Familiarity with your organization's support group structure and category taxonomy
- Data: At least 3-6 months of resolved incident data for reliable predictions
Procedure
Step 1: Retrieve the Incoming Incident
Fetch the new or unassigned incident that needs routing.
Using MCP (Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: incident
query: active=true^state=1^assignment_groupISEMPTY
fields: sys_id,number,short_description,description,category,subcategory,contact_type,caller_id,cmdb_ci,priority
limit: 25
Using REST API:
GET /api/now/table/incident?sysparm_query=active=true^state=1^assignment_groupISEMPTY&sysparm_fields=sys_id,number,short_description,description,category,subcategory,contact_type,caller_id,cmdb_ci,priority&sysparm_limit=25
Step 2: Extract Keywords and Signals
Parse the incident short description and description to extract routing signals:
| Signal Type | Examples | Weight |
|---|---|---|
| Technology keywords | VPN, SAP, Exchange, Oracle, AWS | 0.35 |
| Symptom keywords | crash, slow, error, timeout, outage | 0.20 |
| Infrastructure terms | server, database, network, firewall, load balancer | 0.25 |
| Business context | payroll, invoice, order, shipping, compliance | 0.20 |
Build a signal vector from the incident text for matching against historical data.
Step 3: Query Historical Incidents for Pattern Matching
Find resolved incidents with similar descriptions to determine routing patterns.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: state=6^resolved_atONLast 180 days@javascript:gs.daysAgoStart(180)@javascript:gs.daysAgoEnd(0)^short_descriptionLIKE[primary_keyword]^assignment_groupISNOTEMPTY
fields: sys_id,number,short_description,category,subcategory,assignment_group,resolved_by,resolve_time
limit: 50
Using REST API:
GET /api/now/table/incident?sysparm_query=state=6^resolved_atONLast 180 days@javascript:gs.daysAgoStart(180)@javascript:gs.daysAgoEnd(0)^short_descriptionLIKE[primary_keyword]^assignment_groupISNOTEMPTY&sysparm_fields=sys_id,number,short_description,category,subcategory,assignment_group,resolved_by,resolve_time&sysparm_limit=50
Step 4: Rank Candidate Assignment Groups
Aggregate historical results to rank groups by suitability:
Scoring formula:
group_score = (frequency * 0.40) + (success_rate * 0.30) + (speed_score * 0.30)
Where:
- frequency: How often this group resolved similar incidents (normalized 0-1)
- success_rate: Percentage of incidents resolved without reassignment (0-1)
- speed_score: Inverse of average resolution time relative to SLA (0-1)
| Rank | Assignment Group | Frequency | Success Rate | Avg Resolve Time | Score |
|---|---|---|---|---|---|
| 1 | Network Operations | 34/50 | 94% | 2.1 hours | 0.91 |
| 2 | Infrastructure Team | 10/50 | 88% | 3.4 hours | 0.72 |
| 3 | Service Desk L2 | 6/50 | 70% | 8.2 hours | 0.48 |
Step 5: Predict Category and Subcategory
Query the valid category/subcategory combinations and match based on content:
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_choice
query: name=incident^element=category^inactive=false
fields: sys_id,label,value
limit: 100
Using REST API:
GET /api/now/table/sys_choice?sysparm_query=name=incident^element=category^inactive=false&sysparm_fields=sys_id,label,value&sysparm_limit=100
Cross-reference the extracted keywords with the category most frequently associated with similar historical incidents.
Step 6: Validate Against Agent Workspace Context
Check if the incident originated from Agent Workspace or a conversational channel for additional context:
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_channel
query: source_record=[incident_sys_id]
fields: sys_id,channel_type,conversation,state
limit: 5
Using REST API:
GET /api/now/table/sys_cs_channel?sysparm_query=source_record=[incident_sys_id]&sysparm_fields=sys_id,channel_type,conversation,state&sysparm_limit=5
Step 7: Apply Predicted Assignment
Apply the top-ranked assignment group and predicted category to the incident:
Using MCP:
Tool: SN-Update-Record
Parameters:
table_name: incident
sys_id: [incident_sys_id]
data:
assignment_group: [predicted_group_sys_id]
category: network
subcategory: vpn
state: 2
Using REST API:
PATCH /api/now/table/incident/{sys_id}
Content-Type: application/json
{
"assignment_group": "[predicted_group_sys_id]",
"category": "network",
"subcategory": "vpn",
"state": "2"
}
Step 8: Document Prediction Rationale
Using MCP:
Tool: SN-Add-Work-Notes
Parameters:
sys_id: [incident_sys_id]
work_notes: |
=== PREDICTIVE ASSIGNMENT ANALYSIS ===
Model: Keyword-Historical Pattern v1.0
Keywords Detected: "VPN", "disconnect", "remote"
Signal Category: Network / VPN
Assignment Group Predictions:
1. Network Operations (score: 0.91, confidence: HIGH)
- 34/50 similar incidents resolved by this group
- 94% first-touch resolution rate
- Avg resolution: 2.1 hours
2. Infrastructure Team (score: 0.72, confidence: MEDIUM)
3. Service Desk L2 (score: 0.48, confidence: LOW)
Category Prediction: Network > VPN
Based on: 68% of similar incidents categorized as Network/VPN
Action Taken: Assigned to Network Operations (highest score)
Fallback: Infrastructure Team if reassigned within 30 minutes
Step 9: Track Prediction Accuracy
Monitor reassignment rates to measure prediction quality:
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: work_notesLIKEPREDICTIVE ASSIGNMENT^sys_updated_onONLast 30 days@javascript:gs.daysAgoStart(30)@javascript:gs.daysAgoEnd(0)
fields: sys_id,number,assignment_group,reassignment_count,state
limit: 200
Key metrics to track:
- First-touch accuracy: Percentage of predictions not reassigned
- Category accuracy: Percentage of predicted categories not changed
- Routing time saved: Time from creation to assignment vs. manual baseline
- Reassignment rate: How often predicted assignments are overridden
Tool Usage
| Tool | Purpose | When to Use |
|---|---|---|
SN-Natural-Language-Search |
Find unassigned incidents in natural language | Initial candidate discovery |
SN-Query-Table |
Query historical data, categories, groups | Pattern analysis and validation |
SN-Update-Record |
Apply predicted assignment and category | Routing the incident |
SN-Add-Work-Notes |
Document prediction rationale | Audit trail and transparency |
SN-Get-Table-Schema |
Discover incident and group fields | Setup and configuration |
Best Practices
- Require minimum data -- do not predict if short_description is fewer than 3 words
- Set confidence thresholds -- only auto-assign when score >= 0.75; otherwise flag for review
- Never override manual assignments -- if a human already assigned the group, do not overwrite
- Respect priority escalation -- P1 incidents should always involve human confirmation
- Retrain regularly -- recalculate keyword-group associations monthly as teams change
- Handle new categories gracefully -- default to Service Desk L2 when no historical match
- Consider CI relationships -- if cmdb_ci is populated, use its support group as a strong signal
- Monitor drift -- alert when prediction accuracy drops below 80%
Troubleshooting
"Prediction always routes to the same group"
Cause: One group historically resolves the majority of incidents, skewing frequency scores Solution: Apply frequency dampening or normalize per-category instead of globally.
"Category prediction does not match subcategory"
Cause: Category and subcategory have a parent-child relationship not enforced in prediction
Solution: Query sys_choice with dependent_value to ensure valid combinations.
"Low confidence on most predictions"
Cause: Insufficient historical data or descriptions too vague Solution: Increase the historical data window, or combine with CI-based routing for stronger signals.
"Agent Workspace context not found"
Cause: Incident was not created via Agent Workspace or Virtual Agent Solution: This is expected for portal or email-created incidents. Fall back to text-only analysis.
Examples
Example 1: VPN Connectivity Incident
Input: INC0078901 - "VPN keeps dropping when connected to corporate network"
Analysis:
- Keywords: "VPN", "dropping", "connected", "corporate network"
- Historical match: 42 similar incidents, 36 resolved by Network Operations
- Category prediction: Network > VPN (86% confidence)
- Top group: Network Operations (score: 0.93)
Action: Assign to Network Operations, category Network/VPN.
Example 2: SAP Authorization Error
Input: INC0078902 - "SAP transaction SU01 returning authorization failure for user JSMITH"
Analysis:
- Keywords: "SAP", "transaction", "SU01", "authorization"
- Historical match: 28 similar incidents, 24 resolved by SAP Basis Team
- Category prediction: Software > ERP (91% confidence)
- Top group: SAP Basis Team (score: 0.95)
Action: Assign to SAP Basis Team, category Software/ERP.
Example 3: Ambiguous Request
Input: INC0078903 - "Something is not working"
Analysis:
- Keywords: none specific detected
- Historical match: insufficient signal
- Confidence: 0.22 (below threshold)
Action: Flag for manual triage. Add work note: "Insufficient detail for predictive assignment. Recommend contacting caller for clarification."
Related Skills
itsm/incident-triage- Manual triage and prioritizationitsm/case-auto-resolve- Auto-resolve after assignmentitsm/incident-lifecycle- Full incident management workflowitsm/suggested-steps- Generate resolution steps for assigned incidentsitsm/incident-sentiment- Analyze sentiment to prioritize routing