Appointment scheduling assistant

Build an AI receptionist that books, reschedules, and cancels appointments using Assistants and tools

Overview

Build an AI-powered appointment scheduling assistant that handles inbound calls for booking, rescheduling, and canceling appointments. This approach uses a single Assistant with tools for calendar availability, customer lookups, and confirmations.

Assistant Capabilities:

  • Real-time availability checks and booking
  • Reschedule and cancel with confirmation
  • Customer verification and data lookups
  • SMS/email confirmations via tools

What You’ll Build:

  • An assistant with a focused prompt for scheduling flows
  • Tools for calendar availability and booking
  • Optional CSV knowledge bases for customers/services
  • A phone number attached to your assistant

Prerequisites

1. Prepare data (optional)

Use sample CSVs for customers, services, and appointments during development.

2

Upload files (optional)

  1. Open your Vapi Dashboard → Files
  2. Upload the three CSVs and note their file IDs

2. Create calendar tools

Use the Google Calendar integration for availability and booking, or your own API via a custom tool.


3. Create the assistant

1

Create assistant

  • Go to Assistants → Create Assistant → Blank template
  • Name it Receptionist
2

Configure system prompt

System Prompt
You are an AI receptionist for a barbershop. Your goals:
1) Verify the customer
2) Offer booking, rescheduling, or cancellation
3) Confirm details and send a confirmation
When needed, call tools: check_availability, book_appointment, reschedule_appointment, cancel_appointment.
Keep replies under 30 words. Confirm date/time clearly.
3

Attach tools

Add your scheduling tools to the assistant and publish.


4. Make calls

create web call
1import { VapiClient } from "@vapi-ai/server-sdk";
2
3const vapi = new VapiClient({ token: process.env.VAPI_API_KEY! });
4
5await vapi.calls.create({
6 transport: { type: "web" },
7 assistant: { assistantId: "your-assistant-id" }
8});
create phone call
1await vapi.calls.create({
2 phoneNumberId: "your-phone-number-id",
3 customer: { number: "+15551234567" },
4 assistant: { assistantId: "your-assistant-id" }
5});

5. Test and validate

1

Attach a phone number

Create a phone number and assign your assistant. See Phone calls quickstart.

2

Test scenarios

  • New booking → check availability → book → confirm
  • Reschedule existing appointment → confirm
  • Cancel appointment → confirm

Next steps