DTDhanlee
← All work
2026 — ongoing

PulsePilot

Recover more revenue before leads go cold — a revenue-risk inbox for aesthetic clinics.

Solo build · Next.js, React, TypeScript, Supabase

~0k

lines of code

0

API routes

0

Postgres tables

0

messaging channels

The problem

Aesthetic and medical clinics lose bookings inside their DM inboxes. A hot inquiry sits idle. A follow-up goes overdue. Pricing gets sent with no booking link. A voice note never gets answered. Each one is revenue quietly leaking out of a conversation nobody is watching.

PulsePilot pulls DMs from 7 channels — Instagram, Messenger, Telegram, WhatsApp, SMS, Viber, and Email — into one revenue-risk queue, scores each conversation by urgency, and tells the operator exactly what to do next.

The wedge

Where incumbents like Pabau, Zenoti, AestheticsPro, and Boulevard are all-in-one EMR and charting platforms, PulsePilot is intentionally narrow. It wins on one outcome: revenue recovery, not feature breadth. The launch scope is deliberately gated to Inbox, Analytics, and Settings — everything else stays behind a scope registry until the core earns its keep.

Stack, with reasons

Next.js App Router

Server-rendered dashboard — fast first paint for a tool operators keep open all day.

Supabase Postgres + RLS

Row-level security on every table. Multi-tenant isolation is enforced in the database, not in application code.

Edge functions + Gemini AI

10 Supabase Edge Functions handle multi-channel webhook ingest; Gemini powers smart replies, transcription, and translation — always behind a human-approval gate.

Paddle billing

Four per-clinic subscription tiers (Free / $17 / $43 / $85) with checkout, webhooks, and plan gating wired end-to-end.

Product tour

Priority inbox with per-channel badges
The priority inbox — conversations ranked by revenue risk, not recency, with a color rail, peso value, alert counts, and the next best action per lead (shown here on seeded demo data).
Conversation view with AI draft controls
A live conversation thread — AI-tools and AI-draft controls above a human composer with Form, Pay, and booking-link actions. The AI drafts; a human sends.
Analytics view
The analytics view — conversion funnel and channel leakage, revenue forecast, operator performance, and response-time thresholds (shown here on seeded demo data).
Payments and revenue operations
Revenue operations — eleven payment gateways (PayMongo, Stripe, GCash, PayPal, Xendit…), a per-patient transactions ledger, and a gift-voucher tool.
Mobile inbox
Fully responsive, with a native-style bottom tab bar — the front desk isn't always at a desk.

Tradeoffs I chose

Deterministic SQL over an ML model

Risk scoring runs on explainable SQL rules. Operators trust a score they can interpret; a black-box model would be more impressive and less used.

Human approval on every AI draft

The AI composer never auto-replies. Clinics answer patients; the product drafts. That line doesn't move.

Focused mode as the default

Most of the built surface area is gated off at launch. Shipping less was a decision, not a limitation.

Honest limitations

PulsePilot is pre-revenue. The live demo runs on a seeded clinic workspace, Meta app review constrains real-inbox onboarding, and the product is solo-maintained. This page will update as those change — the numbers above are the build, not the business.