feat: full clinera platform — auth, appointments, WhatsApp, chatbot canvas, reminders, leads, campaigns, inbox

This commit is contained in:
Obaid alah Saleh
2026-03-13 12:45:14 +02:00
parent fe044c91b4
commit 66a3568d01
195 changed files with 41621 additions and 4568 deletions
+371
View File
@@ -0,0 +1,371 @@
# CLINERA — Deep Problem Analysis & System Design
## The Problem: 97% Lead Loss in Aesthetic Clinics
A clinic spends $5,000-$15,000/month on Instagram and Google ads.
300 leads come in. 8-10 patients actually show up.
That's not a marketing problem. That's a CONVERSION MASSACRE.
---
## Where Do Leads Die? (The Kill Chain)
```
300 leads generated
├─ 120 never get a response (40%) ──── DEAD: Slow response
├─ 80 get a late response (27%) ────── DEAD: Already booked elsewhere
├─ 40 respond but don't book (13%) ─── DEAD: Friction in booking process
├─ 30 book but cancel (10%) ────────── DEAD: Cold feet, no commitment loop
├─ 20 book but no-show (7%) ────────── DEAD: Forgot, anxiety, low commitment
└─ 10 actually arrive (3%) ─────────── SURVIVED
```
Each stage has a DIFFERENT psychological cause and a DIFFERENT fix.
Our system attacks ALL of them through ONE channel: WhatsApp.
---
## Why WhatsApp?
- 98% open rate (vs 20% email)
- Messages read within 3 minutes (vs 6 hours for email)
- Feels personal — it's a CONVERSATION, not a notification
- In KSA/UAE: WhatsApp IS how people communicate with businesses
- Patients already message clinics on WhatsApp — it's their preferred channel
- Coming FROM the clinic's own number = trust, recognition, legitimacy
---
## User Personas — Deep Psychological Profiles
### CLINIC SIDE
#### 1. Clinic Owner / Investor
**Who they are:** Entrepreneur or doctor-entrepreneur. Often owns 2-8 branches.
Thinks in terms of revenue, cost, and ROI. May not be involved in day-to-day.
**Psychology:**
- FEAR: "I'm spending $10K/month on marketing and I can't see the return"
- DESIRE: Predictable revenue growth without increasing ad spend
- FRUSTRATION: Knows leads are leaking but doesn't know WHERE or HOW MUCH
- TRUST BARRIER: "I've been sold 10 CRMs that nobody in my clinic actually uses"
**What they need from our system:**
- Dashboard showing: leads in → patients arrived (THE number)
- Revenue impact: "This system saved you $X this month"
- Zero training required for their staff
- Works WITHOUT changing existing workflows
**Interaction with system:** Views dashboard once a week. Wants ONE number.
---
#### 2. Clinic Manager / Operations Manager
**Who they are:** The person who actually RUNS the clinic. Manages staff schedules,
inventory, patient complaints, and somehow also WhatsApp inquiries.
**Psychology:**
- OVERWHELM: Juggling 15 things at once. Another system = another burden
- GUILT: Knows WhatsApp messages are going unanswered. Feels responsible.
- SKEPTICISM: "We tried [system X], staff stopped using it after a week"
- DESIRE: Something that runs ITSELF. Set it and forget it.
**What they need from our system:**
- Setup in under 10 minutes (scan QR + configure)
- Automatic everything — reminders go out WITHOUT anyone pressing a button
- Alerts only when something needs human attention (e.g., patient replied with a question)
- Simple appointment entry (patient name + phone + date + treatment = done)
**Interaction with system:** Sets it up once. Adds appointments daily. Checks alerts.
---
#### 3. Receptionist / Front Desk Coordinator
**Who they are:** The frontline. Patient in front of them, phone ringing,
WhatsApp pinging, doctor asking for files. They're the bottleneck.
**Psychology:**
- STRESS: Physically cannot respond to everything simultaneously
- GUILT: "I saw the message but then a patient walked in and I forgot"
- DESIRE: Something that handles WhatsApp so they can focus on in-person patients
- FEAR: "Is this going to replace me?" (It shouldn't — it should HELP them)
**What they need from our system:**
- Auto-responses handle the immediate reply — pressure is OFF
- They only need to step in for complex questions
- Simple interface: "Add appointment" = patient name, phone, date, treatment. Done.
- No learning curve. If it takes more than 2 clicks, they won't use it.
**Interaction with system:** Adds appointments. That's it. System does the rest.
---
### PATIENT SIDE
#### 4. The Impulse Inquirer (Hot Lead — 0 to 5 minutes)
**Who they are:** Scrolling Instagram at 11pm. Saw a Botox ad.
"Hmm, how much is that?" Clicks. Sends a message.
**Psychology:**
- IMPULSE: Interest is HIGH but fragile. Fades rapidly.
- IMPATIENCE: If no response in 5 minutes, they message another clinic.
- COMPARISON: They're messaging 2-4 clinics simultaneously.
- FIRST RESPONDER WINS: Whoever replies first gets 78% of bookings.
**What our system does for them:**
- Instant acknowledgment (within 30 seconds)
- Useful information immediately (treatment details, price range)
- Frictionless booking (here are available slots, pick one)
**Critical window:** 0-5 minutes after inquiry. After that, conversion drops 80%.
---
#### 5. The Booked-But-Anxious Patient (1-7 days before appointment)
**Who they are:** They booked. But now the anxiety starts.
"Is it going to hurt? What if I don't like it? That's a lot of money.
Maybe I should wait. Maybe I'll just not go."
**Psychology:**
- ANXIETY: Increases as appointment approaches. Peaks 24-48 hours before.
- INFORMATION SEEKING: Googling "does Botox hurt" at 2am
- COMMITMENT WAVERING: Looking for reasons to cancel
- SOCIAL VALIDATION: "Has anyone else done this? Did they like it?"
- PRACTICAL CONCERNS: "Where do I park? How long will it take? What if I'm late?"
**What our system does for them:**
- 3 days before: Educational content about the treatment. Reduces anxiety
through knowledge. "Here's what to expect step by step."
- 1 day before: Practical logistics. "Here's the address, parking info,
arrive 10 min early." Removes friction. Also: "Reply CONFIRM."
This creates MICRO-COMMITMENT (Cialdini's Commitment & Consistency principle).
- 2 hours before: Warm, friendly nudge. "See you soon!" with location pin.
- 30 min before: Final check. "We're ready for you!"
The sequence serves THREE purposes:
1. ANXIETY REDUCTION (education, what to expect)
2. FRICTION REMOVAL (logistics, directions)
3. COMMITMENT BUILDING (each reply = stronger commitment)
---
#### 6. The No-Show (Post-missed-appointment)
**Who they are:** They didn't come. But most didn't actively DECIDE not to come.
They just... didn't. Life got in the way. Or anxiety won.
**Psychology:**
- GUILT: "I should have called to cancel. Now it's awkward."
- AVOIDANCE: Won't reach out to the clinic because they feel embarrassed
- LOSS AVERSION: They wanted the treatment. They still want it.
- BARRIER: The awkwardness of rebooking after ghosting
**What our system does for them:**
- 1 hour after: "We missed you today! Everything okay?" — ZERO judgment.
No guilt. No "you missed your appointment." Just care.
- Next day: Easy reschedule. "Would you like to rebook? Here are openings."
Removes the barrier of having to call and explain.
- 3 days later: Gentle nudge with incentive. "We kept a slot open for you."
**Key principle:** Remove the SHAME. Make rebooking feel as natural as the first booking.
---
#### 7. The Completed Patient (Post-treatment)
**Who they are:** They came, got treated, left. Now what?
**Psychology:**
- SATISFACTION: If results are good, they're at peak happiness
- CONCERN: "Is this swelling normal? When will I see results?"
- RECIPROCITY: If the clinic follows up with care, they feel LOYALTY
- ADVOCACY: Happy patients refer others — IF prompted
**What our system does for them:**
- Same day: "How are you feeling? Here are aftercare instructions."
- 3 days: "How's recovery going?" — Shows the clinic CARES beyond the transaction.
- 2 weeks: "How are your results?" — Captures feedback, prompts review.
- Treatment-specific recall: "Your Botox refresh is due in ~3 months.
Shall we book?" — RECURRING REVENUE on autopilot.
---
## The Reminder Sequence — Bulletproof Design
### Appointment Lifecycle with Messages:
```
BOOKING ────────────────────────────────────── APPOINTMENT DAY
│ │
│ ① Instant Confirmation │
│ "Your appointment is confirmed!" │
│ │
│ ② 3 Days Before │
│ "Here's what to expect..." │
│ │
│ ③ 1 Day Before │
│ "Tomorrow at 2pm! Confirm?" │
│ │
│ ④ 2 Hours Before │
│ "See you soon! 📍" │
│ │
│ ⑤ 30 Min Before │
│ "We're ready!" │
│ │
│ ARRIVAL
│ │
│ ⑥ If No-Show
│ "Everything ok?"
│ │
│ ⑦ Next Day
│ "Let's reschedule"
│ │
│ ⑧ Post-Treatment
│ "How are you feeling?"
```
### Smart Logic:
- If appointment is TOMORROW when booked → skip ② (3-day reminder), send ③ immediately
- If appointment is TODAY when booked → skip ②③, send ④ at right time
- If patient replies "CONFIRM" → mark confirmed, skip ⑤ (they're committed)
- If patient replies "CANCEL" or "RESCHEDULE" → route to receptionist + offer new slots
- If patient ARRIVES (marked by staff) → skip remaining pre-reminders, queue post-treatment
- If patient is marked NO-SHOW → trigger ⑥⑦ sequence
- Messages respect quiet hours (no messages between 10pm-8am, queue for morning)
### Message Timing (Relative to Appointment):
| # | Trigger | Offset | Purpose |
|---|---------|--------|---------|
| ① | On booking | +0 min | Confirmation + commitment |
| ② | Before appt | -72 hours | Education + anxiety reduction |
| ③ | Before appt | -24 hours | Logistics + micro-commitment |
| ④ | Before appt | -2 hours | Warm nudge + location |
| ⑤ | Before appt | -30 min | Final check |
| ⑥ | After no-show | +1 hour | Recovery (no guilt) |
| ⑦ | After no-show | +24 hours | Reschedule offer |
| ⑧ | After completion | +3 hours | Aftercare + care signal |
| ⑨ | After completion | +72 hours | Check-in + review ask |
| ⑩ | After completion | +treatment recall | Recurring booking |
---
## Conversion Optimization Principles
### 1. Speed (Response Time)
- First response within 60 seconds = 78% higher conversion
- Auto-reply is NOT a compromise — it's SUPERIOR to a slow human response
- The auto-reply should feel personal, warm, helpful — not robotic
### 2. Commitment Escalation
- Each touchpoint asks for a micro-commitment
- "Reply YES to confirm" → patient invests effort → harder to back out
- Preparation steps ("arrive with clean skin") → they're already preparing
### 3. Anxiety Reduction
- Pre-appointment education removes fear of the unknown
- "What to expect" messages reduce cancellations by 30-40%
- Specific details ("takes 20 minutes, minimal discomfort") replace vague fear
### 4. Friction Removal
- Location pin = no "where is it?" excuse
- Parking instructions = no logistics barrier
- "Reply 1 to confirm, 2 to reschedule" = one-tap response
- Rescheduling is as easy as replying with a word
### 5. Social Proof & Trust
- "Dr. [Name] has performed 500+ treatments"
- Before/after content (if clinic provides it)
- "98% patient satisfaction" — data builds confidence
### 6. Loss Aversion
- "Your reserved slot" — implies scarcity
- "We're holding this time for you" — creates ownership
- Deposit collection (future feature) — financial commitment
### 7. Shame Removal (for No-Shows)
- NEVER say "you missed your appointment"
- Always say "everything okay?" — lead with CARE
- Make rebooking frictionless — they shouldn't have to explain
### 8. Reciprocity (Post-Treatment)
- Free aftercare instructions = clinic gives value
- Follow-up check-in = clinic shows they care
- Patient feels obligated to return the care (review, referral, rebooking)
---
## System Architecture
### Tech Stack
- **Frontend:** Next.js (App Router) + Tailwind CSS
- **Database:** Prisma + SQLite (→ PostgreSQL for production)
- **WhatsApp:** Waha (self-hosted WhatsApp Web API)
- **Auth:** Simple session-based (→ NextAuth later)
- **Background Jobs:** Cron endpoint (→ Bull/Redis later)
### Core Entities
- **Clinic:** name, WhatsApp number, waha session, timezone, settings
- **User:** clinic staff with roles (owner, manager, receptionist)
- **Treatment:** name, duration, price, prep instructions, aftercare
- **Lead:** patient info, source, status, journey timeline
- **Appointment:** lead + treatment + datetime + status + reminders
- **ReminderTemplate:** message template + trigger + timing
- **MessageLog:** every message sent/received with delivery status
### Key Flows
1. **Connect:** Clinic scans QR → Waha session active → WhatsApp connected
2. **Book:** Staff adds appointment → system calculates all reminder times → queues them
3. **Remind:** Cron checks every minute → sends due reminders via Waha → logs delivery
4. **Respond:** Patient replies → Waha webhook → system processes (CONFIRM/CANCEL/question)
5. **Track:** Dashboard shows funnel: leads → booked → confirmed → arrived → completed
### The "Scan. Add. Relax." Promise
The entire value proposition in 3 words:
- **Scan:** Connect WhatsApp in 30 seconds
- **Add:** Enter appointment (name + phone + date + treatment)
- **Relax:** System handles everything else automatically
Staff don't need training. They don't need to learn a new interface.
They do ONE thing they already do (book appointments) and the system does the rest.
---
## MVP Scope (What We Build Now)
### Must Have (v1.0)
- [ ] Clinic registration + login
- [ ] WhatsApp connection via Waha QR code
- [ ] Treatment management (CRUD)
- [ ] Lead management (add lead, view leads)
- [ ] Appointment booking (lead + treatment + datetime)
- [ ] Automatic reminder sequence (all 10 messages)
- [ ] Smart timing logic (skip reminders that don't apply)
- [ ] Quiet hours (no messages 10pm-8am)
- [ ] Patient reply handling (CONFIRM / CANCEL detection)
- [ ] Appointment status tracking (scheduled → confirmed → arrived → completed / no-show)
- [ ] Dashboard: conversion funnel + key metrics
- [ ] Message log (see every message sent)
### Nice to Have (v1.1)
- [ ] Multiple staff accounts per clinic
- [ ] Lead capture form (embeddable on clinic website)
- [ ] Incoming WhatsApp message handling (new leads auto-created)
- [ ] Calendar view for appointments
- [ ] Custom message templates (clinic can edit wording)
- [ ] Arabic language support for messages
- [ ] Multi-branch support
### Future (v2.0)
- [ ] AI-powered response to patient questions
- [ ] Automated booking via WhatsApp conversation
- [ ] Integration with booking systems (Fresha, Booksy, etc.)
- [ ] Treatment recall automation (Botox every 3 months, etc.)
- [ ] Patient satisfaction scoring
- [ ] Revenue attribution per lead source
- [ ] White-label option