Automation · Playbook 03

Route call transcripts to partner inbox.

Each partner gets only their own calls in their inbox, summarized and linkable, without forwarding rules.

Pure Operations

Prompts used

The exact LLM prompts this automation calls — system instructions and user messages, in execution order, with the model each step uses.

  • Diligence Call Notes
    2 prompts

    Two-prompt set that turns a raw call transcript into structured internal call notes ready to email the partner inbox. The first prompt generates HTML-formatted notes locked to four fixed sections (Key Insights, Diligence Notes, Decisions & Agreements, Next Steps & Action Items). The second prompt acts as a Yes/No substance gate so misrecorded or non-substantive calls never reach a partner inbox.

Reference build

When a recorded call finishes, generate a structured set of internal call notes from the transcript and email it to the partner who owns the relationship. Notes arrive within minutes, formatted to the firm's house style, ready to skim before the next touchpoint.

The notes themselves are produced by the Diligence Call Notes prompt set — Key Insights, Diligence Notes, Decisions & Agreements, Next Steps. A second LLM acts as a substance filter so partners only see emails worth their time.

Flow
01 · Trigger
Meeting recording ready (webhook)
Fires with meeting_id + call_recording_id
02 · Settle delay
Wait 1 minute
Lets the notetaker finish writing participants and title
03 · Fetch meeting
GET /meetings/{meeting_id}
Pulls title and the participants array
04 · Resolve owner
Find partner record from meeting → company → owner
The routing key — decides who actually receives the email
05 · Filter to firm participants
Keep only @firm-domain attendees
Inline JS — strips external attendees from the routing list
06 · Gate on routing match
Continue only if a firm participant matched the routing rule
Drops calls that aren't owned by anyone on the partner roster
07 · Fetch full transcript
Paginate every transcript page, concatenate
Cursor-walk and join; insert newline before each [hh:mm:ss] turn
08 · Fetch recording deep-link
GET /call_recordings/{id} → web_url
So the email can link straight to the playable recording
09 · Resolve participants
Names + LinkedIn for non-firm attendees
Looks up each external email in CRM; falls back to plain name when no record
10 · Generate diligence call notes
LLM — Diligence Call Notes prompt (GPT-5.2)
HTML output, four fixed sections, transcript-grounded, no markdown
11 · Substance filter
LLM — Yes / No on whether to send
Second model reads the notes and decides whether the call had real substance
12 · Send email
Send HTML email to the routed partner inbox
Subject = meeting title. Body = participants + recording link + notes.

Fields produced along the way

FieldWhat it holds
meeting_id / recording_idFrom the webhook — used to fetch meeting metadata and walk the transcript
meeting_titleFrom the Attio meeting record — becomes the email subject
participantsAll meeting attendees with email + name + LinkedIn (where resolvable)
workspace_participantsFiltered to @firm-domain attendees — used to decide which partner inbox(es) receive the email
web_urlDeep-link to the recording in the notetaker, included in the email so the partner can replay
full_transcriptPaginated transcript, joined with newline before each [hh:mm:ss] speaker turn
ai_notesHTML-formatted internal call notes from the diligence-call-notes prompt
is_substantiveYes/No from the substance filter — gates the send step

Gotchas

  • 011-minute settle delay: the recording webhook fires before the meeting metadata (participants, title) is fully written. A short delay collapses race conditions without slowing the partner experience.
  • 02Workspace-domain filter is load-bearing: filter participants to @firm-domain only before deciding recipients. Otherwise an external attendee's email accidentally becomes the routing key and the notes get sent off-firm.
  • 03Substance gate prevents inbox fatigue: short, off-topic, or notetaker-crashed calls produce confidently-written but vacuous summaries. A second LLM pass that says Yes/No on whether the notes are worth sending kills the noise — partners stop ignoring the channel.
  • 04Pagination is non-optional on the transcript: the endpoint cursors through pages. Without walking the cursor you summarize only the first few minutes of every long call.
  • 05HTML-only output spec in the notes prompt: the email body is HTML. Tell the model to output ONLY <br>, <b>, <ul>, <li> — no markdown, no other tags. Otherwise raw ** and ## ship to partner inboxes and look broken.
  • 06Four fixed top-level sections: Key Insights / Diligence Notes / Decisions & Agreements / Next Steps. Locking the structure makes the email skimmable and lets partners build muscle memory ('I read the bullets, I skim the rest').
  • 07GI-internal stuff is stripped from notes: the prompt explicitly excludes content about the firm itself (scheduling, internal opinions). The notes are about the OTHER party — that's the part worth preserving.
  • 08Recording link in the email: include a deep-link back to the notetaker. The notes are the headline; the link is the source-of-truth fallback when a bullet feels off.

Swap matrix