AI triage — how it works and how to tune it
Auto-labeling, priority detection, and team routing that runs on every inbound ticket in under a second.
Last updated April 19, 2026
AI triage fires the moment a ticket enters your workspace. Its job is to prepare the ticket for a human — label, prioritize, and route — so whoever opens it first has everything they need.
What triage does
For every inbound ticket, in parallel:
- Assigns one or more labels from your workspace's label set (e.g.,
billing,bug,sales,churn-risk) - Sets a priority:
low,normal,high, orurgent - Picks a team if auto-assign rules match (or leaves unassigned)
- Writes a reasoning trace you can read in the ticket timeline
Triage runs async — it never blocks ticket creation. If triage fails (credits exhausted, API outage, model timeout), the ticket still arrives, just uncategorized. You'll see a gentle "Triage skipped" note in the timeline.
What signals it uses
Seven inputs feed the triage model:
- Subject line (for email)
- First message body
- Channel (email / WhatsApp / Slack / Discord)
- Customer metadata (VIP tag, tier, total tickets, account age)
- Recent ticket history for this customer (last 10)
- Time of day + workspace business hours
- Workspace-specific signals (custom labels, industry)
No customer PII is sent to the model beyond what's already in the ticket. The prompt is scoped per workspace — your labels and history stay in your tenant.
Credit cost
1 credit per triage run. Fires once per new ticket, not per message.
Tuning triage behavior
Settings → AI → Triage:
- Enabled per workspace / per team / per channel. Turn it off entirely for a particular channel (e.g., disable for WhatsApp if you want manual labeling).
- Custom labels. Add up to 50 custom labels per workspace. The model considers all of them.
- Label hints. Optional one-sentence description per label (e.g.,
churn-risk = customer mentioning cancellation, downgrade, or competitors). Improves accuracy. - Priority bias. Nudge priority calculation (e.g., "default to
highfor VIP customers"). - Team routing rules. Go to Settings → Teams → team → Auto-assign. Define rules like
label includes "billing" → Billing teamorpriority=urgent → VIP team.
Reading the reasoning trace
Every triaged ticket has a reasoning trace in the timeline. It shows:
- Which labels got picked and why (one-sentence rationale per label)
- The priority and the cue that triggered it
- Which team was routed to (if any)
- Confidence scores (internal — not shown by default, available to admins via the "Show confidence" toggle)
If triage got something wrong, override it:
- Change the label / priority / team manually in the ticket
- Your correction is logged and (if you have enough corrections with similar patterns) nudges future triage behavior
What it's not
- Triage is not auto-resolve. It prepares the ticket; it doesn't reply.
- Triage doesn't rewrite the customer's message.
- Triage doesn't share data across workspaces — your labels, your history, your tenant.
Troubleshooting
- No triage happening? Check Settings → AI → Triage: enabled? Check Settings → Billing → Credits: any left? Check Settings → AI → Activity: errors?
- Labels keep getting it wrong? Add label hints with one-sentence descriptions. This is the single biggest accuracy lever.
- Triage too slow? Triage runs on a ~500ms P50 / ~2s P99. If you see consistent multi-second delays, check Settings → AI → Activity for upstream provider issues.
Summary
- Runs once per inbound ticket, async, 1 credit
- Labels + priority + team routing, with a readable reasoning trace
- Tuneable via hints, rules, and per-channel/team on-off
- Never blocks ticket creation
Questions? Email us.
