Daily sales call recap into HubSpot from Drive recordings
Every weekday at 7am ET, transcribe yesterday's sales call recordings and drop the summary, objections, and follow-up tasks straight into the right HubSpot deal.
Build me an agent workflow that updates HubSpot from the previous day's sales call recordings, with no manual recap writing from my reps.
Trigger: a cron that runs every weekday at 7am America/New_York.
On each run, do the following:
1) Use Google Drive's List Files to find new audio recordings in the folder named "Sales Calls". Filter the Drive query by parent folder, by audio mimeType (audio/mpeg, audio/mp4, audio/wav, audio/x-m4a), and by modifiedTime greater than the previous run's timestamp so each file is only processed once. Persist the high-water-mark timestamp between runs.
2) For each new file, download it with Google Drive's Download File Content.
3) Send the bytes to AssemblyAI using Upload Audio File, then call Submit Transcript with speaker_labels enabled so the transcript is diarized. Poll Get Transcript until status is completed (or error out cleanly if the transcript fails).
4) From the diarized transcript, identify which speaker is the rep and which is the prospect (use cues like who is introducing the company, who is pitching, and who is asking pricing or evaluation questions). Then extract the prospect's name and company.
5) In HubSpot, use Search Contacts to find the prospect (match on name and email if available, then fall back to company). Use Search Deals to find an open deal associated with that contact or company.
6) If a matching deal is found, use HubSpot Create Note to attach a recap to the deal containing: a tight 3-5 bullet call summary, a clearly labeled "Objections" section, and a "Commitments" section listing what each side agreed to. Then use HubSpot Create Task for each follow-up action the rep promised, with the rep as the owner, a short subject, the commitment as the body, and a sensible due date (default to 2 business days unless the call specifies otherwise).
7) If no matching deal is found, do NOT guess. Use Slack Bot's Send a Message to post a one-line note to the channel I pick (e.g. #sales-ops) that reads something like: "Needs manual association: <file name> (<prospect name or company if known>)". Include the Drive link to the recording.
Other requirements: process files sequentially so I don't blow through AssemblyAI concurrency limits; keep a short log of which file ids have been processed so reruns are idempotent; and skip files that are already older than 7 days as a safety cap.
The point is reps stop writing recap notes by hand, the CRM stays current without anyone touching it, and anything ambiguous gets bumped to a human instead of being silently misfiled.
Additional information
What does this prompt do?
- Sweeps a Google Drive folder of sales call recordings each weekday morning and picks up anything new since the last run.
- Transcribes each call with speaker labels so the rep can be told apart from the prospect, then pulls out a tight summary, objections raised, and commitments made.
- Finds the matching contact and deal in HubSpot and attaches a note plus follow-up tasks with sensible due dates, so the CRM updates itself.
- When no deal matches, posts a quick heads-up in Slack so the rep can attach the call by hand instead of letting the agent guess.
What do I need to use this?
- A Google Drive account with a dedicated folder where reps drop sales call recordings.
- An AssemblyAI account for speech-to-text with speaker labels turned on.
- A HubSpot account with permission to read contacts and deals, and to create notes and tasks.
- A Slack workspace and a channel for the manual-association fallback messages.
How can I customize it?
- Change the schedule or time zone, for example switch from weekdays at 7am ET to twice a day, or run it on weekends too.
- Point it at a different Drive folder, or filter for specific reps or accounts based on file naming conventions.
- Adjust the recap shape, like adding a sentiment line, pulling out pricing mentions, or setting different default due dates for follow-up tasks.
- Pick the Slack channel for the manual-association fallback, or send it as a direct message to the rep instead.
Frequently asked questions
Do my reps have to do anything different than they do today?
What happens if the workflow cannot figure out which deal a call belongs to?
Will this work with HubSpot Free?
How does it tell the rep apart from the prospect on the call?
Can I use Zoom Cloud Recordings or Gong recordings instead of Drive?
Stop hand-writing call recaps. Let HubSpot update itself.
Connect Google Drive, AssemblyAI, HubSpot, and Slack once, and Geni keeps every deal current with notes and follow-up tasks the morning after each call.