Daily Slack DM with prep briefs for every Calendly meeting
Each weekday at 7am, get one Slack DM with a prep brief for every Calendly meeting on your calendar today, enriched with HubSpot deal and contact context.
Build me an agent workflow that runs every weekday at 7am America/New_York and sends me a single Slack DM with a prep brief for every external Calendly meeting on my calendar that day.
Trigger: cron, weekdays at 07:00 America/New_York.
Step 1 — Pull today's meetings. Use Calendly's List Scheduled Events for my user, filtered to events with min_start_time = today 00:00 in my timezone and max_start_time = today 23:59. Status = active. For each scheduled event, capture the start time, end time, event type name, location, and the event UUID.
Step 2 — Pull invitees. For each scheduled event, call Calendly's List Event Invitees and collect each invitee's email, name, timezone, and the questions_and_answers array (the intake form responses). If an invitee's email domain matches my company domain (I'll provide it as an input, e.g. acme.com), skip that meeting entirely — it's internal.
Step 3 — Enrich from HubSpot. For each remaining invitee email, call HubSpot's Get Contact with idProperty = email, requesting these properties: firstname, lastname, jobtitle, company, lifecyclestage, hs_lead_status, notes_last_contacted, hs_last_sales_activity_date, hubspot_owner_id. If Get Contact 404s, fall back to HubSpot's Search Contacts with a filter on email. Then call HubSpot's Search Deals with filters dealstage NOT IN closedwon/closedlost AND associations.contact = the contact id, requesting dealname, amount, dealstage, closedate, pipeline. If the contact isn't in HubSpot at all, mark the meeting as MISSING CRM CONTEXT.
Step 4 — Synthesize the brief. For each meeting, write a one-screen prep brief with: meeting time and event type; who's attending (name, title, company); CRM snapshot (lifecycle stage, last activity date, account owner); open deals (name, stage, amount, close date) or a note that there are none; the invitee's intake answers verbatim; three suggested talking points grounded in the CRM context and intake answers; and two open questions to ask. If the contact is missing in HubSpot, replace the CRM section with a clear 'No HubSpot record — enrich before the meeting' callout.
Step 5 — Deliver. Combine all briefs (sorted by meeting start time) into one Slack message and use Slack's Send a Message to DM it to me. Lead with a one-line header like 'Today's prep, 3 external meetings'. Use Slack mrkdwn formatting (bold names, bullet lists). If there are zero external meetings today, send a short DM confirming there's nothing to prep so I know the workflow ran.
Inputs to expose for me to configure: my company email domain (for the internal-meeting filter), my Slack user ID or DM target, and my timezone (default America/New_York). Use my connected Calendly, HubSpot, and Slack accounts.
What does this prompt do?
- Pulls every Calendly meeting on your calendar for the day and the answers each invitee gave when they booked.
- Looks up each invitee in HubSpot and pulls lifecycle stage, job title, company, last activity, and any open deals.
- Writes a one-screen prep brief per meeting with who you are meeting, deal context, suggested talking points, and open questions.
- Sends the whole digest as a single Slack DM to you at 7am ET on weekdays so you start the day prepared.
- Skips internal meetings and flags any invitee missing CRM context so you know who to enrich.
What do I need to use this?
- A Calendly account that owns or hosts the meetings you want briefed.
- A HubSpot login with access to your contacts and deals.
- A Slack workspace where the agent can DM you.
- Your company email domain so internal meetings can be filtered out.
How can I customize it?
- Change the schedule from 7am ET weekdays to whenever your prep window starts, including weekends.
- Adjust which HubSpot properties get included, for example add account owner, renewal date, or custom ICP fields.
- Send the digest to a private channel instead of a DM, or fan out one message per meeting if you prefer.
- Tune the brief format, for example more talking points, a competitive note, or a recap of the last meeting.
FAQs
What if an invitee is not in HubSpot yet?
Will it brief internal meetings with my own team?
Can I get this in a private channel instead of a DM?
What if I have no external meetings that day?
Does this work with HubSpot Free?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.
Walk into every meeting already briefed.
Connect Calendly, HubSpot, and Slack once, and Geni delivers your prep brief by 7am every weekday.