Booking Calendar CRO Engine
Booking + Calendar Reminders = Replace expensive SMS/notification costs.
Auto-detect industry → Ready-made patterns → Generate code → Increase revenue.
Zero dependencies, works on any static site.
💰 WHY This Increases Revenue
| Metric | Impact | Mechanism | |--------|--------|-----------| | No-show reduced 30-60% | Directly increases revenue | Calendar reminder replaces SMS, free | | Conversion Rate +15-25% | "Add to Calendar" CTA = micro-commitment | User commits via action, not just form | | LTV increases 2-3x | Appointments = continuous touchpoints | Brand exposure every time calendar opens | | SMS/notification cost = 0 | Saves $0.05-0.10/message | Calendar notification is free forever | | Organic referrals | Calendar events can be shared | "Invite a friend" via calendar |
🎯 When to Use
| Trigger | Action | |---------|--------| | User says "booking", "appointment", "schedule" | Activate — start Phase 1 | | User says "reminder", "calendar" | Activate — focus calendar export | | User says "reduce no-show", "increase conversion" | Activate — focus ROI explanation | | User says "download calendar", "download ics" | Jump to Phase 4 (calendar-export.js) | | Detected booking form on website | Suggest this skill proactively |
📋 7-Phase Workflow
Phase 1: DISCOVER → Auto-detect industry, scan existing forms/booking
Phase 2: SOCRATIC GATE → Ask 5-7 strategic questions
Phase 3: CONFIGURE → Select industry pattern + customize
Phase 4: BUILD → Generate calendar engine + UI + export
Phase 5: INTEGRATE → Wire to site + cm-google-form + cro-tracking
Phase 6: VERIFY → Test ICS, GCal, form submit, tracking events
Phase 7: REVENUE REPORT → Explain ROI to user per feature
🔴 Rule: NEVER skip Phase 1 & 2. Always scan first, ask second.
Phase 1: DISCOVER (Auto-Detect Industry & Scan)
Goal: Understand the website's industry and existing booking/form infrastructure.
1A. Industry Auto-Detection
Scan the website to classify industry:
grep -ri "keywords\|description\|og:title" --include="*.html" --include="*.astro" .
grep -ri "service\|booking\|appointment" --include="*.html" --include="*.astro" .
Detection signals:
| Signal | Where to Find | Example | |--------|---------------|---------| | Meta keywords | <meta name="keywords"> | "obstetrics, ultrasound" → Healthcare:OB/GYN | | Page titles | <title>, <h1> | "Dental Clinic" → Healthcare:Dental | | Service lists | Service section content | "Haircut, coloring, perming" → Salon | | Form fields | <select> options | "Prenatal exam, 5D ultrasound" → OB/GYN | | Address/Maps | Google Maps embed | Location-based business |
1B. Scan Existing Forms
grep -r "data-form-type\|onsubmit\|<form\|booking" --include="*.html" --include="*.astro" .
For each form found, extract:
| Info | How to Find | |------|-------------| | Form type | data-form-type or form class/id | | Fields | <input name="...">, <select name="..."> | | Calendar integration | google.com/calendar, .ics, VCALENDAR | | Submit handler | onsubmit attribute or JS handler |
1C. Scan Existing Calendar Code
grep -r "VCALENDAR\|google.com/calendar\|\.ics\|VEVENT\|VALARM" --include="*.js" --include="*.html" .
Output: Discovery Report
## Discovery Report
**Industry detected:** [industry name] (confidence: HIGH/MEDIUM/LOW)
**Detection signals:** [list signals found]
**Existing forms:** [count] forms found
**Existing calendar:** [YES/NO] — [details if yes]
**Recommended pattern:** [industry-pattern key]
Phase 2: SOCRATIC GATE (Strategic Questions)
🔴 MANDATORY. Ask ALL in ONE message. Max 7 questions.
Ask user these questions, adapting language to their industry:
Core Questions (Always Ask)
- Industry confirmation — I detected your website is [industry]. Is that correct? Any unique specifics?
- Appointment frequency — How often do customers need appointments? (one-time / weekly / monthly / treatment course of X sessions / milestone-based)
- Information to collect — Besides phone + name, what else do you need? (email, ID, address, specific service, notes)
- Reminder content — What should customers prepare before arriving? (fasting required, bring documents, arrive 15 minutes early...)
- Reminder timing — How far in advance to remind? (1 day + 2 hours before is default, need additional 1 week before?)
Extended Questions (Ask if Relevant)
- Google Maps — Want to embed a Google Maps link in the calendar event? Provide the link or location name.
- Follow-up — After the appointment, do you want to automatically suggest booking the next one? (re-booking prompt)
User WOW Information
After receiving answers, explain back to user WHY each feature increases revenue. This is the "exceeding expectations" moment:
## 💡 Why Each Feature Drives Revenue:
1. **Calendar Reminder replaces SMS** → Saves ~$0.05-0.10/message.
If 100 appointments/month = saves $5-10/month, $60-120/year.
2. **"Add to Calendar" CTA** → Increases commitment 40%.
Research shows: users who add calendar events have 2.5x higher
show-up rate compared to form-only submissions.
3. **Google Maps in event** → Reduces "got lost" cancellations 25%.
Calendar event with location → 1 tap opens navigation → no drop-off.
4. **Preparation reminders** → Reduces cancellations/postponements 35%.
"Remember to fast for 8 hours" in reminder → patient prepares correctly
→ no rescheduling needed → no lost revenue.
5. **Re-booking prompt** → Increases LTV 2x.
After 6 months auto-reminds "Time for your next check-up" → recurring revenue.
Phase 3: CONFIGURE (Select Pattern & Customize)
Goal: Load industry pattern + apply user customizations.
3A. Load Industry Pattern
Read references/industry-patterns.md → find matching industry → load defaults.
3B. Override with User Answers
Merge user answers from Phase 2 onto the industry defaults:
const config = {
...INDUSTRY_PATTERNS[detectedIndustry], // defaults
...userOverrides, // from Phase 2
// Computed fields
googleMapsUrl: userGoogleMapsUrl || buildMapsSearchUrl(clinicName, clinicAddress),
reminderAlarms: buildAlarmConfig(userReminderTiming),
calendarTitle: `${userServiceName} — ${clinicName}`,
};
3C. Customization Points
| Setting | Source | Default | |---------|--------|---------| | Industry pattern | Auto-detect + user confirm | From detection | | Clinic/business name | User input | From <title> tag | | Address | User input | From Google Maps embed or contact section | | Google Maps link | User provides or auto-build | Search URL | | Reminder content | Industry default + user override | From pattern | | Reminder timing | User choice | 1 day + 2 hours before | | Working hours | User input | Mon-Sat 8:00-17:00 | | Services list | Scan existing <select> or user input | From form | | Follow-up interval | Industry default + user override | From pattern | | Form fields | Industry default + user additions | phone + name + date + service |
Phase 4: BUILD (Generate Code)
4A. Calendar Engine (templates/calendar-engine.js)
See templates/calendar-engine.js for the full template.
Core BookingCalendarEngine class:
| Method | Purpose | |--------|---------| | constructor(config) | Init with industry config | | generateSchedule(startDate, preferences) | Build appointment list from milestones/frequency | | getSmartDateChips() | Return next 5 smart date options (Today, Tomorrow, next available slots) | | getTimeSlots(date) | Return available time slots for a given date | | filterPastAppointments(appointments) | Remove past dates | | getNextAppointment() | Get the soonest upcoming appointment |
4B. Calendar Export (templates/calendar-export.js)
See `templates/c