Book dental appointments via chat using OpenAI, Qdrant, and Google Calendar
Ready for 3.0What this workflow does
This AI workflow has 25 nodes and runs when a chat message arrives (plus 2 other triggers). Along the way it connects OpenAI Chat Model, Qdrant Vector Store, Embeddings OpenAI and HTTP Request. It also calls googleapis.com over HTTP.
How it runs
Trigger: When a chat message arrives (plus 2 other triggers).
- Configure Chat Endpoint (Code): runs custom JavaScript code
- Extract Knowledge Text (Extract from File): extracts data from a file (text)
- Configure and Validate Calendar Request (Code): runs custom JavaScript code
- Dental Receptionist (AI Agent): runs an AI agent, with model: Receptionist OpenAI Model; 3 tools (book_appointment, clinic_knowledge, calendar_availability); memory: Conversation Memory
- Validate Knowledge Text (Code): runs custom JavaScript code
- Request Valid (If): checks a condition and branches into true / false
- Index Clinic Knowledge (Qdrant Vector Store): stores documents in the Qdrant vector store, with embeddings: Upload Embeddings; document loader: Load Clinic Document
- Check Google Calendar Busy Times (HTTP Request): calls googleapis.com (POST)
- Return Calendar Result (Respond to Webhook): sends the response back to the webhook caller
- Calculate Available Slots (Code): runs custom JavaScript code
…plus 3 more steps. See the full node list below.
Services it uses
HTTP calls to: googleapis.com
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (16)
- Code
n8n-nodes-base.code - Chat Trigger
@n8n/n8n-nodes-langchain.chatTrigger - AI Agent
@n8n/n8n-nodes-langchain.agent - OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi - Simple Memory
@n8n/n8n-nodes-langchain.memoryBufferWindow - Qdrant Vector Store
@n8n/n8n-nodes-langchain.vectorStoreQdrant - Embeddings OpenAI
@n8n/n8n-nodes-langchain.embeddingsOpenAi - Http Request Tool
n8n-nodes-base.httpRequestTool - n8n Form Trigger
n8n-nodes-base.formTrigger - Extract from File
n8n-nodes-base.extractFromFile - Default Data Loader
@n8n/n8n-nodes-langchain.documentDefaultDataLoader - Token Splitter
@n8n/n8n-nodes-langchain.textSplitterTokenSplitter - Webhook
n8n-nodes-base.webhook - If
n8n-nodes-base.if - HTTP Request
n8n-nodes-base.httpRequest - Respond to Webhook
n8n-nodes-base.respondToWebhook
From the author
Quick overview This chat-based dental receptionist answers clinic questions using documents stored in Qdrant, checks Google Calendar availability, and books appointments after patient confirmation. It includes authenticated knowledge uploads, configurable…