Architektur auf einen Blick
Nutzer → Chat-UI → POST /api/booking-intent (Next.js Edge, EU)
├─ extrahiert Wunschdatum/Zeitzone (LLM structured output)
├─ GET Cal /schedules oder Slots-Endpoint
├─ validiert Slot noch frei (Race: 409 → neues Slot anbieten)
└─ POST Cal /bookings → CRM-Update (HubSpot) → Resend-Mail mit ICS
Warum nicht „einfach iFrame“?
Ein Cal-Embed ist okay für klassische Webseiten. Sobald ein KI-Bot mitverhandeln soll (z. B. „nur Donnerstag nach 15 Uhr“, „45 Min statt 30 Min“), brauchen Sie API-Zugriff. Das Embed kann der Bot nicht steuern.
OpenAI-Structured-Output für Intent
Wir parsen Nutzer-Sätze in JSON: { "date_hint": "2026-05-02", "time_hint": "afternoon", "duration_min": 45, "timezone": "Europe/Berlin" }. Temperature 0, festes Schema — kein Freitext-Chaos.
Fehlerpfade, die Production-relevant sind
- 409 Slot weg: LLM bekommt neue Slot-Liste, bietet Alternativen — nie stille Fehler.
- Webhook doppelt: Idempotency-Key aus Chat-Session + E-Mail-Hash.
- DSGVO: Buchung = Vertragsanbahnung; AVV mit Cal, Aufbewahrung der Logs begrenzen. Siehe DSGVO-Chatbot-Spoke.
Aufwand & Festpreis-Rahmen
Typischer Build: 3–5 Tage bei bestehendem Cal-Account und klarer Event-Type-Konfiguration — im Paket ab 1.890 € Workflow-Starter denkbar, wenn Umfang eng bleibt.