AI voice reminder calls before Calendly meetings to cut no-shows

Every 15 minutes, place a friendly AI voice reminder call to Calendly invitees whose meeting is about to start, then Slack you the outcome.

Agentic Task
CalendlyLiveKitSlackSalesOperationsMeeting WorkflowsNotifications & Alerts
PromptCreate

Build me an agent workflow that runs on a cron every 15 minutes and places AI voice reminder calls before upcoming Calendly meetings so we cut no-show rates on demos and consults.

On each run, use the Calendly List Scheduled Events operation to fetch events that start in the next 15 to 30 minutes. For every event, call Calendly List Event Invitees to grab each invitee's name, phone number, timezone, and the event's join link and topic. Skip anyone without a phone number and anyone whose event has an opt-out custom field set (something like a Do not call me question on the intake form).

For every remaining invitee, build a short reminder script that includes the host name, the event topic, the join link, the meeting time in the invitee's local time, and the phrase 'reply with reschedule if you can't make it.' Then place the call through LiveKit: use Create Room to spin up a fresh room named after the event and invitee, use Create Agent Dispatch to attach our reminder voice agent to that room, and use Create SIP Participant on our outbound trunk to dial the invitee's phone number and join them to the room.

Based on how the call goes, pick one of three outcomes and act on it. If the invitee confirms, use Slack Send a Message to DM the account owner (or post in a configurable team channel) 'attendance confirmed' with the invitee name and meeting time. If the invitee declines or asks to reschedule, use Calendly Mark Invitee as No-Show on that invitee and Slack a follow-up alert so a human can reach out. If the call goes to voicemail or nobody answers, have the voice agent leave a short voicemail with the join link and meeting time, then Slack a lightweight nudge so the host knows to expect maybe a late arrival.

Nuance to bake in: only dial between 8am and 8pm in the invitee's local time, dedupe against invitees already called in this run cycle, and never call the same invitee twice for the same event across runs (keep a small in-workflow record of which event+invitee pairs we've already dialed). If Calendly's opt-out field is set on any invitee, skip that invitee silently. Keep the Slack channel/DM destination, the reminder window, the quiet-hours range, and the reminder script phrasing all configurable at the top of the workflow.

Integrations to use: Calendly (List Scheduled Events, List Event Invitees, Mark Invitee as No-Show), LiveKit (Create Room, Create Agent Dispatch, Create SIP Participant), and Slack (Send a Message). Trigger: cron every 15 minutes.

Additional information

What does this prompt do?
  • Checks Calendly every 15 minutes for meetings starting in the next 15 to 30 minutes and pulls the invitee's name, phone number, and event details.
  • Places a short AI voice reminder call to each invitee that confirms the meeting, shares the join link, and offers a way to reschedule.
  • Reads the outcome of the call and acts on it. Confirmed attendees trigger a Slack heads-up to the host, reschedules and declines mark the invitee as a no-show and ping a human, and voicemail or no-answer leaves a short message and a lightweight Slack nudge.
  • Respects quiet hours, an opt-out custom field on the event, and dedupes so no invitee ever gets called twice for the same meeting.
What do I need to use this?
  • A Calendly account with access to your scheduled events and invitees.
  • A LiveKit project with an outbound SIP trunk configured (so the workflow can place phone calls) and your reminder voice agent registered.
  • A Slack workspace where the workflow can post outcome updates to your team channel or the account owner's DMs.
How can I customize it?
  • Change the reminder window. 15 to 30 minutes before start is a nice default, but you can move it earlier for consult calls or later for quick demos.
  • Adjust quiet hours or the daily send window if your customers are in different time zones or expect earlier or later contact.
  • Swap the Slack destination between a shared team channel and a direct message to the meeting host, and change what each outcome (confirmed, reschedule, no answer) posts.
  • Tweak the reminder script the voice agent reads, including the host name, event topic, and the phrase invitees can say to reschedule.

Frequently asked questions

Will this work for any Calendly event type?
Yes, as long as the invitee provided a phone number when booking. If your booking form does not collect phone numbers today, add a required phone field to the intake questions and future bookings will be reachable.
How do I let someone opt out of getting a reminder call?
Add a custom field or intake question on the event (something like a Do not call me checkbox). The workflow checks that field for each invitee and skips the call when it is set.
What happens if the invitee does not answer?
The voice agent leaves a short voicemail with the meeting time and join link, and the workflow sends a lightweight nudge in Slack so someone on your team can follow up manually if it matters.
Will the same person ever get called twice for the same meeting?
No. The workflow dedupes against invitees it already called this run and against the full history for that specific event, so nobody gets a repeat reminder for the same booking.
Can I keep the calls inside business hours?
Yes. By default the workflow only dials between 8am and 8pm in the invitee's local time. You can adjust that window when you set up the workflow.

Stop losing demos and consults to no-shows.

Connect Calendly, LiveKit, and Slack once, and Geni places a friendly reminder call before every meeting on your calendar.