| UI or UX | UI + UX - Multi-turn conversation surface with transcript, composer, assistant responses, and conversation history | UI + UX - Primary editable input surface for composing and submitting an AI request | UI + UX - Topic-centered conversation with parent post, reply branches, unread participation state, and thread-level controls | UI + UX - Object-attached comment composer and comment list with authorship, replies, state, permissions, and moderation | UI + UX - Dynamic stream of article-like updates that may load or insert content at either end |
| UI guidance | Render chat as an ordered transcript with visible user and assistant roles, turn boundaries, timestamps or relative position, current draft composer, submitted prompt, response status, source or tool indicators, and conversation-level controls. | Render the prompt box as a labelled, editable composer with visible draft area, send control, context chips, attachment controls, model or mode indicator when relevant, character or token boundary feedback, and clear disabled or blocked-send reasons. | Render a threaded discussion around a visible parent topic or parent message, with reply rows that preserve author, timestamp, reply target, branch depth, unread or new state, and thread-scoped actions. | Render comments as anchored contributions with author identity, timestamp, body, optional attachment or selection context, edited state, reply target, and state labels such as open, resolved, hidden, deleted, or assigned. | Render the feed as a labelled stream of item boundaries where each item has a source or author, timestamp, title or body summary, type, actions, and enough context to stand alone as an article-like update. |
| UX guidance | Use a chat interface when users need a multi-turn assistant conversation where later prompts can depend on earlier turns, responses can be inspected or continued, and conversation history can be saved, resumed, deleted, or limited by policy. | Use a prompt box when users need to author a natural-language request for AI generation, transformation, analysis, or automation and must remain in control of the exact request being submitted. | Use threaded discussion when users need to follow, contribute to, or resolve a conversation that branches from one topic, question, channel message, or post and must keep replies understandable over time. | Use comments when users need to discuss, question, annotate, review, or leave follow-up notes on a specific object, selection, file line, record, document, or task without changing the primary content directly. | Use feed when users consume a continuing stream of posts, updates, stories, events, or collaboration activity and need to keep their reading position while new or older content appears. |
| Good UI | A research assistant chat shows user and assistant bubbles, turn numbers, source chips, streaming status, Stop, Copy answer, Regenerate, New chat, and a conversations list with the active chat title. | An assistant composer labels the selected source as Contract draft, shows Attach file, Use selected text, Format: table, and Send, and blocks sending when the referenced file is no longer available. | A support topic shows the original question, three top-level replies, one expanded reply branch, an accepted answer badge, unread branch marker, and thread-level Follow and Mute controls. | A document margin comment shows the selected paragraph, author, timestamp, body text, Reply, Resolve, Assign, and Copy link actions with the composer focused on that selection. | A project feed shows source avatar, actor, timestamp, object name, excerpt, item type, unread marker, reply and save actions, and a visible queued-new-items banner while the reader is midstream. |
| Bad UI | A chat panel shows one undifferentiated wall of text with no user or assistant roles, no submitted prompt, and no visible conversation identity. | A blank AI field shows only Ask me anything and sends vague requests with hidden page context. | All replies are rendered as identical flat messages with no indication of which parent or branch they answer. | A Notes textarea sits under a record and calls itself comments even though every user overwrites the same field. | New posts appear above the current paragraph and shift the page while the user is reading. |
| Good UX | A user asks for a policy summary, follows up with Compare that to the renewal clause, sees that the second answer used the first answer and selected file, then exports the two-turn transcript. | A user selects a policy paragraph, writes Summarize risks for a non-lawyer, sees Selected text and Output: bullets chips, submits, then edits and resends the exact prompt after the first answer is too broad. | A user opens a notification to a specific unread reply, sees the parent post and branch context, replies, marks the answer, and mutes future replies after resolution. | A reviewer comments on a selected line, adds an action item for Dana, receives a reply, resolves the comment, and can reopen it from the resolved filter. | A user pauses live updates, reads three older posts, sees 2 new updates waiting, then chooses Jump to latest when ready. |
| Bad UX | A follow-up uses prior conversation context after chat history has been switched off, without explaining that current-session context still exists. | A user presses Enter expecting a new line and accidentally sends an unfinished prompt to an external model. | A user clicks New reply and lands at the top of a long topic with no highlight, branch context, or last-read position. | A user writes a long comment, loses network connection, and the draft disappears when the page reloads. | A feed keeps loading forever, hides the footer, and gives no way to resume from a saved position. |
| Best fit | The user needs a back-and-forth assistant conversation with follow-up questions and answer refinement. | Users must write or revise an AI request before generation, analysis, transformation, or automation begins. | A topic or parent message can generate multiple reply branches that users need to follow over time. | Users need object-attached discussion without changing the primary object content directly. | Users consume a continuing stream of updates, posts, stories, comments, media, or collaboration activity. |
| Avoid when | The task can be completed with a single structured prompt box, form, or command. | The task is better expressed as a fixed form, button, or command with known parameters. | The feedback is a simple object-attached comment with no navigable topic discussion. | The user is simply entering a long answer into a form field. | The content is a finite set of objects that users need to filter, sort, select, compare, or manage. |
| Required state | Empty new chat with conversation title, mode, history or retention status, and a labelled composer. | Empty prompt state with label, helpful instruction, and no implied hidden submission. | Parent topic or parent message with author, timestamp, title or body, category, and reply count. | Empty comment list and first-comment composer. | Default feed with heading, order label, rendered item count or range, and article-like items. |
| Accessibility burden | Expose the transcript as an ordered region and use a sequential update strategy such as role=log for appended messages where appropriate. | Provide a programmatic label for the prompt editor and named controls for send, attach, remove context, clear, retry, and cancel. | Label the thread region with the parent topic or message title. | Label the comments region with the object or selection being discussed. | Give the feed a heading or accessible label and expose the current order or filter in text. |
| Common misuse | Treating chat as a large textarea plus latest answer with no durable turn identity. | Showing Ask anything as the only instruction while hiding what sources and tools the model can use. | Flattening every reply into a chronological stream and losing who replied to whom. | Using one shared Notes field as a comment system and overwriting prior contributors. | Calling any vertical card list a feed even when it is a bounded object collection. |