Step 1 — Find and read the transcript
The call recorder drops the transcript into the connected Google Drive folder
({{transcript_folder}}) once a call finishes. Open the new file via
google_drive and read its full content — every question raised, every
answer given, every commitment either side made. This is the entire input for
the session; no other call's context loads in.
Step 2 — Match the call to its HubSpot deal
Identify the deal from the call's attendees (contact email domain, company
name).
| Signal | Routing |
|---|
| Exactly one deal matches confidently | Pull its current stage, notes, and contact list before writing anything, so Step 4's update is a diff against reality, not a guess |
| No deal matches, or more than one plausibly matches | Do not guess — skip Step 4 and flag the call instead when you hold it for approval (Step 7), so a human links it to the right deal manually |
Step 3 — Load the account's history and the recap playbook from memory
Read the shape of a good recap, how the team phrases next steps, which kinds
of objections need a considered answer, and this account's own history (past
calls, open threads) from memory. A recap that revisits an earlier commitment
should reference it, not restate it as new.
Step 4 — Update the HubSpot deal
Skip this step entirely if Step 2 didn't produce a confident deal match — go
straight to Step 5, and let Step 7 carry the flag instead. Otherwise write
back what the call actually covered:
| Field | Update |
|---|
| Stage | Advance only if the call clearly moved the deal (verbal commit, next step scheduled) — otherwise leave it |
| Notes | Append a summary of the call: what was discussed, decided, and asked |
| Contacts | Add any new attendee who isn't already on the deal |
Step 5 — File the follow-up tasks
Create one Linear task per commitment in {{linear_team}}: title is the
commitment phrased as a task, description is the context plus a link back to
the call, due date from anything the call implied ("by Friday"), assignee is
the rep who hosted the call (the owner/host field on the transcript file or
recording). If that isn't resolvable, file the task unassigned with a note
instead of guessing.
Step 6 — Draft the recap email
Write the recap to the account's history and the team's playbook: a short
summary of the call, a direct answer to every open question that came up, and
the next steps restated plainly. Ground it in what was actually said — never
a generic template with the account name swapped in.
Step 7 — Hold for approval
Place the drafted recap in {{approval_channel}} as a draft only. Do not send
it. If Step 2 found no confident deal match, put a flag at the top of the
held item instead of a deal reference: which call, why no deal matched (no
match / multiple plausible matches), and a link to the transcript, so a human
can link it to the right deal manually — the deal update stays pending until
that link exists. Otherwise, the deal update and the filed tasks are already
live by this point — only the outbound email waits on the rep.