Skip to main content

Design inbox dispositions — label sets, AI judge assignment, outcome distribution

A conversation disposition is the single outcome label a closed conversation carries — “Resolved”, “Refund issued”, “Escalated to billing”. Labels come from a disposition set: a named list of up to 50 labels scoped to one conversation type. Agents stamp a label at close time; when they close without stamping, the AI judge assigns one. The console reference documents every tab; this guide is the practice side — how to design the taxonomy, run the AI lane, and keep it honest as usage grows.

How a conversation disposition differs from a voice disposition tag

A conversation holds one label from one set, applied at close. A voice call can carry several overlapping disposition tags stamps during wrap-up. Those tags live under Voice → Disposition Tags — a separate catalog with its own console and taxonomy. If you are modeling call outcomes (answered, voicemail, callback), that surface is the right one; the voice guide is Define and use disposition tags. Everything below is inbox-side: chat, email, social messaging, and SMS-style inbound threads.

Where the console lives

Inbox → Settings → Dispositions, owner/admin only. Three tabs: Label sets (create/edit), Distribution (30-day outcome split), and Lifecycle rules (which state transitions a disposed conversation may take). The tab-level walkthrough of each surface is the console reference; this guide focuses on how to design the labels and read the stats. A tenant can hold up to 20 sets; each set covers one conversation type (inbox, voice, or any).

Design your label set

Start with a small, flat set rather than a deep hierarchy. The AI judge assigns labels by matching the closed thread against each label’s description; flat, distinctly-described labels give it unambiguous candidates. A nested tree (“Support → Billing → Refund”) creates labels the judge cannot tell apart, inflating the override rate until someone rewrites the descriptions. Two shapes work:
  • Core set — workspace-wide outcomes: resolved, refunded, escalated, no-reply, spam. Enough for most support teams.
  • Team-specific set — a second set for a team with distinct outcomes (e.g. Sales: qualified, demo-booked, not-interested) while the core set still catches general support traffic.
One set per conversation type can be marked default; the default is the set the AI judge and the close picker use automatically. Design labels so the “counts as resolved for reporting” question has a clean answer — typically resolved only, with refunded/escalated treated as their own outcomes.

Create a label set

Open Inbox → Settings → Dispositions → Label sets and click Create disposition set.
  • Name — what the set answers for (“Support outcomes”, “Sales results”).
  • Conversation typeinbox, voice, or any. Immutable after creation; use any when both voice and digital closes share the set.
  • Labels — each row carries a display text, a slug id (auto-derived from the text until you hand-edit it), an optional color, and an optional description. The description is the AI judge’s guidance channel: “when should the judge pick this label.”
Screen reference: the creation dialog shows the set name at top, the conversation-type and default controls below, and one card per label row — color swatch, display text, slug id, and the AI-guidance description.
An eight-label starter set for a support workspace might be:

Manual stamping

Agents stamp a disposition at close:
  1. Open the conversation and click close.
  2. In the close dialog, pick a label from the default set for that conversation type (if no set is default, the picker shows applicable sets).
  3. Confirm.
Macros can stamp a disposition as one step in a chain — a “Refund policy” macro can reply, tag, snooze, and stamp refunded in one fire. Macro setup is covered in Macros and canned responses.

AI judge auto-assignment

When an agent closes without stamping, the AI judge reads the closed thread and assigns a label plus a confidence score, provided a default set exists for the conversation’s type. If no default set exists, the AI lane skips silently (the close succeeds; distribution just shows fewer AI-auto labels). Re-opening then re-closing replaces the prior assignment. The judge never blocks the close path. The override loop is the quality channel:
  • An agent or supervisor re-stamps a conversation the AI had labeled. The override rate tile on Distribution counts that change.
  • The re-stamp is a manual assignment; the override is recorded, but the taxonomy itself does not change. The supervisor decides on the next naming split or description rewrite — the AI lane trains the team’s editorial judgment, it does not re-write the set on its own.
  • A rising override rate means the label descriptions overlap or a label is a catch-all; tighten the descriptions first, split second.
Screen reference: the Distribution panel starts with the Filter-by-set dropdown and window caption, then the four summary tiles, then a card of per-label bars showing share-of-total.

Outcome-distribution panel

The Distribution tab shows the last 30 days of disposed conversations. Filter to one set or view all sets. Four tiles summarize the window; per-label bars show each label’s share. Reading it:
  • Spot the catch-all. If resolved is 70% of the split while the queue reports vague closes, agents (or the judge) are using it as a default dump. Tighten its description and re-check after a week.
  • Per-agent skew. Filter by set and compare the distribution before/after a taxonomy split; one agent driving most of a label’s volume shows where the coaching or the macro chain should land.
  • Decide split vs. retire. A label that is always a catch-all for two distinct outcomes should split into two labels. A label nobody picks after the descriptions settle should retire.

Hygiene rules

  • Retirement preserves stamps. Removing a label from a set does not rewrite history — conversations stamped with that label keep their recorded outcome. The label simply stops appearing in the close picker and AI guidance. Filter the distribution before retiring to confirm the label’s remaining slice is historic, not active.
  • Renaming keeps reporting continuous. A label has an immutable slug id and a mutable display text. Rename the display text (Refund issuedRefund approved) and all existing stamps follow the new text; the slug id is what stats group by. Do not “fix” a name by adding a new slug and retiring the old one — that splits one outcome across two ids and fragments the distribution.

Worked example — support workspace splits a catch-all

A support workspace runs with the AI judge on. The core set has eight labels; three dominate — resolved (55%), billing (18%), escalated (12%).
  1. The supervisor filters Distribution to the default set. The billing bar reads 18% but, drilled by agent, two agents account for most of it; drilling into samples, some are refund requests and some are billing-product questions.
  2. The team edits the set: billing splits into billing-refund (“when the customer asks for a refund or disputes a charge”) and billing-inquiry (“when the customer asks about a plan, invoice, or payment method”). The old billing id is retired; existing stamps on it stay on their recorded rows.
  3. Descriptions are rewritten so the judge’s candidates do not overlap.
  4. Two weeks later the distribution is re-checked: the combined billing-refund + billing-inquiry share matches the old billing slice, the override rate has dropped, and the judge now lands refund requests on the refund lane instead of the generic billing lane.

API overview

Disposition sets, distribution stats, and lifecycle rules are available over the inbox API — list/create/edit sets, read distribution with optional from/to/taxonomy_id, and CRUD lifecycle rules. The console and API stay in parity so tenant automation reads the same taxonomy the dashboard shows. For the full endpoint contract, see the inbox API reference — this guide intentionally does not re-document the endpoints; it covers the taxonomy design.

See also