Tasks are the work a conversation creates. Most of them write themselves: when a customer asks for something the agent can't finish alone, the task is already on the board before anyone reads the message.
When an inbound message arrives, the agent identifies what the person actually wants - and a message often contains more than one thing. Each intent becomes a sub-task under a single parent for that conversation.
Dedupe is per lead, not per message
| Type | What it is |
|---|---|
| Epic | One per conversation. Titled and summarised from what the customer asked for, it's the container everything else hangs off. |
| Sub-task | One per intent - the demo request, the pricing question, the integration query. This is where the actual work is tracked. |
Manual tasks use the same shapes, so a piece of work you invented sits alongside one the agent found without looking foreign.
| Field | Notes |
|---|---|
| Number | A per-workspace reference you can quote in conversation. |
| Status | To do, In progress, Done. |
| Priority | Low, medium, high. |
| Assignee | One person, or nobody. |
| Due date | Optional. Overdue tasks surface in filters. |
| Source | Manual, or the channel that generated it. |
| Lead / conversation | What it's about - clicking through opens the thread. |
| Team | Which team owns it, when teams are in use. |
| Custom fields | Sprint, story points, labels - whatever your process needs. |
Comments are the running log: progress, questions, decisions. Mention a teammate to notify them. The agent also posts system comments when a customer adds something new to an existing request, so the task stays current without anyone transcribing the thread.
If auto-created tasks are more noise than help, they can be tuned rather than tolerated: