DermaFlow CRM
Live ProductClinic front-of-house CRM for a multi-location skincare business.
Clinic follow-up workflow
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.
Moving the database to D1
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.
Staff-reviewed reply drafts
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.
Tenant isolation testing
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.
Lead-source analytics
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.
Current clinic use
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.