# Detect Conversation Type

> Detect and classify conversation types including inquiry, complaint, request, feedback, and escalation. Route to appropriate handling workflows based on intent, sentiment, and urgency analysis

- Skill: `happy-technologies-llc/detect-conversation-type` (Agent Skill)
- Install (CLI): `npx skillmds@latest add happy-technologies-llc/detect-conversation-type`
- Raw SKILL.md: https://api.skillmd.com/api/skills/happy-technologies-llc/detect-conversation-type/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Happy-Technologies-LLC (https://skillmd.com/u/happy-technologies-llc)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/happy-technologies-llc/detect-conversation-type

---


# Conversation Type Detection and Classification

## Overview

This skill detects and classifies the type of conversation occurring in ServiceNow engagement channels (Virtual Agent, chat, email, portal) to enable intelligent routing and handling:

- **Inquiry**: Information-seeking questions about services, policies, or status
- **Request**: Actionable service requests or catalog orders
- **Complaint**: Expressions of dissatisfaction requiring service recovery
- **Feedback**: Constructive input about services, processes, or experiences
- **Escalation**: Urgent issues requiring immediate attention or management involvement
- **Troubleshooting**: Technical problem-solving requiring diagnostic steps
- **Follow-up**: Continuation of a previous conversation or existing ticket

**When to use:** When building Virtual Agent topic routing, when enriching interaction records with classification metadata, when automating conversation handoff decisions, or when analyzing conversation patterns for service improvement.

## Prerequisites

- **Roles:** `admin`, `sn_customerservice_manager`, `itil`, or `virtual_agent_admin`
- **Plugins:** `com.glide.cs.chatbot` (Virtual Agent), `com.glide.interaction` (Agent Workspace Interaction)
- **Access:** Read access to `sys_cs_conversation`, `sys_cs_message`, `interaction` tables
- **Knowledge:** Virtual Agent topic design, conversation flow concepts, sentiment analysis basics
- **Related Skills:** `csm/sentiment-analysis` for sentiment scoring, `csm/chat-recommendation` for response suggestions

## Procedure

### Step 1: Retrieve Conversation Messages

Fetch the conversation history for classification.

**MCP Approach:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sys_cs_message
  query: conversation=<conversation_sys_id>^ORDERBYsys_created_on
  fields: sys_id,body,direction,sys_created_on,typed_by,message_type
  limit: 50
```

**REST Approach:**
```
GET /api/now/table/sys_cs_message
  ?sysparm_query=conversation=<conversation_sys_id>^ORDERBYsys_created_on
  &sysparm_fields=sys_id,body,direction,sys_created_on,typed_by,message_type
  &sysparm_limit=50
```

For interaction-based conversations:
```
Tool: SN-Query-Table
Parameters:
  table_name: interaction
  query: sys_id=<interaction_sys_id>
  fields: sys_id,short_description,type,channel,state,opened_for,assigned_to,opened_at,work_notes
  limit: 1
```

### Step 2: Analyze Initial User Message

The first user message is the strongest signal for conversation type. Extract:

**Intent Signals:**

| Signal Type | Examples | Classification |
|-------------|----------|---------------|
| Question words | "How do I...", "What is...", "Where can I..." | Inquiry |
| Action verbs | "I need...", "Please set up...", "Can you create..." | Request |
| Negative sentiment | "This is unacceptable...", "I'm frustrated..." | Complaint |
| Suggestion language | "It would be nice if...", "Have you considered..." | Feedback |
| Urgency markers | "URGENT", "This is critical", "Need help NOW" | Escalation |
| Problem description | "It's not working", "I'm getting an error..." | Troubleshooting |
| Reference to prior | "Following up on INC...", "As discussed..." | Follow-up |

### Step 3: Apply Classification Rules

Score the conversation against each type using a weighted analysis:

```
=== CONVERSATION CLASSIFICATION ===
Conversation ID: CS0045678
Channel: Virtual Agent (Service Portal)
User: Jane Smith (Engineering)
Initial Message: "I've been waiting 5 days for my laptop and no one
  has contacted me. This is the third time I've had to follow up.
  I need this resolved today or I need to speak with a manager."

Classification Scores:
| Type            | Score | Signals Detected |
|-----------------|-------|------------------|
| Complaint       | 85%   | Negative sentiment, dissatisfaction, wait time mention |
| Escalation      | 75%   | "speak with a manager", urgency ("today") |
| Follow-up       | 60%   | "third time", reference to prior interaction |
| Request         | 30%   | "need this resolved" (implicit service need) |
| Inquiry         | 10%   | No information-seeking language |
| Feedback        | 5%    | No constructive suggestion |
| Troubleshooting | 5%    | No technical problem described |

PRIMARY: Complaint (85%)
SECONDARY: Escalation (75%)
COMPOSITE: Complaint with Escalation Request

URGENCY: High
SENTIMENT: Negative (frustrated)
PRIORITY ACTION: Route to human agent with escalation flag
```

### Step 4: Detect Multi-Intent Conversations

Some conversations contain multiple intents. Identify all:

**MCP Approach:**
```
Tool: SN-Query-Table
Parameters:
  query: 123TEXTQUERY321=laptop delivery delay complaint escalation
  table_name: sys_cb_topic
  limit: 10
```

Analyze message-by-message for intent shifts:
```
Message 1: "I need to reset my password" -> Request
Message 2: "Also, the VPN has been slow all week" -> Troubleshooting
Message 3: "And when will the new laptops be available?" -> Inquiry

Classification: Multi-intent conversation
Primary: Request (password reset - most actionable)
Secondary: Troubleshooting (VPN performance)
Tertiary: Inquiry (laptop availability)
```

### Step 5: Map Classification to Routing Rules

Determine the appropriate handling workflow based on classification.

**Routing Matrix:**

| Classification | Channel | Priority | Route To |
|---------------|---------|----------|----------|
| Inquiry | Virtual Agent | Low | Knowledge search -> FAQ topic |
| Request | Virtual Agent | Medium | Catalog item topic -> Fulfillment |
| Complaint | Live Agent | High | CSM queue -> Service Recovery |
| Feedback | Async | Low | Feedback collection -> Survey |
| Escalation | Live Agent | Critical | Manager queue -> Priority handling |
| Troubleshooting | Virtual Agent | Medium | Diagnostic topic -> IT Support |
| Follow-up | Live Agent | Medium | Original assignee -> Context resume |

**MCP Approach:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sys_cb_topic
  query: nameLIKEcomplaint^active=true
  fields: sys_id,name,description,queue,priority,active
  limit: 5
```

### Step 6: Enrich the Interaction Record

Update the interaction or conversation record with classification metadata.

**MCP Approach:**
```
Tool: SN-Update-Record
Parameters:
  table_name: interaction
  sys_id: <interaction_sys_id>
  data:
    u_conversation_type: "complaint"
    u_secondary_type: "escalation"
    u_urgency: "high"
    u_sentiment: "negative"
    u_classification_confidence: "85"
    u_routing_recommendation: "csm_escalation_queue"
```

**REST Approach:**
```
PATCH /api/now/table/interaction/<interaction_sys_id>
Body: {
  "u_conversation_type": "complaint",
  "u_secondary_type": "escalation",
  "u_urgency": "high",
  "u_sentiment": "negative"
}
```

### Step 7: Create Downstream Records Based on Type

Automatically create appropriate records based on classification.

**For Complaints -- Create CSM Case:**

**MCP Approach:**
```
Tool: SN-Create-Record
Parameters:
  table_name: sn_customerservice_case
  data:
    short_description: "Complaint: Laptop delivery delay - 3rd follow-up"
    description: "<conversation summary>"
    priority: 2
    contact: "<user_sys_id>"
    category: "complaint"
    u_complaint_type: "service_delivery"
    u_source_conversation: "<conversation_sys_id>"
```

**For Requests -- Create Catalog Request:**
```
Tool: SN-Create-Record
Parameters:
  table_name: sc_request
  data:
    requested_for: "<user_sys_id>"
    short_description: "Password reset request via chat"
    description: "<conversation context>"
    u_source_conversation: "<conversation_sys_id>"
```

### Step 8: Handle Escalation Routing

When an escalation is detected, trigger immediate routing.

**MCP Approach:**
```
Tool: SN-Update-Record
Parameters:
  table_name: interaction
  sys_id: <interaction_sys_id>
  data:
    state: "transferred_to_agent"
    assignment_group: "<escalation_queue_sys_id>"
    u_escalation_reason: "Customer requested manager involvement"
    u_escalation_priority: "high"
    work_notes: "AI Classification: Complaint with escalation request. Customer has followed up 3 times regarding laptop delivery delay. Sentiment: Negative/Frustrated. Routing to escalation queue."
```

### Step 9: Track Classification Accuracy

Monitor and validate classification decisions over time.

**MCP Approach:**
```
Tool: SN-Query-Table
Parameters:
  table_name: interaction
  query: u_conversation_typeISNOTEMPTY^sys_created_on>javascript:gs.daysAgo(30)
  fields: u_conversation_type,u_classification_confidence,state,u_agent_override_type
  limit: 500
```

Calculate accuracy metrics:
```
=== CLASSIFICATION ACCURACY (Last 30 Days) ===

| Type            | Classified | Agent Override | Accuracy |
|-----------------|-----------|---------------|----------|
| Inquiry         | 245       | 12            | 95.1%    |
| Request         | 189       | 8             | 95.8%    |
| Complaint       | 67        | 5             | 92.5%    |
| Troubleshooting | 156       | 11            | 92.9%    |
| Escalation      | 34        | 3             | 91.2%    |
| Feedback        | 28        | 4             | 85.7%    |
| Follow-up       | 42        | 6             | 85.7%    |

Overall Accuracy: 93.4%
Most Common Misclassification: Feedback classified as Inquiry
```

### Step 10: Refine Classification Rules

Use override data to improve classification accuracy.

**MCP Approach:**
```
Tool: SN-Query-Table
Parameters:
  table_name: interaction
  query: u_agent_override_typeISNOTEMPTY^u_conversation_type!=u_agent_override_type
  fields: u_conversation_type,u_agent_override_type,short_description
  limit: 50
```

Analyze misclassifications to identify patterns and update routing rules.

## Tool Usage

| Tool | Purpose | When to Use |
|------|---------|-------------|
| SN-Query-Table | Fetch conversations, messages, topics, metrics | Primary data retrieval |
| SN-Get-Record | Retrieve specific interaction details | Single conversation analysis |
| SN-Create-Record | Create downstream records (cases, incidents) | Acting on classification |
| SN-Update-Record | Enrich interaction with classification metadata | Recording classification results |
| SN-Natural-Language-Search | Find matching topics or similar conversations | Topic routing and pattern matching |

## Best Practices

1. **Classify on first message** -- do not wait for multiple exchanges to make an initial classification
2. **Support reclassification** -- conversations can shift type mid-stream; update classification dynamically
3. **Use confidence thresholds** -- below 70% confidence, route to human agent for classification
4. **Combine intent and sentiment** -- a request with negative sentiment may actually be a complaint
5. **Handle multi-intent gracefully** -- address the most urgent intent first, then secondary intents
6. **Preserve conversation context** -- pass full classification metadata to receiving agent or workflow
7. **Track agent overrides** -- use override data as training signal for improving classification rules
8. **Consider channel context** -- phone calls have different patterns than chat or email
9. **Detect language and tone shifts** -- escalation often manifests as a shift from neutral to negative
10. **Respect privacy** -- do not log or classify sensitive personal information in metadata fields

## Troubleshooting

| Issue | Cause | Resolution |
|-------|-------|------------|
| Messages not retrieved | Wrong conversation table or ID format | Check `sys_cs_conversation` vs `interaction` table |
| Classification always "Inquiry" | Default fallback too aggressive | Lower inquiry threshold, add more signal patterns |
| Escalation not detected | Urgency language not in signal list | Add domain-specific urgency phrases to detection rules |
| Multi-intent not handled | Only first intent extracted | Implement per-message analysis with intent accumulation |
| Routing to wrong queue | Topic mapping outdated | Update `sys_cb_topic` routing configuration |
| Low confidence scores | Ambiguous or very short messages | Request clarification from user before classifying |

## Examples

### Example 1: Virtual Agent Inquiry Classification

**Input:** User message: "What are the company holidays for 2026?"

**Classification:** Inquiry (95% confidence). Route to Knowledge search topic. Suggested KB article: "2026 Company Holiday Calendar."

### Example 2: Complaint with Escalation Detection

**Input:** User message: "I submitted a request two weeks ago and nothing has happened. This is completely unacceptable. I need to talk to someone who can actually help."

**Classification:** Complaint (88%) + Escalation (80%). Route to live agent in escalation queue. Flag as high priority. Auto-search for existing open requests by this user.

### Example 3: Multi-Intent Chat Session

**Input:** User sends 3 messages: password reset request, question about VPN policy, and feedback about the portal design.

**Classification:** Multi-intent detected. Primary: Request (password reset, actionable). Secondary: Inquiry (VPN policy). Tertiary: Feedback (portal). Route password reset to IT topic, queue VPN question for knowledge search, log feedback for UX team review.

## Related Skills

- `csm/sentiment-analysis` - Deep sentiment analysis for conversations
- `csm/chat-recommendation` - Suggested responses for agents
- `hrsd/chat-reply-recommendation` - HR-specific chat response suggestions
- `genai/playbook-recommendations` - Match conversation to handling playbooks
- `itsm/incident-triage` - Incident classification and routing

