DermaFlow CRM
Live ProductClinic front-of-house CRM for a multi-location skincare business.
The problem
A dermatology clinic I know was running its front of house on memory and WhatsApp. Leads sat in chat threads, follow ups lived in someone's head, and no shows were discovered when the chair sat empty. Clinic CRMs exist but the specific clinic's operational needs and cost profile made enterprise options unsuitable.
The decision that mattered
The stack. I built it on Supabase, then decided a fully Cloudflare setup was the right long term shape. One vendor, pay per request, no idle cost for a small clinic. The obvious move was rewriting every data call. Instead I wrote a shim that mimics the Supabase query builder on top of D1, so the call sites stayed the same and only the engine changed. Slower to design, much cheaper to migrate, and it gave me one place to enforce clinic scoping on every single query.
Where AI fits
Built with Claude Code. Inside the product, AI stays small on purpose. WhatsApp reply drafts that staff review before sending, never auto sent. In a medical setting I'd rather have trust than automation.
What fought back
The QA pass caught tenant isolation bugs, which is the one failure you cannot have in a multi clinic system. I fixed them and then built a Playwright end to end suite covering auth, role gating and all the core flows across three screen sizes, so that class of bug can't quietly come back. The remaining low and medium findings are tracked as product decisions, not defects.
The next fix
The analytics layer. The dashboard answers "what happened". The clinic's actual question is "which lead source is worth the spend", and that needs cohort views, not counters.
Where it stands
It runs a real clinic's front of house every day, on their own domain. Leads, appointments, reminders, treatment records. The signal I care about is that the clinic works from it, not alongside it.