Start here
Overview
Customers do not care which channel they used—you still owe a coherent response. This guide covers normalization, triage models, and escalation.
Core concept
Definition
Triage automation ingests messages, identifies intent and entity (order, account), assigns priority, routes to queues, and tracks SLA timers.
Business impact
Why it matters
Untriaged inboxes hide revenue (sales) and churn risk (support). AI reduces sorting labor; workflows ensure nothing vanishes.
Practical model
Framework
Normalize to tickets
Every message becomes a ticket with channel metadata and dedup keys.
Intent taxonomy
Start with 10–20 intents; expand as data supports it.
Implementation detail
Detailed breakdown
Confidence thresholds
Low confidence routes to a human triage pool with suggested labels.
In practice
Real-world example
A retailer unified marketplace messages and email—cutting duplicate responses and improving first-contact resolution.
Avoid these
Common mistakes
- Overfitting intents too early—fragile models and angry teams.
- No linkage to CRM object—agents lack account context.
Engineering layer
Technical patterns
Adapter pattern per channel
- Each inbound maps to `{ thread_key, message_id, body_hash, received_at }`.
- Thread key = `customer_id` or hashed `(channel + external_address)`.
Build patterns
Code examples
Thread key stability
Same customer across email aliases merges when domain matches.
export function threadKey({ channel, from, crmAccountId }) {
if (crmAccountId) return `acct:${crmAccountId}`;
return `${channel}:${from.toLowerCase()}`;
}System view
System architecture
[Channel webhooks]
→ [Normalizer]
→ [Classifier: rules + optional LLM]
→ [Queue: tier + skill tags]
→ [Agent UI + macros]Keep learning
Related topics
Next step
PrimeAxiom builds unified triage with CRM context—book an inbox assessment.