The task
The client needed a working clinic system in GoHighLevel for internal testing and sales presentations. Not slides: an account where a real enquiry turns into a booking in front of the prospect, and which can be copied for the next clinic without cleanup.
I built it around a fictional private dental and aesthetics clinic in the UK, with its own services, prices, opening hours and team.
The patient journey in GoHighLevel
- An AI receptionist in chat and SMS. It answers only from the clinic's data, recognises an emergency, cosmetic or general enquiry and books the appointment itself. It does not invent prices or services.
- Three calendars with routing. Emergencies take the earliest slot, Invisalign goes to the specialist's consultation calendar and check-ups go to the next free general slot.
- A seven-stage patient pipeline, from new enquiry to completed treatment, moved by events and adjustable by hand during a live demo.
- One entry point for every enquiry. The website form and AI conversations run the same workflow.
- Six automations: lead intake, booking confirmation with reminders 24 hours and 1 hour before, a five-step follow-up, no-show recovery, a consultation-first path for cosmetic treatments and light long-term nurture.
A second agent in n8n
For Telegram and a custom web chat I built an agent in the client's n8n that works with the same GoHighLevel account. It does the full job of a receptionist:
- Finds the patient by phone or creates a new contact.
- Offers only the clinic's services.
- Checks for an existing booking and offers to keep or cancel it.
- Finds free slots for the next seven days and widens the search when the week is full.
- Shows a summary and waits for the patient's explicit yes.
- Creates the appointment, the deal in the pipeline and a task for staff in one step.
Cancelling and rescheduling run the chain in a fixed order: calendar first, then the task, then the deal. The CRM never keeps a half-cancelled booking.

Decisions that mattered
Four small MCP servers instead of one large tool. Contacts, calendar, pipeline and tasks each sit behind their own server. The agent sees only the operations it needs, and each server can be reused with another CRM.

Hard rules in the prompt. No action before the patient is identified, a fixed order for cancellations, one language per conversation and no technical details shown to the patient.
The channel is separate from the logic. Telegram and the web chat feed the same agent, so WhatsApp or SMS can be added without touching it.
How I checked it
I ran three scenarios end to end: an emergency, an Invisalign enquiry and a routine check-up. Each one confirmed the AI answer, the contact, the deal in the right stage, the appointment in the right calendar and the reminders. The client received a video walkthrough and documentation for copying the account to a new clinic.