Postkast
Kus elavad vestlused kasutajatega: lõimed ühel vahekaardil, kampaaniad teisel. Iga lõim ütleb, kes rääkis, kasutaja, agent või mudel, ja neid kolme ei aeta segi.


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.
Kus sõnum kirjutati
Inimeselt tulnud kirje kannab lehte, millel ta selle kirjutas. Keha all annab vaikne rida, kirje kellaajaga samas laadis, hosti ja teenime, lehe pealkiri on selle kohtspikris, ja rida avab selle lehe uuel kaardil. See on ainult saabunud kirjel: nii agent kui mudel vastavad konsoolist, nii et leht kummalgi nimetaks konsooli, mitte külastajat. Sõnumil, mis saadeti enne, kui sõnumitooja lehte kandma hakkas, või pinnalt, mis ühtki ei saada, lihtsalt rida ei ole. Alles hoitakse ainult teenime, mitte kunagi päringut ega fragmenti, nii et lähtestus- või ostulingis peituv luba ei jõua postkasti kunagi.
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.