Skip to main content

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 messages table) 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:

  1. 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.
  2. 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.
  3. 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:

  1. The AI Suggestion panel's edit textarea (mode === "edit" in AISuggestionPanel)
  2. 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โ€‹

TypeDefinitionVisible ToSource
Client InboundA message sent by the client (user/team member) through any channelExpert, Clientrole: "user"
Client OutboundA message that was actually delivered to the client โ€” could be AI-approved or expert-writtenExpert, Clientrole: "agent" or role: "expert" with sent: true
AI Draft ResponseThe AI's proposed reply, not yet sent to the clientExpert onlyrole: "agent" with sent: false / suggestion panel
AI Escalation NoteStructured explanation of why the AI escalated: trigger, confidence, risk classification, specific concernExpert onlyitem.reason, item.riskLevel, message.confidence
AI ReasoningThe AI's internal chain-of-thought that produced its confidence score and draftExpert only (on demand)message.metadata.reasoning (new field needed)
AI Proactive InsightAn unsolicited observation from the AI to the expert, mid-review ("I noticedโ€ฆ", "You may want toโ€ฆ")Expert onlyNew message type (Phase 2)
Expert MessageA response composed by the expert and sent to the clientExpert, Clientrole: "expert" with sent: true
Internal NoteExpert-only commentary on a ticket, never delivered to clientExpert onlyis_internal: true
Agentic StepA proposed or executed tool action as part of a multi-step planExpert, Client (simplified)AgenticTask.steps[n]
Progress UpdateA message sent to the client summarising task progress on a long-running requestExpert, ClientNew 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โ€‹

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):

  1. Expert reads AI Briefing Card (escalation reason, confidence, risk)
  2. Expert skims the Client View to understand conversation context
  3. Expert reads the AI Draft in the Expert Workspace
  4. Expert clicks "Accept & Send" in the AI Draft section
  5. The draft appears in the Client View composer, pre-populated
  6. A brief "Sending as Amyโ€ฆ" confirmation, then the message appears in Client View as a sent message (labeled "via AI, 54%")
  7. The AI Draft section collapses/clears in the Expert Workspace
  8. 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:

  1. 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.
  2. 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.
  3. 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โ€ฆ").
  4. 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".

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Task Plan โ€” 5 Steps โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚
โ”‚ โœ“ Step 1 ยท Fetch Amazon orders (Oct) โ”‚
โ”‚ Tool: amazon_query ยท Risk: LOW โ”‚
โ”‚ Status: Executed ยท 14:02 โ”‚
โ”‚ โ”‚
โ”‚ โณ Step 2 ยท Match orders to Shopify โ”‚
โ”‚ Tool: shopify_query ยท Risk: MEDIUM โ”‚
โ”‚ Status: Pending approval โ”‚
โ”‚ [โ–ธ View parameters] โ”‚
โ”‚ [Approve] [Reject with feedback] โ”‚
โ”‚ โ”‚
โ”‚ โ—‹ Step 3 ยท Update 14 mismatched SKUs โ”‚
โ”‚ Tool: shopify_query ยท Risk: HIGH โ”‚
โ”‚ Status: Waiting for Step 2 โ”‚
โ”‚ โ”‚
โ”‚ โ—‹ Step 4 ยท Generate reconciliation report โ”‚
โ”‚ โ—‹ Step 5 ยท Notify client with summary โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

The expert can see the full plan at a glance. Each step shows its tool, risk level, and current status. Pending-approval steps have inline Approve/Reject buttons. This eliminates the context-switch to /workspace/tasks entirely.

The /workspace/tasks page can remain as a "Task Overview" for experts who want to see all pending agentic task approvals across multiple tickets โ€” but the approval action itself is always available inline.

5.3 Client View for Long-Running Tasksโ€‹

In the Client View pane, the conversation looks different for long-running tasks. Instead of a linear message thread, there's a Task Timeline component:

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ ๐Ÿ”„ Amazon Order Reconciliation (Oct) โ”‚
โ”‚ Started: 2026-10-01 ยท 3 of 5 steps done โ”‚
โ”‚ [View details โ–ธ] โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โœ… Step 1 complete: Fetched 847 orders โ”‚
โ”‚ Amy ยท 2026-10-01 14:02 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โœ… Step 2 complete: Matched against โ”‚
โ”‚ Shopify. Found 14 discrepancies. โ”‚
โ”‚ Amy ยท 2026-10-01 14:18 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โณ Step 3 in progressโ€ฆ โ”‚
โ”‚ Updating 14 SKUs in Shopify. โ”‚
โ”‚ Amy ยท 2026-10-01 14:25 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

The client sees a clear progress trail. Each completed step generates a brief summary message (written by the AI, approved by the expert or auto-generated based on risk). The client doesn't see the internal step details โ€” just outcome summaries.

5.4 Progress Updates to Clientโ€‹

For long-running tasks, the expert should be able to send progress updates to the client without resolving the ticket. This is a new action in the Client View composer: a "Progress Update" message type that is visually distinct from regular responses and labeled as such for both the client and the expert.

The AI can draft progress updates proactively ("3 of 5 steps complete. Updating Shopify inventory now. Expected completion: 2 hours.") โ€” these appear in the AI Draft section with a "Progress Update" badge and can be accepted, edited, or discarded like any other draft.

5.5 Ticket State for Long-Running Tasksโ€‹

Long-running tasks need a richer status model than unread โ†’ in_review โ†’ resolved. The recommended additions:

StatusMeaning
task_in_progressAgentic task executing; waiting for steps to complete
awaiting_clientExpert sent a question to the client; waiting for reply
deferredDeferred by X hours; not immediately actionable

These map to the existing status field on conversations and are surfaced in the Queue List panel as distinct badges โ€” so experts can filter their queue by "tasks in progress" separately from "pending approval" items.


6. Simple vs. Complex Request Flowsโ€‹

The redesigned UI must handle both ends of the complexity spectrum without adding friction to the simple case.

6.1 Simple Flow โ€” "What's my refund status?"โ€‹

A client asks a simple, answerable question. AI confidence: 94%. Risk: LOW.

Expert experience:

  1. Ticket arrives in queue. AI Briefing Card shows: LOW ยท 94% ยท Escalation: Confidence just below threshold for this org (threshold: 101).
  2. AI Draft section shows the draft response โ€” 2 sentences.
  3. Expert reads both panes in ~10 seconds.
  4. Clicks "Accept & Send." Response appears in Client View. Done.
  5. Ticket auto-resolves (or expert clicks Resolve โ€” 1 click).

Total time: 15โ€“30 seconds. The redesign doesn't add steps to this flow. The AI Briefing Card is compact. The draft is visible without scrolling. One click sends it.

The queue list row for this ticket should visually convey its simplicity: a LOW risk badge, a high confidence indicator, and a "quick accept" affordance inline on the row (on hover: a โœ“ button that accepts-and-sends without even opening the detail view). This is a power-user feature for experts clearing a backlog of low-risk, high-confidence items.

6.2 Complex Flow โ€” "Reconcile all Amazon orders for October"โ€‹

A client requests a multi-step business operation. AI creates a 5-step agentic plan. Risk: HIGH for some steps.

Expert experience, Day 1:

  1. Ticket arrives. AI Briefing Card shows: HIGH ยท Agentic task pending approval ยท 5 steps.
  2. Task Plan section in Expert Workspace shows the full plan.
  3. Expert reviews Step 1 (risk: LOW) โ€” parameters look correct. Approves.
  4. Step 1 executes automatically. Client View updates with "Step 1 complete" summary.
  5. Expert reviews Step 2 (risk: MEDIUM) โ€” approves.
  6. Steps 3โ€“4 are HIGH risk. Expert adds an internal note: "Checked with client โ€” they confirmed OK to proceed on all 14 SKUs."
  7. Expert approves Steps 3โ€“4.
  8. Step 5 is a client notification โ€” expert reviews and edits the draft, sends.
  9. Ticket transitions to task_in_progress.

Expert experience, Day 2:

  • Queue shows ticket as task_in_progress with a "1 step needs review" badge (Step 4 failed โ€” a Shopify rate limit error).
  • Expert opens ticket, sees the failure in the Task Plan section.
  • AI Insight: "Step 4 failed due to Shopify rate limit. I recommend retrying after 6 hours or reducing the batch size."
  • Expert approves the retry. Done.

Expert experience, Day 3 (completion):

  • All steps complete. AI generates a summary progress update to the client.
  • Expert reviews and sends. Ticket resolved.

The same UI layout handles both Day 1, Day 2, and Day 3 interactions โ€” the Task Plan section expands or contracts based on how many steps exist, and the AI Draft section adapts to show whatever the AI needs the expert to approve next.

6.3 Medium Flow โ€” "Can you help me dispute this invoice?"โ€‹

A client needs back-and-forth. No agentic task. Multiple exchanges over 2 days.

Expert experience:

  1. Ticket arrives. Confidence: 61% (uncertain about the resolution). Risk: MEDIUM.
  2. AI Draft is a reasonable first response asking for the invoice details.
  3. Expert accepts draft. Response sent.
  4. Ticket status: awaiting_client.
  5. Client replies with invoice PDF (attachment). Ticket re-enters queue with new AI escalation (can't read PDFs).
  6. Expert reviews PDF inline (attachment viewer in Client View). Adds internal note with key details.
  7. Expert writes own response (the AI draft doesn't have the invoice details). Sends.
  8. Ticket resolved.

In this flow, the Client View pane shows the full back-and-forth growing over time. The Expert Workspace Notes section accumulates context across sessions. The AI Draft reflects each new escalation as it arrives.


7. Open Questions โ€” Decisions Needed Before Implementationโ€‹

7.1 Should the Composer Live in Client View or Expert Workspace?โ€‹

Recommendation: Client View. (Argued in Section 3.3.)

The counter-argument is that the composer is part of the "deciding and acting" workflow, which is what the Expert Workspace is for. But composing a message is fundamentally about the conversation โ€” you should be looking at the thread while you type. Place the composer where the context is.

Decision needed: Confirm this before building. It determines the layout of both panes.

7.2 What Happens to the Separate /workspace/tasks Page?โ€‹

Recommendation: Repurpose as a "Tasks Overview" dashboard (queue depth, pending approvals across all tickets) but remove the step approval flow from it โ€” approvals happen inline in the ticket detail.

The risk: some experts may prefer to batch-approve steps across multiple tickets without context-switching into each ticket. The Tasks Overview page could support this with an inline approval widget per task. But this is a power-user feature, not the primary path.

Decision needed: Should /workspace/tasks remain a functional approval surface, or become read-only overview? Determines whether we need to maintain two approval code paths.

7.3 How Is AI Reasoning Stored and Surfaced?โ€‹

Currently, message.metadata can hold arbitrary fields. The AI chain-of-thought is not consistently stored. Before Phase 1 of this redesign can work fully, the agent service needs to reliably populate message.metadata.reasoning with a human-readable explanation.

Decision needed: Define the reasoning field format. Recommendation: a plain-English paragraph (100โ€“300 words) summarising the AI's decision process. Not raw LLM output โ€” the AI should be instructed to write for an expert audience.

7.4 Confidence Score Granularity and Displayโ€‹

Currently confidence is a 0โ€“1 float displayed as a percentage. "54%" doesn't mean much to most experts. Consider:

  • A simple band system: "Low confidence (below 60%)" / "Moderate (60โ€“85%)" / "High (85%+)"
  • Or: keep the percentage but add a plain-English interpretation: "AI was uncertain about the refund eligibility"

Recommendation: Keep the number (it's meaningful to power users and for analytics) but always pair it with the escalation trigger text that explains why โ€” which is more actionable than the number alone.

Decision needed: Pure number, banded, or number + explanation? Affects the AI Briefing Card design.

7.5 What Does the Client See During Expert Review?โ€‹

When a ticket is in in_review, the client may be waiting. Options:

  1. Nothing โ€” client just waits (current behavior)
  2. An automatic "We're looking into this" holding message (sent when the ticket enters in_review)
  3. An expert-initiated progress update

Recommendation: Option 2 for tickets open >2 minutes. Auto-send a brief acknowledgment as Amy after a short delay, customisable per-org. This improves client experience without requiring expert action for every ticket.

Decision needed: Should this auto-acknowledgment exist? What's the delay threshold? Is it opt-in per org or platform default? Affects the conversation model significantly.

7.6 Multi-Expert Collaboration on a Single Ticket โ€” REMOVEDโ€‹

โš ๏ธ REMOVED. The proposed Collab/multi-expert feature was retired. Real-time co-review is not on the roadmap; cross-expert coordination happens in Slack. Internal notes + reassignment remain the only in-app mechanisms. See docs/features/collab.md.

The current system supports internal notes and reassignment but not real-time co-review. For complex tickets, two experts may want to discuss the ticket without one of them fully reassigning it.

Recommendation: Phase 2 feature. For now, internal notes are sufficient. In Phase 2, the Internal Notes section becomes a lightweight threaded discussion, not just a flat list of notes. Each note can be "replied to" inline.

Decision needed: Is inline expert-to-expert discussion a P1 feature (blocking this redesign) or P2 (can come later)? This affects how the Internal Notes section is structured in v1.

7.7 Inline "Quick Accept" on Queue Rowsโ€‹

Section 6.1 proposes a hover affordance on queue rows to accept-and-send without opening the detail view. This requires the draft text to be pre-loaded in the queue response (currently it's fetched separately per ticket).

Decision needed: Is the performance cost of pre-loading drafts in the queue list acceptable? Alternatively, the quick-accept could navigate to the ticket and auto-submit โ€” a two-step action. Both approaches have tradeoffs.

7.8 Correction Capture Flowโ€‹

When an expert edits an AI draft, the redesign shows a "Why did you edit?" prompt (correction category). Currently this is an optional field. The question is how to increase capture rate without adding friction.

Recommendation: Make the correction category a single required click (radio buttons or icon buttons, not a dropdown). The expert must select one category before "Send Edited" becomes enabled. This trades a tiny UX cost for significantly better training signal. Categories should be max 5 options with icons: ๐Ÿงพ Factual error ยท ๐ŸŽญ Tone ยท ๐Ÿ“Ž Missing context ยท โšก Wrong action ยท โœจ Just my preference.

Decision needed: Is mandatory correction categorisation acceptable to the Expert team? If experts find it annoying, they may prefer to use "Accept & Send" even on edited drafts to avoid it โ€” which defeats the purpose.


Appendix A โ€” Component Inventoryโ€‹

Components that need to be created or significantly modified:

ComponentActionNotes
TicketDetailPaneNewReplaces TicketDetail.tsx โ€” is the orchestration container for the two-pane layout
ClientViewPaneNewPane A โ€” client conversation + composer
ExpertWorkspacePaneNewPane B โ€” AI briefing, draft, notes, actions
AIBriefingCardNewEscalation note + risk + confidence + expandable reasoning
AIInsightsSectionNew (Phase 2)Proactive AI observations
AIExpertChatNew (Phase 3)Bidirectional expertโ†”AI thread
AIDraftSectionReplaces AISuggestionPanelSame logic, new layout and visual treatment
TaskPlanSectionNewInline agentic step approval (replaces /workspace/tasks approval flow)
ConversationThreadReplaces CustomerThreadStricter message type rendering, Client View only
InternalNoteThreadReplaces InternalCollab (Collab removed; see docs/features/collab.md)Always visible, threaded (Phase 2), not collapsible
ResponseComposerReplaces action bar textareaLives at bottom of Client View pane
TicketActionsReplaces action bar buttonsLives at bottom of Expert Workspace โ€” Resolve, Defer, Reassign, Assign
TicketHeaderRefactorShared bar above both panes, not duplicated
TicketRowMinor updateAdd quick-accept hover affordance, agentic task indicator
ProgressUpdateComposerNew (Phase 2)Client-facing progress update in Client View
MessageBubbleRefactorMessage type-aware rendering per taxonomy in Section 2

Appendix B โ€” Design Principles Summaryโ€‹

  1. One pane for the client's reality, one for the expert's decision space. Never mix them.
  2. The AI Briefing Card is the first thing an expert reads. It must be at the top of the Expert Workspace, always visible.
  3. There is one response composer. It lives in the Client View pane. AI draft actions populate it; they don't have their own separate send paths.
  4. Internal information has distinct visual DNA. Notes, AI reasoning, and escalation data are visually distinct from client-visible content. An expert should never accidentally confuse the two.
  5. Approve agentic steps inline. The context is in the ticket; the approval should be there too.
  6. Simple tickets get out of the expert's way. The quick-accept path should be 1โ€“2 clicks maximum.
  7. Complex tickets reward depth. The full task plan, AI reasoning, and note history should be accessible without leaving the ticket view.
  8. Build Phase 3 architecture now. The Expert-to-AI chat thread should be stubbed in Phase 1 (read-only AI briefing) so Phase 2 and Phase 3 are additive, not structural redesigns.