Expert Conversation Interface โ Design Proposal
Author: Design Review (Senior UI/UX) Date: 2026-05-03 Status: Draft โ for founder review
Cross-ref (2026-06-01): This redesign assumes the runtime contract defined elsewhere: RIG hard-cut (#696) retired the in-process agent path, and ADR-020 + #1148โ#1153 (unified
messagestable) define the canonical conversation storage / isolation model. Any visual or interaction change here that conflicts with those contracts is wrong โ defer to the ADR.
0. Executive Summaryโ
The current expert queue UI is functional but conflates too many distinct concerns into a single scrollable pane, creating cognitive load that will compound as the AI becomes more capable and tasks become more complex. This document proposes a redesigned interface built on three core principles:
- Separate what the client sees from what the expert thinks. The client conversation is a historical record and communication surface; the expert workspace is a decision-making environment. These are different jobs with different UX requirements.
- Make the AI a first-class participant, not a form field. The current "AI Suggestion" panel feels like a text box you might accept or discard. The redesign treats the AI as a briefing partner whose reasoning is visible and whose proactive insights are surfaced.
- Adapt to complexity, not to a one-size-fits-all. A 30-second approval of a draft reply and a 3-day agentic task reconciliation are fundamentally different tasks. The UI should make the simple case effortless and the complex case comprehensible.
1. Current State Analysis โ What's Brokenโ
1.1 The Single Pane Is Overloadedโ
TicketDetail.tsx stacks, top to bottom:
- Conversation thread (user + agent + expert messages, up to 340px)
- AI Suggestion panel (confidence + draft text + action buttons)
- Internal Notes (collapsible)
- Action bar (response textarea + 5โ6 action buttons)
The expert must mentally separate four distinct concerns while scrolling through a single linear stack. There is no visual hierarchy that communicates what is client-facing vs. internal, what is AI-generated vs. expert-written, or what requires a decision vs. what is reference material.
1.2 Message Roles Are Visually Conflatedโ
In CustomerThread, both role === "agent" and role === "expert" messages render with the same Amy avatar. The only distinction is a tiny (Expert) or (AI, 72%) sub-caption. An expert scanning the thread cannot quickly answer: "What has the client actually experienced? Has anything been sent yet? Was the last response AI or human?"
The thread also includes no indication of whether messages were sent, pending, or unsent drafts. There's no visual marker for escalation events (the moment the AI decided to stop and ask for help).
1.3 Two Competing Response Composersโ
The expert can compose a response in two places simultaneously:
- The AI Suggestion panel's edit textarea (
mode === "edit"inAISuggestionPanel) - The action bar's draft textarea at the bottom (
ActionBar.draft)
These both call the same endpoint (acceptSuggestion) but they are positioned at different points in the page, have different button labels, and operate independently. This creates confusion about which "compose" gesture commits the response.
1.4 The Escalation Context Is Buriedโ
The most important piece of information for an expert โ why did the AI decide it couldn't handle this? โ is rendered as a single truncated line in the ticket header (item.reason || item.escalationReason || "Escalated ticket"). It has the same font size as the ticket ID. There is no confidence score, risk level narrative, or AI reasoning visible without digging into message metadata.
1.5 AI Reasoning Is Invisibleโ
The agent service returns chain-of-thought reasoning that informs its confidence score, but no version of this reasoning is shown in the UI. The expert sees "confidence: 72%" with no explanation of what made the AI uncertain. This forces experts to re-derive the AI's logic from the raw conversation, duplicating cognitive work.
1.6 Agentic Tasks Are Disconnectedโ
Multi-step agentic tasks live on a separate /workspace/tasks route. If a ticket arrives that triggered an agentic task, the expert must leave the queue view entirely to review and approve steps. There is no inline path from the conversation context to the task approval flow.
1.7 Internal Notes Are Hidden by Defaultโ
Internal notes start collapsed. Because they're collapsed, experts may not think to add them. Because they're rarely added, future experts picking up a deferred ticket have no context. The default should be visible (or at least a prominent "0 notes" indicator that invites addition).
1.8 No Path to AI-as-Peerโ
The current UI has one interaction mode: AI produces a draft โ expert approves or replaces it. There is no surface for the expert to ask the AI a question, request more context, or see AI proactive insights beyond the initial draft. Any future where the AI becomes a bidirectional collaborator requires a dedicated conversational surface between AI and expert โ which currently does not exist.
2. Message Taxonomy โ Definitions and Display Rulesโ
Before designing the layout, we must define each message type precisely. Confusion about message types is the root cause of most current UI problems.
2.1 Message Typesโ
| Type | Definition | Visible To | Source |
|---|---|---|---|
| Client Inbound | A message sent by the client (user/team member) through any channel | Expert, Client | role: "user" |
| Client Outbound | A message that was actually delivered to the client โ could be AI-approved or expert-written | Expert, Client | role: "agent" or role: "expert" with sent: true |
| AI Draft Response | The AI's proposed reply, not yet sent to the client | Expert only | role: "agent" with sent: false / suggestion panel |
| AI Escalation Note | Structured explanation of why the AI escalated: trigger, confidence, risk classification, specific concern | Expert only | item.reason, item.riskLevel, message.confidence |
| AI Reasoning | The AI's internal chain-of-thought that produced its confidence score and draft | Expert only (on demand) | message.metadata.reasoning (new field needed) |
| AI Proactive Insight | An unsolicited observation from the AI to the expert, mid-review ("I noticedโฆ", "You may want toโฆ") | Expert only | New message type (Phase 2) |
| Expert Message | A response composed by the expert and sent to the client | Expert, Client | role: "expert" with sent: true |
| Internal Note | Expert-only commentary on a ticket, never delivered to client | Expert only | is_internal: true |
| Agentic Step | A proposed or executed tool action as part of a multi-step plan | Expert, Client (simplified) | AgenticTask.steps[n] |
| Progress Update | A message sent to the client summarising task progress on a long-running request | Expert, Client | New message sub-type (Phase 2) |
2.2 Visual Treatment per Typeโ
Client Inbound
- Right-aligned bubble, neutral background (
--bg-elevated) - Channel icon (email, WhatsApp, etc.) in top-right corner of first message in a sequence
- No avatar needed โ the channel icon is sufficient identity
- Timestamp below bubble
Client Outbound (AI-approved)
- Left-aligned bubble, accent-tinted background (
--accent-subtle) - Amy avatar (the named specialist)
- Label: "via AI ยท [confidence]%" in muted caption
- Not visually distinguished from Expert Message on the client side โ but experts can see the label
Client Outbound (Expert-written)
- Left-aligned bubble, same accent-tinted background
- Amy avatar (maintains persona)
- Label: "via Expert" in muted caption with expert initials indicator
- Subtle badge distinguishes it from AI-approved without breaking client experience
AI Draft Response
- Visually distinct from sent messages โ dashed border, lighter background, AI brand color accent
- "DRAFT" pill badge โ makes the "not sent" status impossible to miss
- Never appears in the Client View pane (see layout section)
AI Escalation Note
- Card-style component at the top of the Expert Workspace pane โ not an inline message bubble
- Contains: escalation trigger summary, risk badge, confidence score, key concern
- Should be the first thing an expert reads when opening a ticket
AI Reasoning
- Collapsed by default under the AI Escalation Note
- "Show AI reasoning" expandable section
- Rendered as a monospace/prose block with subdued styling โ it's reference material, not the primary read
- Shows chain of thought that explains the confidence score
Expert Message โ same as Client Outbound (Expert-written) above
Internal Note
- Distinct visual language: yellow/amber accent border, notepad icon
- Author initials + name + timestamp
- Clearly labeled "Internal Note" โ never ambiguous
- Permanently visible in the Expert Workspace pane (not collapsed)
Agentic Step
- Timeline card showing: step number, tool name, description, parameters summary, risk badge, status
- Color-coded by step status: pending (neutral), approved (green), executing (pulsing blue), complete (green check), failed (red)
- Approve/Reject buttons appear inline on pending steps โ not on a separate page
Progress Update (Phase 2)
- Special message type in Client View โ appears as an AI-generated progress summary to the client
- Expert can trigger or edit these
- Visually distinct from regular responses: clock icon, "Progress Update" label
3. Two-Pane Design Proposalโ
3.1 The Recommended Splitโ
The two-pane split the founder proposed is correct. Here is the precise definition of each pane:
Pane A โ Client View (left pane) "What does the client experience?"
This pane is a faithful representation of the conversation as the client sees it. It contains only:
- Client Inbound messages
- Client Outbound messages (AI-approved and Expert-written, labeled with provenance)
- Agentic task progress cards (simplified view โ not the internal step details)
- Progress updates to the client
- The response composer (at the bottom)
What is explicitly NOT in this pane:
- AI drafts (not yet sent)
- AI reasoning or escalation notes
- Internal notes
- Confidence scores or risk labels
- Any information the client doesn't have access to
The expert can see exactly what the client sees, making it easy to answer "what does the client know right now?" and "what tone/context should my response assume?"
Pane B โ Expert Workspace (right pane) "What do I need to decide?"
This pane is everything internal to the expert's decision-making process. It contains:
- AI Briefing Card (escalation note + confidence + risk + AI draft)
- AI reasoning (expandable under the briefing card)
- Agentic task step-by-step approval (when applicable)
- Internal notes (always visible, not collapsed)
- Expert-to-AI chat thread (Phase 2)
- Ticket management actions (Resolve, Defer, Reassign)
3.2 Full Layout Specificationโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ QUEUE LIST (280px fixed) โ CLIENT VIEW โ EXPERT WORKSPACE โ
โ โ (flex: 1.2) โ (flex: 1) โ
โ [Org tabs] โ โ โ
โ [Status tabs] โ Ticket โ โโ AI Briefing โโ โ
โ [Risk/Sort filters] โ header: โ โ CRITICAL ยท 54%โ โ
โ โโโโโโโโโโโโ โโโโโ โ Customer โ โ Escalation: โ โ
โ โ CRITICAL 2m โ name ยท ch โ โ Client asked โ โ
โ Customer name โ badge โ โ for refund on โ โ
โ "Can you refund myโฆ" โ โ โ an order not โ โ
โ โโโโโโโโโโโโโโโโโ โ โญโโโโโโโโโโโฎ โ โ in our system โ โ
โ โ HIGH 8m โ โ user msg โ โ โ โ โ
โ Customer name โ โฐโโโโโโโโโโโฏ โ โ [Show AI โ โ
โ "Where is my order?" โ โ โ reasoning โธ] โ โ
โ โโโโโโโโโโโโโโโโโ โ โญโโโโโโโโโโโฎ โ โโโโโโโโโโโโโโโโโ โ
โ โธ MEDIUM 1h โ โ Amy sent โ โ โ
โ Customer name โ โ via AI โ โ โโ AI Draft โโโโโ โ
โ "I need help withโฆ" โ โฐโโโโโโโโโโโฏ โ โ DRAFT โโโโโ โ โ
โ โ โ โ โ โ
โ โ โญโโโโโโโโโโโฎ โ โ "I understand โ โ
โ โ โ user msg โ โ โ your concern โ โ
โ โ โ (latest) โ โ โ about the โ โ
โ โ โฐโโโโโโโโโโโฏ โ โ refundโฆ" โ โ
โ โ โ โ โ โ
โ โ โโโโโโโโโโโ โ โ [Accept & Send]โ โ
โ โ โโโโโโโโโโโ โ โ [Edit Draft] โ โ
โ โ โ Compose โ โ โ [Write Own] โ โ
โ โ โ responseโ โ โโโโโโโโโโโโโโโโโ โ
โ โ โ as Amyโฆ โ โ โ
โ โ โโโโโโโโโโโ โ โ Internal Notes โ โ
โ โ [Send] [โฉ] โ [+ Add noteโฆ] โ
โ โ โ No notes yet. โ
โ โ โ โ
โ โ โ โ Actions โโโโโโโโโโ
โ โ โ [Resolve] [Defer] โ
โ โ โ [Reassign] [โMe] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3.3 Interaction Modelโ
Opening a ticket:
- Expert clicks a ticket row in the Queue List
- Pane A (Client View) populates with the full conversation history, scrolled to the bottom (most recent)
- Pane B (Expert Workspace) shows the AI Briefing Card at top, followed by AI Draft, Internal Notes, Actions
- The AI Briefing Card is the natural first read โ the expert's eyes land on it before anything else
The response flow โ simple case (AI draft acceptable):
- Expert reads AI Briefing Card (escalation reason, confidence, risk)
- Expert skims the Client View to understand conversation context
- Expert reads the AI Draft in the Expert Workspace
- Expert clicks "Accept & Send" in the AI Draft section
- The draft appears in the Client View composer, pre-populated
- A brief "Sending as Amyโฆ" confirmation, then the message appears in Client View as a sent message (labeled "via AI, 54%")
- The AI Draft section collapses/clears in the Expert Workspace
- Expert clicks "Resolve" โ ticket leaves the queue
The response flow โ expert wants to edit: 1โ3. Same as above 4. Expert clicks "Edit Draft" โ the draft text becomes editable in a textarea within the Expert Workspace 5. Expert makes edits โ "Send Edited" button 6. Message appears in Client View as sent (labeled "via Expert (edited AI)") 7. A correction category prompt appears briefly: "Why did you edit?" โ optional, but always present to encourage capture
The response flow โ expert writes from scratch: 1โ2. Same as above 3. Expert reads the AI Draft but discards it ("Write Own" button โ draft panel collapses) 4. Expert's focus moves to the Client View response composer at the bottom 5. Expert types and sends โ response appears in Client View as "via Expert"
Why the response composer is in the Client View pane: The composer belongs in the Client View because you are writing into the conversation. You should be looking at the conversation thread while typing your response โ not scrolling a separate pane. The Expert Workspace handles AI interaction and ticket metadata; it should not also be the place where you compose the final message.
The "Accept & Send" button from the Expert Workspace does a one-click commit without requiring the composer. "Edit Draft" pre-populates the composer in Client View and focuses it.
3.4 Ticket Header (Shared / Above Both Panes)โ
A shared header bar above both panes (not duplicated in each) shows:
- Customer identifier (email, phone, Slack handle)
- Ticket ID (monospace, truncated)
- Risk badge (color-coded CRITICAL / HIGH / MEDIUM / LOW)
- Status badge
- Channel badge (email, WhatsApp, etc.)
- Assignee indicator ("You" / "Unassigned" / initials)
- Time in queue
This eliminates duplication and gives both panes context without eating vertical space in either.
3.5 Mobile Adaptationโ
On mobile (<768px), the three panels collapse to a bottom-sheet tabbed model:
- Queue tab: the list panel
- Conversation tab: the Client View (becomes the primary view when a ticket is selected)
- Workspace tab: the Expert Workspace, with AI Briefing and actions
This is a regression from desktop but acceptable for mobile triage. The most common mobile action is "accept and send" or "defer" โ both achievable from the Conversation tab with the AI Brief visible on the Workspace tab.
4. AI-as-Peer Modelโ
4.1 The Progressionโ
The UI must support three phases of AI capability without requiring a redesign at each phase transition:
Phase 1 โ AI as Draft Generator (now) AI produces a single draft. Expert approves/edits/replaces. The Expert Workspace shows the AI Briefing Card + AI Draft. This is a read-only relationship: AI speaks, expert listens.
Phase 2 โ AI as Proactive Advisor (next) AI can surface observations beyond its draft: context from previous conversations, risks in the proposed action, relevant policies the expert should know about. The Expert Workspace gets an "AI Insights" section that the AI can write to asynchronously โ not just when an escalation fires.
Phase 3 โ AI as Bidirectional Peer (future) The expert can ask the AI questions in context. "What was the outcome of the last similar ticket from this customer?" "What would happen if I agreed to this refund?" "Can you draft a version that's more apologetic?" This requires a persistent AI chat thread embedded in the Expert Workspace.
4.2 AI Briefing Card (Phase 1)โ
The AI Briefing Card is a structured component that replaces the current loose combination of item.reason + confidence badge + suggestion text. It contains:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ด CRITICAL ยท Confidence 54% ยท Risk: HIGH โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Escalation trigger: โ
โ "Client requesting refund for order #4421; โ
โ order not found in our system. Potential โ
โ fraud signal or data sync issue." โ
โ โ
โ [โธ Show AI reasoning] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The escalation trigger is written in plain English by the AI โ not a raw field value. It should be a 1โ3 sentence explanation that answers: "Why am I seeing this? What does the AI think is going on? Why wasn't the AI confident enough to handle it?"
The "Show AI reasoning" expander reveals the chain-of-thought โ the AI's internal deliberation. This is reference material for experts who want to understand the AI's logic, not the default read.
4.3 AI Insights Section (Phase 2)โ
Below the AI Briefing Card and AI Draft, a new "AI Insights" section appears when the AI has proactive observations to share. These are distinct from the escalation note:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ก AI Insights โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โข This customer has escalated twice in the โ
โ past 30 days, both related to order sync โ
โ issues. Previous resolution: manual โ
โ credit applied. โ
โ โ
โ โข Your refund policy allows a maximum of โ
โ ยฃ50 without manager approval. The order โ
โ value was ยฃ38. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The expert doesn't need to ask for these โ the AI surfaces them automatically. The insights are non-blocking: the expert can ignore them entirely. But they reduce the time an expert spends on background research.
Insights are generated when the queue item is created (or shortly after), not in real time. The UI shows a loading indicator in the Insights section while they're being generated, so experts know to wait briefly before acting.
4.4 Expert-to-AI Chat Thread (Phase 3)โ
A persistent input at the bottom of the Expert Workspace pane (or in a dedicated "AI" tab within it) allows the expert to message the AI directly:
Expert: What was the last order this customer successfully received?
AI: Order #4398, delivered 2026-04-14. A replacement for a
previous lost shipment (#4301). Both orders to the same
address. No complaints after #4398.
Expert: Draft me a response that offers a ยฃ25 goodwill credit
without admitting fault.
AI: [Draft updated in AI Draft section above]
This is rendered as a simple two-party chat thread โ no special chrome. The AI's responses appear inline; if the AI updates the Draft above, a small indicator in the Draft section says "Updated by AI at 14:32".
Implementation note: The backend needs to support expert-initiated messages to the agent as a new message type that doesn't go to the client. The frontend should re-use the existing Socket.io infrastructure for real-time AI responses.
4.5 Trust and Transparency Rulesโ
As the AI becomes more agentic, the UI must make its boundaries clear:
- AI can never send a message to the client without expert approval. The "Accept & Send" action is always expert-initiated. Even with a confidence threshold of 0 (always auto-send), auto-sent messages should be visible in the Client View with an "auto-approved" label that the expert can audit.
- AI reasoning is always accessible. The expert can always see why the AI did what it did. The "Show AI reasoning" expander is permanent, not just for low-confidence items.
- AI insights are advisory, not instructions. The UI should never frame AI insights as directives ("You mustโฆ"). They are observations ("I noticedโฆ", "You may want toโฆ").
- AI draft provenance is preserved. When a message is sent as an edited AI draft, the system records both the original AI draft and the expert's edits. This feeds the correction learning loop and is accessible in the ticket audit trail.
5. Long-Running Request Patternโ
5.1 The Problemโ
The current UI assumes a ticket is a single exchange: client sends message โ AI drafts reply โ expert approves. Real work doesn't work like this. A request to "reconcile all Amazon orders for October" is a multi-day, multi-step task. The current UI has no model for this.
5.2 Agentic Task Integration โ Inline, Not Separate Pageโ
Agentic tasks should be visible inline in the ticket detail view, not on a separate /workspace/tasks page. When a ticket triggered an agentic task, the Expert Workspace pane shows a new section above Internal Notes: "Task Plan".