appointment-agent
appointment-agent copied to clipboard
A modular and AI-powered appointment booking agent designed to streamline scheduling for businesses, starting with dental clinics. Built with LangGraph, Composio, and Bland.com, it integrates Google C...
Appointment Booking Agents Vertical Starter Kit
A modular and AI-powered appointment booking agent designed to streamline scheduling for businesses, starting with dental clinics. Built with LangGraph, Composio, and AI Telephony, this agent integrates Google Calendar and Gmail to manage appointments, send confirmations, and handle outbound phone calls.
Users can check available time slots, confirm bookings, and receive queue updates via email, call, or message. The system is highly customizable, supporting alternative CRM, mail services, and voice providers like Twilio or Vapi. Deployed on Vercel and LangGraph Cloud, with robust testing via LangSmith and LLM unit tests.
Tech Stack:
- Agent : LangGraph, Composio (Tools Library), Voice Orchestrator (Bland.com)
- LLMs: Gemini-2.0-flash-exp
- Interface (NextJS15)
- Deployment (Vercel, LangGraph Cloud)
- Tests (LangSmith, LLM Unit Tests Code.)
- Development (IDE: VS-Code/Cursor) + Google Collab + Docker
- SCM [GitHub] panaversity/learn-agentic-ai/AGENTIC_PROTOTYPES/appointments_agent (We will be actively develping it further here in this repo in live Agentic AI sessions.)
- CRM/Calendar/System [Google Calendar, Gmail]
User Story
- User Wants to Book an Appointment with Dentist Clinic
- Share available time schedule (i.e: Monday 09-06 PM)
- At what time can I come and my preferences are 4 PM DATE.
- User wants to know about Wait Time and Queue Number.
- User Booking Confirmation (email/phone call)
Features
- [x] Connect Google Calendar (Replaceable with any Calendar or CRM)
- [x] Greet Users and Collect basic Info
- [x] Check for Available Time Slots for the Dental Clinic (Can be any Business)
- [x] Suggest TimeSlots and Confirm the final One with User
- [x] Schedule Booking in Google Calendar
- [x] Create a save a Draft Email in Gmail (Replaceable with any Mail Service)
- [x] Confirmation Call after Booking Appointment using Bland API (Just replace the function call with any providor of your choice)
- [ ] Cron Job to schedule calls
- [ ] Change TimeZone from UTC to User Specific
- [ ] Add Voice Modality with providers (Twillio, Vapi, Bland)
Pending User Stories
[ ] Business Active Hours [ ] Queue Number and Wait Time Flow [ ] If email is invalid or if phone don't dials try again later -- If not confirmed priority customer can take slot.
Directory Structure
- All prototyping notebooks are in the
prototypesdirectory - All final agents live in the
srcdirectory
Getting Started
Prerequisites
- Docker
- Composio, Google AI Studio and LangSmith API Key
- Setup the following either in Composio dashboard or through CLI/Jupyter Notebook:
composio add googlecalendar gmail composio triggers enable GMAIL_NEW_GMAIL_MESSAGE
Local Setup
-
Clone the repository:
git clone https://github.com/... cd ... -
Create a
.envfile:cp .env.example .envUpdate the environment variables as needed.
-
Run LangGraph Server:
Using Docker
- Install Docker Desktop
- Open Docker Desktop
- Run container:
docker compose up - Or run in detached mode:
docker compose up -d
-
Access LangGraph Studio
- Open LangGraph Studio
Development
Applying Changes:
- Stop the container:
docker compose down - Restart the container:
Note: Changes outside thedocker compose up -dsrcdirectory require rebuilding the image.
Alternative Setup Methods
A. Using LangGraph CLI
-
Install uv package manager:
pip install uv -
Create and activate virtual environment:
uv venv source .venv/bin/activate -
Install packages from pyproject.toml:
uv run -
Run LangGraph Server:
uv pip install langgraph-cli uv run langgraph upNote: If you encounter errors, stop all containers, run
docker system prune, and try again.
B. Using Google Gemini Instead of OpenAI
To switch models, update line 26 in configuration.py:
# From:
default="openai/gpt-4o"
# To:
default="google_genai/gemini-1.5-flash"