Foundations
Conversation and relationship model
Keep queue state, sender review, work type, sales stage, ownership and product relationships as separate dimensions.
On this page
Conversation states
| State | Meaning |
|---|---|
| new-senders | Pending screening shown inside Needs reply |
| needs-reply | A team response is needed |
| waiting | A reply has been added; waiting for the next response |
| follow-up | A planned outreach date exists |
| reference | Kept for reference outside active queues |
| closed | Inactive; reopen before composing |
| junk | Inactive; restore before composing |
Independent fields
| Field | Values / boundary |
|---|---|
| WorkType | Support / Sales / General |
| SalesStage | New / Contacted / Interested / Won / Lost |
| assigneeId | Optional active teammate; distinct from copied participants |
| participantIds | Added internal teammates; not the customer contact |
| senderReview | pending / approved / reference / junk; retained decision history |
| Contact.relationships | Customer or Prospect per product; optional stage and follow-up |
| Scope | All / company / product / inbox; distinct from permission enforcement |
| Message.deliveryStatus | sending / sent / delivered / deferred / failed / blocked |
Lifecycle rules
Needs reply includes pending new senders in its count. The list sorts needs-reply items by waitingMinutes descending; other queues preserve their source order. Reviewing a sender changes conversation state but the senderReview field remains, so review history can still be navigated.
Contacts can be customers of one product and prospects of another. Assignment is responsibility for a conversation; a relationship owner manages the person record; work classification is a teammate’s role label. None should be treated as a substitute for authenticated authorization.
Source references
| File | Responsibility |
|---|---|
| lib/types.ts | Typed states and records |
| lib/helpers.ts | Labels, scope matching and identity lookup |
| components/inbox/conversation-list.tsx | Queue filtering and sort |
Examples from the app
Actual Sonarist components with fictional conversations, people, example.com addresses and simulated operational states. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-08 · Revision 10f45d1377b5 · Documentation v1.0.0