Book meetings over email on autopilot
An agent watches a dedicated inbox during business hours, proposes times that match your real calendar, and books the meeting once the other side picks a slot.
Build me an agent workflow that handles meeting scheduling over email end to end. It should run on a cron every 15 minutes during my business hours (default Mon-Fri, 9am-6pm in my configured time zone) and watch a single AgentMail inbox I use as my scheduling address.
On each run, call AgentMail List Messages on the inbox filtered to the unread label so we only look at threads with new activity since the last run. For each thread, call AgentMail Get Message on the latest message to read the body, sender, subject, and the original headers we will need to thread our reply correctly.
Classify each thread into one of three states and act accordingly:
State 1 - Fresh meeting request. The sender is asking to meet but no times have been offered yet. Call Google Calendar FreeBusy Query across the work calendars I configure (default to my primary calendar) for the next five business days. Pick three sensible slots that fit my working-hours window and the configured meeting length (default 30 minutes), spread across different days where possible, and never overlap any busy block. Then call AgentMail Reply To Message with a short, natural reply in my voice proposing those three times written in my time zone. Use the original message's Message-ID, In-Reply-To, and References headers so the reply stays in-thread.
State 2 - The requester picked one of the slots I previously offered (or counter-proposed a specific time). Parse the chosen time out of the reply. Re-check FreeBusy for that exact window in case my calendar changed since the proposal. If I am still free, call Google Calendar Create Event on my primary calendar with the requester as an attendee, a sensible title and description pulled from the thread, and conferencing enabled so a meeting link is generated. Then call AgentMail Reply To Message to confirm the booking with the time, the calendar link, and the meeting URL, again threading properly. Finally, call Slack Send a Message to the configured booking-visibility channel with a one-liner like "Booked 30 min with Jane Smith (jane@acme.com) for Thu 2pm PT." If the chosen time is no longer free, reply with the next three available slots instead of booking.
State 3 - Anything else (newsletters, unrelated mail, replies that are clearly not about scheduling). Leave the thread alone and do not reply.
Handle these edge cases:
1. Counter-proposals outside the times I offered: re-check FreeBusy for the proposed window and either book it or offer the closest open alternatives.
2. Reschedule requests on an existing thread: treat them as a fresh request and propose new times, noting that this replaces the prior booking.
3. Threads I already replied to in the same run should not be replied to twice; use the thread's message history to detect that.
Configurable inputs: the AgentMail inbox address, the list of Google calendars to check for availability, the booking calendar, the working-hours window, the meeting length, the number of slots to offer per reply, the time zone, the email signature and tone, and the Slack channel for booking notifications.
Additional information
What does this prompt do?
- Reads new replies in a dedicated meeting inbox every 15 minutes during your working hours.
- Spots fresh meeting requests, checks your real availability across your work calendars, and emails back three sensible times in your time zone.
- When the other side picks a slot, it creates the calendar event with them on the invite and replies to confirm with the meeting link.
- Posts a short heads-up to a Slack channel each time a meeting is booked so your team has visibility.
What do I need to use this?
- An AgentMail inbox you want to use as your scheduling address.
- A Google Calendar login, with the work calendars you want considered for availability.
- A Slack workspace and a channel where booking confirmations should be posted.
- Your working hours, default meeting length, and time zone.
How can I customize it?
- Change how often it runs and which hours count as business hours.
- Adjust the default meeting length, the working-hours window, and the number of times you offer per reply.
- Pick which calendars are checked for availability and which Slack channel gets the booking notice.
- Tweak the tone of the reply so it matches how you usually write to clients.
Frequently asked questions
Will it double-book me?
What if the other person suggests a time I did not offer?
Does it reply to every email that lands in the inbox?
Will the other person know it is an agent?
Can the team see what got booked?
Stop ping-ponging emails to find a time.
Connect your inbox, calendar, and Slack once, and let Geni run the back-and-forth for you every 15 minutes.