AI-Powered Ticket Routing (Tier 9)
Deployed a serverless AI system that automatically analyzes incoming support tickets, matches them to the most qualified team member based on expertise profiles, and provides detailed routing reasoning — all while stripping PII before data leaves the environment.
Context
IT support operations across several companies handled hundreds of tickets monthly, each requiring manual review to determine the right assignee. Tickets landed in a general queue where someone had to read the request, mentally map it to team member expertise, consider workload, and manually route it — often taking minutes per ticket and introducing inconsistency in how similar issues were handled.
Challenge
Building an intelligent routing system required more than keyword matching. The solution needed to understand the semantic meaning of ticket content, match it against team member expertise profiles, factor in current workload, and produce not just an assignment but a complete analysis including priority, category, sentiment, and recommended next steps. All while protecting PII before any data touched external AI services.
Solution
A serverless classification pipeline on AWS Lambda:
Ticket Ingestion: Fetches ticket and requester details from FreshService ITSM via API.
Data Preparation: Loads team member profiles (expertise, workload, roles from YAML), IT documentation (VPN guides, device management docs), and organizational structure (agent groups, categories).
A RAG-based approach using ChromaDB was evaluated and ruled out — the data was structured and bounded enough that directly injecting team profiles, IT documentation, and categories as context outperformed retrieval-based lookup with less complexity.
Privacy Protection: Presidio NLP engine detects and redacts PII (emails, phone numbers, IPs, credentials, names) before any data reaches the AI. Location data preserved for on-site support routing.
AI Analysis: LangChain orchestrates a GPT-5-mini classification request with the redacted ticket, team profiles, IT documentation, and categories. Returns structured output via Pydantic validation: primary assignee, backup, category, priority, sentiment, confidence score, risk assessment, and next steps.
Assignment: Updates FreshService ticket with the AI’s recommendation, sets category/subcategory, adds custom fields (confidence, sentiment, knowledge level), and creates a private note with full reasoning.
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ FreshService│────▶│ AWS Lambda │────▶│ Presidio │
│ (Ticket) │ │ (Trigger) │ │ (PII Redact) │
└─────────────┘ └──────────────┘ └──────┬───────┘
│
┌──────────────┐ ┌──────▼────────┐
│ FreshService│◀────│ GPT-5-mini via│
│ (Update) │ │ LangChain │
└──────────────┘ └───────────────┘
Context: Team Profiles
+ IT Docs
+ Categories
Deployment
Deployed as an AWS Lambda function triggered per-ticket, scaling automatically with volume. No infrastructure to manage. The function loads context files (team profiles, IT docs) from the deployment package and makes API calls to FreshService and OpenAI. End-to-end processing completes in seconds.
Impact
- Processes tickets in seconds vs. minutes of manual routing
- Reduced ticket routing time from 15+ minutes to seconds
- Improved first-time-fix rate through better expertise matching
- Automated PII redaction ensures data protection compliance
- Provides backup assignee suggestions for workload balancing