Inbox
Where conversations with users live: threads in one tab, campaigns in the other. Every thread says who spoke, an end user, an agent or the model, and the three cannot be confused.


Conversations


A thread is a person's messages from the Messenger, answered from here. Every turn carries who wrote it: the end user, a named agent, or the model, and the attribution is a database rule rather than a convention, so an assistant turn can never wear a person's name. Threads are open, snoozed or resolved; replying reopens what needs reopening, snooze parks a thread until a date, assignment names whose it is, and new turns stream in live while the thread is on screen.
Where a message was written
A turn from the person carries the page they wrote it on. Under the body, a muted line in the same style as the turn's time gives the host and the pathname, with the page title in its tooltip, and the line opens that page in a new tab. Only an inbound turn has one: an agent and the model both answer from the console, so a page on either would name the console rather than the visitor. A message sent before the messenger carried a page, or from a surface that sends none, simply has no line. Only the pathname is kept, never the query or the fragment, so a token in a reset or checkout link never reaches the inbox.
Campaigns


A campaign is one message to many people: in-app, email or webhook, targeted at everyone, a cohort or named people. A sent campaign reports its deliveries by outcome, delivered, read, failed and pending, so a send that half-landed reads as exactly that rather than as done.
Proposals
The model's suggestions review where they point rather than on a tab of their own: a reply drafted for a thread waits in that conversation, a suggestion raised by an anomaly sits under that anomaly on Home, and one about a cohort sits on the cohort itself. Each proposal states its action in a sentence with its fields editable in place, plus its rationale; a person approves, adjusts or rejects it, and the decision is recorded with who made it. Nothing a proposal suggests happens without that approval.
Where this meets the API
The concept is the Messaging pillar. On the wire: threads are conversations and conversationThread, answered through replyToConversation, setConversationStatus and assignConversation, with live turns on the conversationTurns subscription; campaigns are messages and composeMessage; proposals are aiProposals with approveProposal, editProposal and rejectProposal (GraphQL reference). The user side of every thread is the Messenger, configured on its settings screen.