Daily sales meeting prep brief in Slack

Every weekday at 7am, send each AE a personal Slack DM with company context and ready-to-paste customer quotes for today's external meetings.

Agentic Task
Google CalendarHubSpotPeerboundSlackSalesMeeting WorkflowsDaily DigestsNotifications & Alerts

Build me an agent workflow that runs every weekday at 7am US Eastern time and sends each of my AEs a personal Slack DM with a short prep brief for today's external sales meetings. The trigger is a cron schedule.

For each rep on the team, the agent should:

1. Call Google Calendar's List Events on the rep's calendar for today's date in their timezone. Keep only events that have at least one attendee whose email domain is outside our company. Drop internal meetings, focus blocks, and all-day events with no external attendees.

2. For each remaining meeting, pick the most likely prospect company from the external attendee email domains. Call HubSpot's Search Companies to look up the company by domain or name and pull industry, deal stage, account owner, last activity, and any open deal amounts. If no HubSpot company matches, fall back to a domain-based identity (company name from the domain) and note in the brief that the account is not yet in HubSpot.

3. Using the company's industry and apparent use case, call Peerbound's List Moments and List Stories filtered by matching industry or use case tags. Select two or three short quotes (with customer name and title attribution) plus one customer story that map to the prospect's likely objections or evaluation criteria. Prefer recently approved, public-use content.

4. Draft a short bulleted brief for the meeting. It should include: meeting time and attendees, company context (industry, deal stage, owner, recent activity), 2-3 suggested talking points tailored to the prospect, ready-to-paste customer quotes with attribution, and a link or summary of the recommended customer story. Keep it scannable, under roughly 200 words per meeting.

5. Open a DM with the rep using Slack's Open a Conversation, then send the brief with Send a Message. If the rep has multiple external meetings, combine them into one DM with a header per meeting, ordered chronologically. If a rep has no external meetings today, skip them entirely.

Deduplication: maintain a per-rep memory of which Peerbound quote IDs and story IDs were sent in the last 30 days, and do not reuse the same quote or story for the same rep within that window. If no fresh proof exists for a meeting, send the brief anyway with company context and talking points only.

Error handling: if HubSpot has no record of the company, fall back to the email domain. If Peerbound returns no relevant moments or stories for the industry, broaden to adjacent industries before giving up. If Slack DM open fails for a rep, log it and continue with the rest of the team. Never block one rep's brief on another rep's failure.

Configuration I want exposed: the cron time and timezone, the list of rep email addresses (or a way to read team membership), the internal email domains to treat as non-external, and the maximum number of quotes and stories per meeting.

Additional information

What does this prompt do?
  • Pulls today's external meetings off each AE's Google Calendar and skips internal events.
  • Looks up each prospect company in HubSpot for industry, deal stage, and account owner.
  • Picks two or three relevant Peerbound customer quotes and a matching story for each meeting.
  • Drafts a short bulleted brief and sends it as a Slack DM to the rep before their first call.
  • Remembers what was sent so the same quote does not land in the same rep's DM twice in 30 days.
What do I need to use this?
  • A Google Calendar account that can see each rep's calendar.
  • A HubSpot account with companies, deal stages, and owners populated.
  • A Peerbound account with customer stories, reviews, and moments tagged by industry or use case.
  • A Slack workspace where the agent can send direct messages to each rep.
How can I customize it?
  • Change the send time and timezone, or run it twice a day for reps in different regions.
  • Adjust how meetings count as external (for example, exclude specific calendar titles or attendee domains).
  • Tune how the agent picks proof, like preferring stories from the same industry or only quotes from named accounts.
  • Pick which fields show up in the brief, such as last deal note, renewal date, or champion name.

Frequently asked questions

What counts as an external meeting?
Any calendar event with at least one attendee whose email domain is outside your company. You can refine this with your own rules, like ignoring partner domains or specific titles.
What happens if the prospect company is not in HubSpot yet?
The agent falls back to matching by the attendee's email domain so you still get a brief. It will note that the company is new and skip the deal stage line.
Will reps get the same quote twice?
No. The agent keeps a 30 day memory per rep so it does not reuse a quote it already sent to the same person.
Can I change the time the brief shows up?
Yes. The default is 7am Eastern on weekdays, but you can change the time, timezone, and days when you set up the workflow.
What if a rep has no external meetings today?
The agent skips that rep entirely so your team is not pinged with empty messages.

Stop scrambling through 15 tabs before every sales call.

Connect Google Calendar, HubSpot, Peerbound, and Slack once, and Geni delivers a personal prep brief to every AE each morning.