AI-Powered ITSM Ticket Follow-up Assistant
Autonomous ticket follow-up system built solo over 6 months. 66-node n8n workflow + 70 nodes per team sub-workflow. 15-minute cycle, 0 manual intervention. 6-step pipeline: Collect (iTop) → Enrich (Supabase) → Filter (16-combination anti-spam matrix) → Anonymize (GDPR) → Analyze (Vertex AI) → Notify (Teams). Smart routing based on agent availability. Running in production across all services.
Managers opening tickets one by one. Team meetings producing obsolete status updates.
I spent 6 months building something different: a system that runs every 15 minutes, analyzes every open ticket, and sends follow-ups to the right person automatically.
Intelligent 3-Branch Routing
System automatically detects ticket state and routes accordingly
Key Insight: Each team has its own thresholds, its own priorities, its own implicit rules. A system that doesn't reflect that reality ends up being ignored. That's why each team gets its own 70-node sub-workflow with custom configuration.
6-Step Pipeline: Collect → Enrich → Filter → Anonymize → Analyze → Notify
5 APIs. Multi-provider OAuth. Webhooks. All working together.
Collect
iTop REST API with OQL queries. Handles both UserRequests and Incidents with dynamic field mapping.
Enrich
42-column PostgreSQL schema tracking full ticket lifecycle. PostgREST for fast batch queries.
Filter
Status × priority matrix. 4 statuses, 4 priority levels, 16 combinations, each with its own trigger logic.
Anonymize
Complete anonymization engine before every AI call. Names → AGENT_002, companies → ORG_001, IPs → IP_001.
Analyze
Gemini analyzes anonymized ticket. Blockage detection, risk level. AI ALWAYS prepares 2 messages (agent + manager).
Notify
Teams messaging, presence detection, manager hierarchy lookup. Azure AD app with delegated permissions.
Anti-Spam Matrix: 16 Combinations
The workflow runs every 15 minutes. Without filtering, each ticket would get followed up dozens of times a day.
Concrete Examples
Why 10 days for a P4? An agent with 15 tickets will prioritize P1s. Following up a P4 every 4h just creates noise. But after 10 days, even a P4 becomes a problem.
15-Minute Cycle
Cron trigger every 15 minutes. Business hours filtering.
Presence-Aware Routing
Availability check via Graph API. If isOutOfOffice = true, auto-escalate to manager.
The decision that simplified everything: AI always prepares two messages
The AI agent always prepares two messages at once: one for the agent, one for the manager. Not because both are always sent, but because the AI can't know at analysis time whether the agent is available or out of office. That check happens after, via Microsoft Graph. The workflow then picks which message to send.
Why it works: This saved me a huge amount of conditional logic on the AI side. Sometimes the right technical decision is to make the AI do more, so the rest of the pipeline stays simple.
Invisible work: This invisible work is what allowed the project to ship. The anonymization engine, invisible to the end user, is what got the project validated internally and passed to production.
Real bugs found and fixed across 5 integrated systems
Key Features
Intelligent 3-Branch Routing
Agent assigned → DM + CC manager. Team assigned → team channel. Agent OOO → auto-escalate manager. Automatic ticket state detection.
16-Combination Anti-Spam Matrix
4 statuses × 4 priorities. Each combination with its own logic. P1 unread = 15 min. P4 waiting = 10 days. Adapted per team.
2-Message AI Architecture
AI ALWAYS prepares an agent message AND a manager message. Workflow chooses which to send based on availability. Simplifies overall logic.
Complete GDPR Anonymization
Anonymization engine before every AI call. Names, emails, IPs, URLs masked with unique codes. Mapping table for re-identification.
Presence-Aware Routing
Availability check via Graph API before sending. If isOutOfOffice = true, auto-escalate to manager. No notifications to void.
Chat with Tickets Agent
Secondary conversational agent that managers can query directly: "Which agents have the most overdue tickets?" Natural language to SQL.
Tech Stack
66-node main workflow. 70 nodes per team sub-workflow. Code nodes for complex logic.
Gemini for ticket analysis. Structured JSON output. Prompt engineering.
Teams messaging. Presence API for isOutOfOffice. Azure App Registration.
PostgreSQL. 42-column schema for ticket tracking. PostgREST for batch queries.
REST API with OQL queries. UserRequests + Incidents. Dynamic field mapping.
Anonymization engine. Anti-spam matrix. Data transformation in code nodes.
Results & Metrics
Technical Performance
Business Impact
Security & Compliance
Technical Challenges & Solutions
Timestamp [object Object] Serialization
Dynamic Incident vs UserRequest Detection
Chatbot Memory Between Turns
403 Presence Graph API Error
Demonstrated Skills
Workflow Orchestration
API Orchestration
AI/LLM Integration
Privacy Engineering
Multi-System Debugging
Interested in this project?
Contact me to discuss similar projects or for more information.