Smile PreVue
A HIPAA-grade SaaS that runs the cosmetic consult end to end, so practices show the patient the outcome, close the case, and take payment without switching tools.

Role
Studio · build + ship
Status
Live
Year
2025-2026
Surfaces
Web + iOS
Live
In production
The problem
A cosmetic consult tends to end with “I want to think about it,” and the case rarely comes back. The patient cannot picture the result, pricing and payment happen in other tools, and financing means a second application with a second company. Smile PreVue is the all-in-one platform for the cosmetic consult, built for cosmetic and prosthodontic practices. A clinician takes one photo on the iPad, the platform renders a preview of the new smile in about 20 to 30 seconds, and the practice can price the case, take a card payment, or offer patient financing in the same visit, with no card reader and no second contract. Branded share links and PDF reports follow the patient home. It is live on iOS and the web, with subscription billing, clinic team management, audit logs, and HIPAA-compliant infrastructure under a BAA.
What we built
- Photo-to-smile rendering pipeline with intake validation and audit trail
- Chairside card payments and patient financing, no card reader or second contract
- Pay-links shared by text, email, or QR that lead with the smile preview
- Branded patient share links that expire, plus clinic-branded PDF reports
- AI Clinical Notes drafted in each provider’s own style, reviewed and signed by the dentist
- Subscriptions through Stripe web checkout or Apple In-App Purchase
- Clinic team management, invites, roles, audit logs
- iOS app on the App Store, full parity with web
How it is built
Smile PreVue is three codebases we run ourselves: a FastAPI backend on Google Cloud Run with async SQLAlchemy and Cloud SQL Postgres, a Next.js dashboard on Vercel, and a marketing site. The iOS app is a Capacitor shell that loads the live dashboard, so a feature reaches the web and the App Store build from the same push. Push to main is the deploy on every surface, and database migrations run when the container starts.
Patient photos upload straight to Cloud Storage on signed URLs rather than through the API, and the backend strips EXIF metadata before the bytes reach any model. An intake check rejects a photo that cannot produce a usable preview before the render runs.
Decisions that shaped it
We chose Google Vertex AI because the decisive constraint was a signed BAA covering patient photos, not a benchmark. Every model call goes through Vertex under the Google Cloud BAA, and swapping the image model to its GA release waited on an A/B test against real patient photos, because a model that reframes the face would break the before and after.
Tenant isolation is enforced twice. Every query filters by clinic, and Postgres row-level security enforces the same boundary on the patient, simulation, consent, and share tables, so a bug in one layer does not expose another clinic’s patients. Share links expire after three days instead of living forever in an inbox.
Payments run on Stripe Connect Express destination charges. The clinic is the merchant of record and Smile PreVue never holds patient money. Financing through Affirm, Klarna, and Sunbit is surfaced by Stripe, subject to the lender’s approval, and the lender carries the credit risk while the practice is paid in full upfront. Patient health information never enters Stripe or the lenders; only opaque IDs, the amount, and a receipt email do. The practice-facing side of that is laid out on the dental payment processing page.
What was hard
Row-level security had a trap that is easy to miss. Postgres resets a transaction-scoped setting on commit, several handlers commit partway through a request, and the next transaction ran with no clinic set and could see nothing. The fix replays the clinic context onto the connection at the start of every transaction.
Texting a patient took four rounds of carrier review before the A2P 10DLC campaign was verified. What shipped is a double opt-in: verbal consent at the chair, an attestation in the app, and a reply from the patient before any link is sent.
AI Clinical Notes
In September 2026 we added AI Clinical Notes. The provider dictates or types raw notes chairside, and the platform drafts the note in that provider’s own writing style, learned from a few past notes. Anything not stated becomes a placeholder to confirm, it never diagnoses or plans treatment, and the dentist reviews and signs every note before copying it into their practice software. It runs on Vertex AI under the same BAA, and the full walkthrough is on AI clinical notes for dentists.
Numbers that matter
Status
Live
iOS + web
Runs the consult
Preview → Pay
one product
Payments
Built in
chairside + financing
Compliance
HIPAA + BAA
Vertex AI BAA
Stack
- Frontend
- Next.js 16React 19TailwindTypeScriptCapacitor iOS
- Backend
- FastAPIPythonAsync SQLAlchemyAlembic
- AI / ML
- Vertex AIGemini 3 Pro Image (BAA)Custom prompt orchestration
- Data
- Cloud SQL PostgresRow-level securityEncrypted patient assets
- Infra
- Cloud RunVercelStripe ConnectRevenueCatTwilioResend
What we learned
The AI is the easy part. The hard part was the trust layer: row-level security, BAAs, audit logs, and share links that expire instead of living forever in a patient’s inbox.
The platform earns its keep at the payment moment. Once a practice can preview, close, and collect in one product, the second tool falls away.
Consent is product work, not paperwork. The SMS double opt-in and the dentist sign-off on every AI note are part of those features, designed in before they shipped.
Model swaps are migrations. We test a new image model on real photos before cutting over, because once a preview release is retired there is no flag to flip back.
Have something that looks like this?
Tell us what is broken. We’ll tell you what the first week looks like.
Next case study →
Howdy Dispatch