Business Outcome
<aside>
💡
- Problem: A small clinic books patients by phone. The administrator keeps the schedule in her head, calls patients with reminders when she has time, and patients who forget about the visit simply don't show up. That slot can't be filled anymore.
- Before: Calls during working hours, manual entries in the calendar, reminders when there's time, and the administrator finds out about cancellations after the fact.
- What was built: A Telegram bot on n8n that shows only free time from Google Calendar, books the patient with a short profile, reminds them 24 hours and 2 hours before the visit, lets them confirm, reschedule or cancel with a button, and notifies the administrator about every change.
Result: A portfolio project, built and tested live in a test bot. A patient books in a few taps without calling, the calendar event is created automatically, and reminders and rescheduling work without the administrator.
</aside>
Demo project for a clinic: two n8n workflows, Google Calendar as the source of the schedule, Google Sheets as the booking log, and an n8n Data Table for patient profiles. No paid APIs.
Project Details
Context:
- Client: demo scenario for a private clinic (consultation, professional cleaning, check-up).
- Format: portfolio project, all data is fictional.
- Requirements: booking only into free time, Kyiv time, bot interface in Ukrainian, the administrator sees all bookings in a regular spreadsheet.
Problem:
- Booking only by phone and only during working hours.
- Reminders depend on whether the administrator finds time to call.
- Cancellations and reschedules get lost, and nobody offers the freed slot to other patients.
Solution
<aside>
🧠
Two n8n workflows. Clinic Router receives everything that reaches the bot (commands, text, button clicks), and a Switch routes the event by its callback_data prefix: profile, service, day, time, confirmation, reminder buttons. Clinic Reminders runs every 15 minutes, finds bookings that are due for a reminder and marks them in the sheet.
Tools: n8n (self-hosted on PikaPods), Telegram Bot API (inline keyboards, callback queries), Google Calendar, Google Sheets, n8n Data Tables, JavaScript + Luxon.
</aside>
Solution logic: