Supervisor assist copilot for text and chat threads
The operator-facing AI co-pilot drafts replies for the agent assigned to a thread. The supervisor assist copilot sits one seat up: it reads the same live thread from the oversight side and recommends a single move, framed for supervision. Coach the agent privately, hand them a concrete reply, take the conversation over, or keep watching. This page walks the flag, suggestion, and whisper-or-escalate loop for SMS, WhatsApp, email, social, and web chat threads, and closes with the dialer variant that adds compliance prompts on outbound calls. Base path:/api/v1/inbox
Base surface: the co-pilot panel on a live thread in the unified inbox (elevated roles only), or any SSE client against the stream endpoint.
Two copilots in the inbox, and when each fires
The operator co-pilot fires per message and is covered in Inbox AI co-pilot. The supervisor copilot fires on the thread’s trajectory instead: a churn or cancellation threat, a compliance exposure, abuse, a customer going cold after a stalled answer, an agent visibly out of their depth. On an ordinary healthy thread it stays on
monitor, so a card that is not “keep watching” means something genuinely moved.
The voice equivalent, whisper coaching on live calls with the supervisor whisper-vs-barge lane, is covered in real-time agent-assist whisper coaching and supervisor live monitoring for voice. This page is its text-thread sibling.
Enablement, roles, and scope
Supervisor assist has no separate kill switch; access is role-gated.- The panel and the stream require an elevated role, owner, admin, superAdmin, or supervisor, plus an inbox read or write scope on API keys.
- Every request is scoped to your workspace. A conversation id from another workspace returns a plain
404before the stream opens, and missing or insufficient credentials return401/403as JSON, never as a half-opened stream. - The panel hides itself on finished threads (closed, resolved, archived). If the thread is already closed when a stream connects, you get
event: statuswithterminal: truefollowed byevent: end { "reason": "terminal" }.
inbox_copilot) shape draft generation for assigned agents, as described in Inbox AI co-pilot. The supervisor loop reads the live thread independently of both values, so tightening the operator threshold does not change when supervisor cards fire, and the co-pilot kill switch does not blind your oversight lane.
The rescue loop: read the card, whisper or take over
Open a live thread and the panel renders the freshest card. Each card carries:recommended_action—intervene,escalate,offer, ormonitor.headline— a terse imperative summarising the ask.rationale— one short paragraph grounded in what the customer and agent actually wrote.suggested_message— ready-to-relay text: a private coaching whisper onintervene, a ready reply onoffer; omitted onmonitorandescalate.urgency— low, medium, or high; the panel’s colour cue.sentiment_score— a rolling customer-sentiment estimate on [-1, +1].
- Whisper the agent (
intervene). The suggested tip goes to the assigned agent as a private coaching note; the customer never sees it. Use it when the agent is one fact or one tone shift away from recovering the thread. - Hand over a reply (
offer). The suggested reply is inserted into the thread’s composer through the same insert path as AI-draft suggestions, so it is reviewed and sent by a person. Nothing reaches the customer without a click. - Take over (
escalate). The panel points you at the takeover surface. The handoff itself, including what the customer sees during the transition, is covered in supervisor takeover and warm handoff. Reserve it for genuine risk: churn threats, compliance breaches, abuse, or an agent clearly out of their depth. - Keep watching (
monitor). The calibrated default. No action needed.
The card on the wire
GET /api/v1/inbox/conversations/{conversationId}/supervisor-assist/stream
event: connected ({ "conversationId", "status" }), then event: status ({ "status", "terminal" }). Cards arrive as event: assist, a : ping keepalive lands every 15 seconds, and event: end closes the session with reason: "terminal" on a closed thread or reason: "max-duration" at the 30-minute cap; reconnect with the same URL to continue.
One event: assist frame’s data:
The dialer variant: compliance prompts on outbound calls
The same assist family covers outbound dialer calls, with two additions built for outbound risk: objection-handling rebuttals when a contact stalls or pushes back, and compliance prompts that nudge the agent to deliver the required opening disclosure. The moment a contact asks to be removed, the copilot drops the pitch and switches to a compliant acknowledgement. Outbound calls are recognised automatically from the call’s direction and campaign, so there is nothing extra to configure.- Configure the disclosure content itself in AI disclosure setup.
- Watch disclosure and do-not-call handling across the floor in live compliance monitoring.
Tuning and telemetry
- Cadence is fixed, as on voice. Two new turns, a 12-second minimum gap, and the trailing 6,000 characters. There is no tenant-tunable threshold on the supervisor side; if your floor wants a tighter cue, render or discard cards client-side.
- The
inbox_copilotthreshold is a different dial.auto_approve_confidence_threshold(default 0.9) marks operator drafts as eligible for one-click approval in the composer. It never sends anything on its own, and it does not gate supervisor cards. - Reading usage. Team-level handling reads live in inbox team performance. For the operator co-pilot, the accept/edit/discard rollups are described in Inbox AI co-pilot.
- The contract is advisory. Every suggestion on both surfaces carries
require_human_review: true. A person clicks send on every customer-visible message; the copilot recommends, it never dispatches.
Failure modes
- No cards on a live thread — either the thread is healthy and resting on
monitor, or the model layer is degraded while the stream stays open. A stream that holdsconnectedand keeps pinging for over a minute with noassistframes is the degraded-model signature; the panel keeps showing the last card it received. - Thread already closed at connect —
event: statuswithterminal: true, thenevent: end { "reason": "terminal" }. Reconnecting is pointless; the coaching queue covers retrospection. - The 30-minute cap elapses —
event: end { "reason": "max-duration" }; reconnect with the same URL and continue watching. - 401 / 403 / 404 before the stream — a role, scope, or workspace mismatch. Errors arrive as clean JSON because authorization completes before the SSE handshake opens.
Related
- Inbox AI co-pilot — the operator-facing drafting drawer, kill switch, and thresholds
- Real-time agent-assist whisper coaching — the voice sibling of this loop
- Supervisor live monitoring for voice calls — listen, whisper, and barge on live calls
- Supervisor takeover and warm handoff — the takeover path an
escalatecard points you to - Supervisor live monitoring for digital queues — the digital floor view this copilot sits beside
- AI disclosure setup and live compliance monitoring — the dialer compliance pair
- Inbox team performance — reading handling after the rescue