Surface associated companies from call transcripts.
After every recorded call, scan the transcript for companies and people mentioned in passing that aren't already tagged on the meeting in the CRM, and email the team a list of suggested records to link — so context that came up on the call doesn't get lost just because the notetaker only tags the invited participants.
Prompts used
The exact LLM prompts this automation calls — system instructions and user messages, in execution order, with the model each step uses.
- Transcript → Associated CRM Records →1 prompts
Reads a full call transcript and surfaces every company or entity mentioned in passing that the meeting should be linked to in the CRM — not just the participants on the invite. Solves a real CRM blindspot: most note-takers only attach a meeting to the explicit attendees, so when you spend twenty minutes on the call discussing a portco, a competitor, a co-investor, or a target you're tracking, that conversation never surfaces on those records later. This prompt returns a flat 'Entity — why it matters' list the downstream automation can fan out into CRM link-record calls, so every company you actually talked about gets the transcript on their page.
Reference build
Call recorders auto-link the people on the invite. They do not link the companies that came up during the conversation. This flow reads every recorded call's transcript, asks an LLM to list the companies-and-context that ought to be tagged, gates out the calls that weren't substantive, and emails the team a clean to-link suggestion list. The CRM stays human-curated; the human gets a head start.
Vendors below are our choices. The flow is roles-not-vendors; every layer swaps cleanly.
What the flow writes
One output. The flow deliberately does not auto-link anything in the CRM — wrong links are harder to clean up than ignored emails.
| Output | Shape |
|---|---|
| Outlook email | To: deal-team alias · Subject: Link New Companies to Meeting · Body: meeting title, meeting URL, then a Claude-generated list of Company — short context lines. The team links the worthwhile ones in Attio by hand. |
Gotchas
Most of the edge cases are about transcript hygiene and the quality gate. Skip either and the team unsubscribes from their own automation.
- 01The notetaker only tags invited participants. Whatever call recorder you use will create records and links for the people on the calendar invite — not the companies and people *mentioned mid-call*. That gap is the entire reason this flow exists.
- 02One-minute delay is load-bearing. Attio's transcript isn't ready the instant the webhook fires. A short delay before fetching avoids a 404 / empty transcript on the first read.
- 03Paginate the transcript. The transcript endpoint is cursor-paginated. The Code step walks every page until next_cursor is null and concatenates raw_transcript. Skipping pagination silently truncates long calls — and long calls are exactly where mid-call mentions matter most.
- 04Workspace-email filter prevents self-mentions. Step 4 filters participants down to @generalinnovation.com addresses. Used downstream to scope the suggestions — we don't want the LLM to suggest linking our own teammates as 'people to add.'
- 05Quality gate before email. A GPT-5 pass returns 'Yes' or 'No' on whether the call has substance. Short kicked-out-of-meeting recordings, demos that never started, and personal calls are filtered out. Without this, the team's inbox fills with empty 'Companies to add: (none)' emails and they stop opening them.
- 06Output is suggestions, not writes. The flow emails a list of company-and-context suggestions — it does NOT auto-link them in Attio. Linking a wrong company to a meeting is harder to undo than ignoring a suggested email. Humans stay in the loop.
- 07Context dash is the value. The Claude prompt forces a 'Company — short reason' format. Without the dash-context, the team can't decide which suggestions are worth linking; they just see a list of names.
- 08Transcript prep matters for the model. The Code step inserts a line break before each [HH:MM:SS] timestamp and converts \n to <br>. Cleaner segmentation → better entity extraction and a far more readable transcript when the LLM is reasoning about who said what.
Swap matrix
Every layer is replaceable. The hard requirement is a call recorder that exposes a transcript via API — most modern notetakers do.