Extract action items from call transcripts.
When a call recording finishes, hand the meeting off to an agent that pulls the transcript, extracts only concrete action items, links each task to the right company/person record, assigns it to the right teammate, and sets a due date — written straight back into the CRM. Executive is never assigned; their tasks attach to the company record unassigned.
Prompts used
The exact LLM prompts this automation calls — system instructions and user messages, in execution order, with the model each step uses.
- Post-Call Task Extraction →1 prompts
Agent routine that fires whenever a new call recording lands in the CRM. Pulls the transcript, extracts only concrete action items, links each task to the right company/person record, assigns it to the right teammate, and sets a realistic due date. Tool-agnostic by design — point it at any CRM, project tracker, or task app via the same routine.
Reference build
When a call recording finishes, hand the meeting off to an agent that pulls the transcript, extracts only concrete action items, links each task to the right company / person record, assigns it to the right teammate, and sets a due date — all written back directly into the CRM.
The orchestrator is a deliberately thin 3-step Zap. The actual work — transcript reading, task drafting, owner resolution, CRM writes — happens inside the Post-Call Task Extraction agent routine, which holds the CRM tools and the system prompt that defines what counts as a valid task.
Fields produced along the way
| Field | What it holds |
|---|---|
| meeting_id | From the recording-ready webhook — the only identifier the trigger ships |
| meeting.title | Pulled from /v2/meetings/{id} — passed to the agent so it has human context before it goes hunting in the CRM |
| meeting.recorded_at | Timestamp used by the agent to set realistic due dates relative to the call |
| meeting.participants | Internal + external attendees — the agent uses these to resolve company/person records and decide owners |
| routine_input | Single JSON payload POSTed to the Claude routine — call id, title, recorded_at, participants |
| extracted_tasks (agent output) | Each task has: action sentence, owner, linked company + person, due date. The agent writes these directly into the CRM via tools — no return to Zapier. |
Gotchas
- 01Zapier's job is plumbing, not intelligence: the orchestrator just normalizes the webhook into a clean payload and hands it to the agent. All transcript walking, task drafting, owner resolution, and CRM writes happen inside the Claude routine via tools. Don't try to do task extraction in Zapier code steps — you'll rebuild the agent badly.
- 02Trigger fires before metadata settles: the recording-ready webhook lands before participants/title are fully written to the meeting record. The fetch step in Zapier resolves this race because by the time the agent fires, the meeting record is hydrated.
- 03Fire the routine — don't await it: the third step is a fire-and-forget POST to the routine endpoint. The agent runs asynchronously for minutes; Zapier should not block on the result. If the agent fails, it logs to its own run history, not the Zap.
- 04Graceful no-op on missing call: if the agent can't find the meeting (deleted before it runs), the routine ends cleanly with no tasks created. Codified in the system prompt — do not retry from the orchestrator.
- 05Never assign tasks to the executive: hard rule in the prompt. Tasks the partner would have owned get attached to the company record with no assignee. Stops the founder from quietly inheriting a task list every Monday.
- 06Only concrete, executable tasks: the prompt rejects high-level judgment items like 'evaluate fit' or 'decide whether to invest.' Every task must have a verb, a named subject, and an owner — otherwise the agent creates nothing.
- 07Link every task to the right CRM record: tasks float and get ignored. The agent is required to find the company (and person, when relevant) and attach the task before writing it. No record match → no task.
- 08Auth lives with the agent, not the Zap: Zapier holds only the routine bearer token. The Attio tools are configured inside the agent's MCP, so rotating CRM credentials doesn't require touching the Zap.