Journey 3: Pre-Appointment

Reminders, pre-care guides, and intake forms before the visit

1
2
3
4
5
6
Step 1 Cal.com → Care Plans

Booking triggers the care plan

When a booking is created (Journey 2), the system automatically starts a pre-appointment care plan. The care plan type matches the procedure — Botox gets different pre-care than Lipo or PRP.

Technical details
Entry point
src/actions/care/plans.js → startCarePlan() (line 181)
Logging
logCareEvent() (line 49)
What it writes
Inserts into care_plans with procedure type, contact ID, and appointment date. Each step is scheduled as a BullMQ job.
Database tables
care_plans, care_events
Step 2 Care Plans → Karen AI → Patient

3-day reminder + pre-care guide

Three days before, Karen sends the procedure-specific pre-care guide. For Botox: "Avoid blood thinners, alcohol, aspirin for 48 hours before." For Lipo: "No eating 8 hours before, arrange a driver." 6 approved guides exist: Laser, Botox, Fillers, Weight Loss, Lipo, and PRP.

Gotcha: Only 6 pre-care guides are approved so far. Microneedling, Emsella, Renuvion, and Labiaplasty guides are still missing — bookings for those procedures won't get a guide until they're added to the knowledge base.
Technical details
Handler
src/actions/care/plans.js → processCarePlanStep() (line 237)
Guide content
Stored in knowledge base (memory_knowledge). Pending Dr. Rockhead sign-off for auto-send.
Database tables
care_events, booking_reminders
Step 3 Karen AI → Patient

Intake forms sent

Karen sends the intake form link. Two forms are available: female health assessment and male health assessment — collecting medical history, allergies, and current medications.

Gotcha: Consent forms still need e-signature capability. Currently paper-based at the clinic — digital consent is not yet wired into this flow.
Technical details
Form files
Oshun/site-v2/forms/female-health-assessment.html
Oshun/site-v2/forms/male-health-assessment.html
Submit endpoint
src/webhooks/oshun/intake.js via oshun-backend.irievybz.ai
Database tables
intake_submissions, form_submissions
Env var
OSHUN_INTAKE_API_KEY
Step 4 Care Plans → Patient

24-hour reminder

One day before the appointment: "Your Botox consultation is tomorrow at 2 PM. Remember: no blood thinners for 24 hours." Message is procedure-specific and personalised with the confirmed appointment time.

Technical details
Handler
src/actions/care/plans.js → processCarePlanStep() — 24h-before timing
Scheduler
BullMQ job enqueued at booking time, fires 24h before the appointment timestamp.
Database tables
care_events, booking_reminders
Step 5 Care Plans → Patient

1-hour reminder

Final reminder: "See you in 1 hour! If you need to reschedule, reply here." Last touchpoint before arrival — also the trigger point for no-show detection if the patient goes silent.

Technical details
Handler
src/actions/care/plans.js → processCarePlanStep() — 1h-before timing
Scheduler
Same BullMQ mechanism as 24h reminder, different delay offset.
Database tables
care_events, booking_reminders
Step 6 → Journey 4

Patient arrives

Patient shows up prepared — they've read the pre-care guide, filled out the intake form, and know what to expect. The care plan transitions to post-procedure mode.

If they show upJourney 4: Procedure → Post-Care

If they don't show upJourney 5: Re-engagement (no-show recovery)