Predict Assignment
SkillMonitoring & opsPredict assignment group and category for incoming incidents using historical patterns, keyword analysis, and resolution data to accelerate routing
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Predict Assignment skill
What this skill tells your AI
The instructions your AI receives, as published by happy-technologies-llc/happy-platform-skills in skills/itsm/predict-assignment/SKILL.md and read by ahel’s review.
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
Signals
- GitHub stars
- 37
- Forks
- 13
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
predict-assignment- Source
- github.com/happy-technologies-llc/happy-platform-skills