Zuerst den realen Terminplan synchronisieren
Ich würde den Terminplan nicht im Prompt speichern. Der Bot darf höflich einen Slot vorschlagen, aber die einzige Quelle freier Zeit muss der Kalender sein—geprüft direkt vor dem Anlegen des Meetings.
Den Fehler, den ich zuerst entfernen würde: Die Nachricht „Sie sind um 15:00 gebucht“ heißt nicht, dass das Event angelegt wurde. Doppelklick, Zeitzone und parallele Buchung machen aus einem Meeting leicht zwei.

Was vorbereiten und welches Ergebnis erwarten
- Ergebnis: Der Kunde wählt einen verfügbaren Slot, bekommt Bestätigung und Reminder, und Umbuchen erzeugt kein zweites Meeting.
- Lege eine Services-Tabelle an: service_id, duration, buffer, calendar, business hours, time zone, wer Ausnahmen freigibt.
- Halte Quelldaten und Zugriffsrechte getrennt vom Ergebnis, damit du prüfen kannst, was KI-Service-Buchung wirklich getan hat.
- Teste Buchung, belegten Slot, Umbuchen, Storno, Sommerzeit und eine Anfrage aus einer anderen Zeitzone.
Buchung, Reminder und Umbuchungen einrichten
- Konfiguriere zuerst den Kalender
Verbinde einen Arbeitskalender und setze Stunden, Pausen, Buffer vor und nach dem Meeting sowie minimale Vorlaufzeit. Speichere freie Slots nicht im Prompt.
Проверьте: Ein freier Slot wird direkt vor der Anzeige an den Kunden aus dem Kalender gezogen.
Если не сработало: Synchronisiere einen Testkalender und deaktiviere Writes in den gemeinsamen Kalender.
- Behandle Service als eigenes Objekt
Für jeden Service setze service_id, duration und benötigtes Personal. KI kann den Service-Namen verstehen, Dauer und Preis kommen aus der Tabelle.
Проверьте: Derselbe Service liefert denselben Slot unabhängig von der Kundenformulierung.
Если не сработало: Ersetze Freitext durch Buttons oder eine erlaubte Werteliste.
- Bestätige den Slot vor dem Anlegen des Meetings
Nach der Zeitwahl frage erneut availability ab, lege dann das Event mit Name, Kontakt, Service und Zeitzone an. Speichere event_id.
Проверьте: Doppelklick oder wiederholter Webhook erzeugt keine zwei Meetings.
Если не сработало: Prüfe event_id und blockiere Doppelbuchung.
- Trenne Umbuchen von neuer Buchung
Umbuchen muss die bestehende event_id finden, den neuen Slot prüfen und das Event aktualisieren. Fehlt die id, leite an einen Menschen.
Проверьте: Die Historie behält alte und neue Zeit.
Если не сработало: Lösche das alte Event nicht, bevor das neue bestätigt ist.

Das Setup, das Doppelbuchungen verhindert
In der Services-Tabelle setze service_id, duration_minutes, buffer_before, buffer_after, calendar_id und timezone. KI kann verstehen, dass die Person eine „Beratung“ will, Dauer und Kalender kommen aus der Tabelle.
Nach Slot-Auswahl rufe erneut availability auf, lege dann das Event an und speichere event_id. Bei wiederholtem Webhook suche zuerst event_id oder client_request_id. Beim Umbuchen zuerst den neuen Slot anlegen und das alte Event erst nach Bestätigung löschen.
- Teste Sommerzeit und eine Anfrage aus einer anderen Zeitzone.
- Versprich keinen Slot, bis der Kalender eine bestätigte event_id zurückgibt.
Was einem Menschen bleibt
Gib dem Team ein paar Fälle: VIP-Kunde, fehlgeschlagene Zahlung, kein passender Spezialist, Umbuchen außerhalb der Regeln und Kalenderkonflikte. In anderen Fällen kann KI Daten sammeln, die finale Aktion muss aber über die Kalender-API laufen.
Ich prüfe den Slot zweimal—ich verspreche nichts aus dem Gedächtnis
Im Kalender speichere `event_id`, `client_request_id`, `service_id`, `duration_minutes`, `buffer_before`, `buffer_after` und `timezone`. Nach Zeitwahl erneut availability, erst dann Event anlegen. Kommt ein wiederholter Webhook mit derselben `client_request_id`, gib die bestehende `event_id` zurück statt ein neues Meeting zu erzeugen.
Beim Umbuchen zuerst den neuen Slot buchen, Bestätigung holen, dann das alte Event ändern. Wurde der neue Slot nicht angelegt, das alte Meeting nicht löschen. Diese einfache Regel verhindert „Bot hat das alte storniert, aber nie das neue platziert.“
Was KI handhaben kann vs. was aus dem Kalender kommen muss
| Kriterium | Frage | Gutes Zeichen |
|---|---|---|
| Input | Was kommt genau in die KI-Service-Buchung? | Lege eine Services-Tabelle an: service_id, duration, buffer, calendar, business hours, time zone, wer Ausnahmen freigibt. |
| Aktion | Was darf das System allein tun? | Nur vorab gelistete Aktionen, ohne Zugriff auf das gesamte Konto |
| Prüfung | Woran erkennst du, dass das Ergebnis akzeptabel ist? | Teste Buchung, belegten Slot, Umbuchen, Storno, Sommerzeit und eine Anfrage aus einer anderen Zeitzone. |
| Fehlerfall | Wohin geht ein unklarer Fall? | Versprich in der Nachricht keinen Slot: setze die Anfrage auf needs_confirmation und gib dem Manager exakte Zeit und Originalanfrage. |
Was sich nach der Einrichtung ändern sollte
Der Kunde wählt einen verfügbaren Slot, bekommt Bestätigung und Reminder, und Umbuchen erzeugt kein zweites Meeting.

Warum der Bot Leute in nicht existierende Slots bucht
Den Terminplan im Prompt speichern statt im Kalender.
Die Zeitzone des Kunden ignorieren.
Eine gesendete Bestätigung als Beweis werten, dass das Event angelegt wurde.
Umbuchen erlauben, ohne zu prüfen, welches Meeting geändert wird.
Wann Buchung zu einem vollen Reservierungssystem wird
Du brauchst einen Spezialisten bei mehreren Mitarbeitenden, unterschiedlichen Dauern, Zahlungen oder medizinischen/rechtlichen Constraints.
Was testen, bevor die Buchung geöffnet wird
Für wen ist dieser Ansatz zur KI-Service-Buchung?
Automatische Buchung muss echte freie Slots sehen, Dauer und Zeitzone berücksichtigen und Umbuchen oder Stornieren nur nach Identitäts- und Geschäftsregel-Checks erlauben.
Wo starten, wenn alles noch manuell ist?
Lege eine Services-Tabelle an: service_id, duration, buffer, calendar, business hours, time zone, wer Ausnahmen freigibt.
Wie prüfst du, dass das Setup dir nicht schadet?
Teste Buchung, belegten Slot, Umbuchen, Storno, Sommerzeit und eine Anfrage aus einer anderen Zeitzone.
Was, wenn das Ergebnis unklar ist?
Versprich in der Nachricht keinen Slot: setze die Anfrage auf needs_confirmation und gib dem Manager exakte Zeit und Originalanfrage.






