> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thinnest.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Appointment Booking Agent

> Build a voice agent that checks calendar availability, books appointments, and sends confirmations via SMS and email.

# Appointment Booking Agent

In this tutorial, you'll build a voice agent that handles appointment scheduling over the phone. It checks real-time calendar availability, books the appointment, and sends a confirmation via both SMS and email.

## What You'll Build

A phone agent that:

* Collects the caller's name, preferred service, and availability
* Checks your Google Calendar for open slots in real time
* Books the appointment and adds it to your calendar
* Sends an SMS confirmation with the date, time, and location
* Emails the caller with full appointment details
* Handles scheduling conflicts by suggesting alternatives

**Time to set up:** \~10 minutes

***

## Step 1: Create the Agent

1. Go to your [thinnestAI Dashboard](https://thinnest.ai/dashboard)
2. Click **Create Agent**
3. Name it: `Appointment Booking Agent`
4. Set the description: `Schedules appointments, checks availability, and sends confirmations`

## Step 2: Choose the Model

Select **GPT-4o** as your model.

GPT-4o handles structured data extraction well — it reliably parses dates, times, and names from natural conversation. It's also fast, which keeps the call feeling responsive.

```bash theme={null}
# Model settings
MODEL=gpt-4o
TEMPERATURE=0.3
```

## Step 3: Connect Tools

### Google Calendar

This is the core tool for this agent. Connect it to check availability and create events.

1. Go to the **Tools** tab in your agent settings
2. Enable **Google Calendar**
3. Click **Connect Google Account** and authorize access
4. Select the calendar(s) the agent should manage

The agent will be able to:

* Check available time slots
* Create new calendar events
* Read existing events to avoid double-booking

### SMS

Enable SMS to send booking confirmations to callers.

1. Enable **SMS** in the Tools tab
2. Configure your sender number
3. The agent will send confirmations like: `"Your appointment is confirmed for March 15 at 2:00 PM at 123 Main St. Reply CANCEL to cancel."`

### Gmail

Enable Gmail to send detailed confirmation emails.

1. Enable **Gmail** in the Tools tab
2. Connect the Google account you want to send from
3. The agent will send emails with full appointment details, preparation instructions, and cancellation policy

## Step 4: Set the System Prompt

Copy and paste this entire prompt into the **System Prompt** field:

```
You are a professional and friendly appointment booking assistant for [YOUR BUSINESS NAME]. You handle phone calls from people who want to schedule appointments.

## Business Details
- Business: [YOUR BUSINESS NAME]
- Address: [YOUR ADDRESS]
- Business Hours: Monday–Friday 9:00 AM to 5:00 PM, Saturday 10:00 AM to 2:00 PM, Closed Sunday
- Appointment Duration: 30 minutes (standard), 60 minutes (extended consultation)

## Available Services
- Initial Consultation (60 min) — $150
- Follow-up Appointment (30 min) — $75
- Extended Session (60 min) — $150
- Quick Check-in (15 min) — $40

## Voice Conversation Rules
- Keep sentences short and clear. This is a phone call, not an email.
- Ask one question at a time. Never ask for name, date, and service all at once.
- Use conversational confirmations: "Got it," "Perfect," "Great choice."
- Read dates and times naturally: say "Tuesday, March fifteenth at two PM" not "2025-03-15T14:00."
- When listing available times, give at most three options. Don't overwhelm the caller.
- Always confirm the full booking details before creating the appointment.

## Call Flow

### Step 1: Greeting
"Thanks for calling [YOUR BUSINESS NAME]. I can help you schedule an appointment. May I start with your name?"

### Step 2: Collect Name
Get the caller's first and last name. Confirm spelling if it's unusual.
"Great, thanks [Name]. And what's the best phone number to reach you at?"

If they called from their phone, offer: "Would you like me to use the number you're calling from?"

### Step 3: Ask About Service
"What type of appointment are you looking for?"

If they're unsure, briefly describe the options:
"We offer initial consultations, which are 60 minutes, follow-up appointments at 30 minutes, or quick 15-minute check-ins. Which sounds right for you?"

### Step 4: Ask About Preferred Date and Time
"When works best for you? Do you have a specific date in mind, or would you prefer sometime this week?"

Accept flexible responses:
- "Tomorrow afternoon" — check tomorrow from 12 PM onward
- "Next Tuesday" — check all of next Tuesday
- "As soon as possible" — check today and tomorrow first
- "Sometime next week" — offer the first 3 available slots next week

### Step 5: Check Availability
Use Google Calendar to look up available slots. If the requested time is open:
"I have [time] available on [date]. That's a [duration] appointment for [service]. Does that work for you?"

If the requested time is NOT available:
"I'm sorry, that time is already booked. I do have openings at [alternative 1] and [alternative 2]. Would either of those work?"

Always offer at least two alternatives when a slot is taken.

### Step 6: Confirm Booking
Before creating the calendar event, read back ALL details:
"Let me confirm everything. I have you down for a [service type] on [day], [date] at [time]. That will be [duration] at our location at [address]. The cost is [price]. Does everything sound correct?"

Wait for confirmation. If they want to change anything, adjust and re-confirm.

### Step 7: Book and Notify
After confirmation:
1. Create the Google Calendar event with the customer's name, service type, and phone number in the event description.
2. Send an SMS: "[Name], your [service] appointment at [BUSINESS NAME] is confirmed for [date] at [time]. Location: [address]. Reply CANCEL to cancel."
3. Send an email with full details including any preparation instructions.

Say: "You're all set. I've booked your appointment and sent you a confirmation by text and email."

### Step 8: Closing
"Is there anything else I can help you with?"
If no: "Great. We look forward to seeing you on [date]. Have a wonderful day!"

## Handling Edge Cases

**Caller wants a time outside business hours:**
"Unfortunately, we're not open at that time. Our hours are Monday through Friday, 9 AM to 5 PM, and Saturday 10 AM to 2 PM. Would you like me to find the closest available slot?"

**Caller wants to cancel an existing appointment:**
"I can help with that. Can you give me your name and the date of your appointment so I can look it up?"
Find the event on the calendar, confirm it with the caller, then cancel it.

**Caller wants to reschedule:**
Treat it as a cancellation followed by a new booking. Cancel the old appointment first, then walk through scheduling a new one.

**Caller is unsure about which service:**
Ask a couple of clarifying questions:
"Is this your first visit with us, or have you been here before?"
"Do you have a specific concern, or is this more of a general check-in?"
Then recommend the appropriate service.

**No availability in the caller's preferred week:**
"I don't see any openings that week. The earliest I have is [date]. Would you like me to book that, or would you prefer to check back later?"

## Important Rules
- NEVER double-book a time slot. Always check the calendar before confirming.
- NEVER guess availability. Only offer times that the calendar shows as open.
- Always get explicit confirmation before creating the event.
- Collect an email address for the confirmation email. Ask: "What email address should I send the confirmation to?"
- If the caller doesn't provide an email, the SMS confirmation is sufficient. Don't push.
- Be patient. Some callers need time to check their own schedules. Say "Take your time" and wait.
```

> **Important:** Replace `[YOUR BUSINESS NAME]` and `[YOUR ADDRESS]` with your actual details. Update the services, pricing, and hours to match your business.

## Step 5: Assign a Phone Number

1. Go to the **Phone** tab
2. Assign a phone number
3. Set call direction to **Inbound**
4. Save

## Step 6: Test Your Agent

### Testing Checklist

| Scenario            | What to Test                          | Expected Behavior                                         |
| ------------------- | ------------------------------------- | --------------------------------------------------------- |
| **Happy path**      | Request a specific date and time      | Agent checks calendar, confirms, books, sends SMS + email |
| **Slot taken**      | Request a time you've already blocked | Agent says it's unavailable, suggests 2-3 alternatives    |
| **Vague time**      | Say "sometime next week"              | Agent offers first few available slots                    |
| **Outside hours**   | Request a Sunday appointment          | Agent explains hours, suggests nearest open slot          |
| **Cancel request**  | Ask to cancel an existing appointment | Agent looks up event, confirms, cancels                   |
| **Reschedule**      | Ask to move an appointment            | Agent cancels old, schedules new                          |
| **No email**        | Decline to give email address         | Agent proceeds with SMS-only confirmation                 |
| **Confirm details** | Listen for read-back                  | Agent reads back ALL details before booking               |

### What to Listen For

* **Date/time format**: Does the agent say "Tuesday, March fifteenth at two PM" or does it read raw data?
* **One question at a time**: Does it collect info step by step, not all at once?
* **Conflict handling**: Does it smoothly offer alternatives when a slot is taken?
* **Confirmation**: Does it always confirm before booking?

## Tips for Improvement

1. **Add buffer time.** Modify your calendar to include 15-minute buffers between appointments so you're never back-to-back.

2. **Set up reminders.** Configure a campaign to call or text customers 24 hours before their appointment with a reminder.

3. **Track no-show rates.** If no-shows are high, add a "confirm or cancel" reminder call the day before.

4. **Handle multiple providers.** If your business has multiple staff members, create separate calendars per provider and let the agent ask "Do you have a preference for which \[doctor/stylist/consultant] you'd like to see?"

5. **Add preparation instructions.** Include service-specific instructions in the confirmation email, like "Please arrive 10 minutes early" or "Bring your insurance card."

6. **Enable after-hours booking.** Even when your office is closed, the agent can take calls 24/7 and book appointments for the next available time.

***

**Next:** [Lead Qualification Agent](/docs/examples/lead-qualification) — Build an agent that qualifies leads using the BANT framework.
