Problem
People scanning a conversation need to distinguish their questions from the assistant’s answers without rereading every message.
Solution
Give user messages a compact, distinct treatment. Let assistant responses use enough width for readable prose, tables, and code.
Keep questions easy to spot so they act as landmarks in a long conversation. Collapse long pasted input behind a clear expansion control when it would otherwise dominate the page.
Identify each speaker for screen readers as well as visually. Do not rely on color or alignment alone. Show timestamps or avatars only where they help people understand the conversation.
Use when
A person and an assistant exchange messages that remain visible in a conversation.
Don’t use when
The exchange is one question and one answer with no history, which is how answer engines and most in-product assists work. There turn chrome is pure decoration, and the answer reads better as a document with the question as its heading.
Trade-offs
Chat bubbles can leave too little room for long answers. Removing all visual differences makes speakers harder to distinguish. Collapsing long messages saves space but needs a clear signal that some text is hidden.
Checklist
- Can the reader find their own question from six turns ago without reading any answers?
- Does the assistant turn run at the full measure, or is it boxed?
- What does a two-thousand-word pasted user turn do to the layout?
- Is the speaker exposed programmatically, or only through colour and position?
- Does the attribution survive right-to-left text?
- What does the avatar or the timestamp earn on every single turn?
- How does a code block inside an assistant turn behave at the narrowest supported width?
- Is there banding down the page once turns get short?
- Where does a system message or an error sit in the two-voice scheme?
- Can a single turn be linked to, quoted, or shared on its own?
Compare
ChatGPT tints and constrains the user turn and lets the assistant turn run full width with no avatar. That’s the asymmetry in its most common form. Claude does the same and pushes it further by moving long generated documents out of the transcript entirely, so the turn stays a turn. Perplexity drops turn chrome almost completely: the question becomes a heading and the answer is a document underneath it, which is the right call for one-shot use and loses the thread once a conversation actually develops. Slack takes the opposite trade, because an AI reply lands in the existing message list and inherits the same avatar, name and timestamp row every human message gets. The assistant becomes a participant rather than a surface.
Related
Streaming response fills the assistant’s message. Response actions provide controls for that answer. Conversation history organizes complete conversations.
Edit and resend revises a user message. Composer is where new messages are written.