Hear who you're meeting and where their deal stands
Every weekday at 7am, get a 90 second voice briefing in Slack that walks through today's external meetings and where each deal stands.
Every weekday at 7am in my local timezone, build me a spoken audio briefing of today's external meetings and drop it into my Slack DM so I can listen on my commute instead of reading my calendar. Use Google Calendar, HubSpot, Groq, and the Slack Bot. Use a cron trigger set to weekdays only.
Step 1. Read today's calendar. Use Google Calendar's List Events to pull every event on my primary calendar from the start of today to the end of today in my local timezone. Include attendees and their response status, the event description, location, and start and end times. Then filter the list down. Skip all-day events. Skip any event I have declined. Skip internal-only meetings, meaning anything where every attendee shares my own email domain. Room and resource bookings do not count as external attendees. If nothing survives the filter, use the Slack Bot Send a Message operation to post a single line to my DM saying the day is clear of external meetings, then stop without generating any audio.
Step 2. Pull the CRM context. For each surviving meeting, take every external attendee email address and look the person up with HubSpot's Get Contact, passing the email address with the idProperty parameter set to email so it resolves by email rather than by record ID. Keep their first and last name, job title, and associated company. If no contact exists for that address, do not fail and do not drop the meeting; just note that this person is not in the CRM yet. Then use HubSpot's Search Deals to find open deals tied to that contact or their company. Exclude deals already in a closed won or closed lost stage. Keep the deal name, stage, amount, expected close date, and the date of the most recent activity. If someone has several open deals, lead with the largest one and mention that there are others.
Step 3. Write the spoken script with Groq. First call Groq's List Models and pick a current chat model from the response rather than hard-coding a model ID, because Groq deprecates IDs over time. Then use Create Chat Completion to write a script of roughly 90 to 120 seconds, which is about 250 to 320 words. The reply comes back at choices[0].message.content. Walk my day in chronological order. For each meeting cover four things: what time it is, who I am meeting and their company, where the deal stands including stage and amount and what happened most recently, and one specific thing I should be ready for based on the deal stage and recent activity. Open with one sentence shaping the day, and close with one sentence naming the single meeting that matters most.
The script is meant to be heard, not read, and that changes how it should be written. Tell the model to use no bullet points, no headers, no markdown, no emoji, and no numbered lists. Use spoken transitions the way a person actually talks, like "first up at 9" and "then at 11" and "after lunch you have". Round every number so it can be said out loud: say "about forty thousand dollars" rather than reading out an exact figure to the cent. Say dates and times the way a person says them. Use first names and company names only, and never speak an email address. Keep it warm and brisk, the way a good chief of staff briefs someone in a car. No em dashes.
Step 4. Generate the audio with Groq. Pass the finished script to Groq's Create Speech operation with a text-to-speech model and a clear, natural voice. Important: this endpoint returns raw audio bytes, not JSON, so treat the response as a binary audio file and carry it straight through to the Slack upload. Do not try to parse it as a JSON response body.
Step 5. Deliver it to Slack. Use the Slack Bot Look Up User by Email operation to find me, then Open a Conversation to get the DM channel ID. Use the Slack Bot Upload a File operation, which runs Slack's three-step upload flow, to put the audio file into that DM. Title the file with today's date, for example "Pipeline briefing, Tuesday 12 August". Send a short accompanying message with the upload: one line per meeting giving the time, the person, their company, and the deal stage, so I can scan it on screen when I cannot listen.
A few rules. Never run on weekends. If the audio generation fails for any reason, post the written script to my DM instead and tell me the audio failed, so I still get the briefing. Keep the spoken briefing under two minutes. Never include attendee email addresses in the audio or the written summary. If a meeting title is generic like "Sync" or "Intro call", use the attendee and company names to make it recognizable instead.
What does this prompt do?
- Runs every weekday at 7am, reads today's calendar, and drops the internal-only meetings so you only hear about the people you are actually selling to.
- Looks up each external guest in your CRM and pulls their company, their open deal, the stage it is in, the amount, and what happened most recently.
- Writes a spoken script that walks your day in order and, for each meeting, names who you are seeing, where the deal stands, and one thing to be ready for.
- Turns that script into a 90 to 120 second audio file and posts it to your Slack DM with a short written summary you can scan if you cannot listen.
What do I need to use this?
- A Google account with the calendar your meetings live on.
- A HubSpot login with your contacts and deals in it.
- A Groq account with an API key, which powers both the writing and the voice.
- A Slack workspace and permission to install the General Input bot so it can message you.
How can I customize it?
- Change the time or the days it runs, for example 6:30am if you leave early, or Monday through Saturday.
- Adjust the length and tone, from a tight 60 second version to a fuller two minute walkthrough.
- Send it to a channel your whole sales team listens to instead of your own DM, or brief on tomorrow's meetings the evening before.
- Change what earns a mention, for example only meetings attached to deals above a certain size.
FAQs
What happens on days when I have no external meetings?
Will it work if some of my guests are not in HubSpot?
How long is the audio and how much does it cover?
Does this work on HubSpot Free?
Will it read my clients' email addresses out loud?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.
Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.
Walk into every meeting knowing where the deal stands.
Connect Google Calendar, HubSpot, Groq and Slack once, and your briefing is waiting every weekday at 7am.