← All work

MIRA

Clinics sign up, pay per provider and run their own AI patient intake

We built MIRA's AI intake for the founder's own practice, then made it a product any clinic can buy. We rebuilt the backend under the intake that worked: clinics register, pay per provider and shape their templates, and names never reach the model.

Healthcare & WellnessMulti-clinic intake SaaSBuilt from zero

The patient intake each clinic runs: patients start with an ID and pick their main symptoms before the AI questions begin.

The challenge

The intake worked in three practices but was built for one: hard coded question flows, physician logins set in the code and no real database. Clinics now had to sign up, pay and run it alone.

What we did

We kept the intake that worked and rebuilt the backend under it: one database on Azure, three roles with clinic isolation, per-provider billing in Stripe and identifiers stripped before the model.

The outcome

MIRA became a commercial product: clinics register, pay per provider, add providers and customize intake templates, and the production site passed final QA before handover.

Status
Commercial product, production site through final QA
Roles
Super admin, clinic admin, provider
AI boundary
Names and birth dates never sent to the model
Handover
Code in the client's GitHub, billing on its Stripe

The starting point

MIRA gives pain and specialty clinics AI patient intake, with a structured summary for the physician. We built the first version for the founder's own practice, and it ran there and in two more.

What had to change

That version was built for one practice: hard coded question flows, physician logins set in the code and no multi-tenant database. To sell it, clinics had to sign up, pay, add providers and run intake on their own, without seeing each other's data.

What could not break

  • The intake flow that already worked in practices keeps working
  • Patient names and dates of birth never reach the model
  • Each clinic is fully separate, and only the super admin sees all clinics
  • Built to HIPAA practice, with the BAA and third-party audit on the client's side
  • Patients answer without accounts, on a clinic iPad or from a clinic link

The calls we made

We kept the AI intake that worked and rebuilt the product around it, settling roles and data structure before any screen.

  1. 01

    One database on Azure

    The client had built a sign up page on Supabase. Splitting data across two platforms meant sync problems with Stripe, such as failed payments and account checks, and a second system to bring under HIPAA.

    Ruled out

    Syncing the client's separate Supabase sign up with the Azure product.

  2. 02

    Strip identifiers before the model

    The commercial version collects names and dates of birth, so both are removed on our backend before any intake reaches OpenAI.

  3. 03

    No accounts for patients

    Clinic staff sign in by role, while patients answer on a clinic iPad or from a unique clinic link sent before the visit, so there is nothing for a patient to set up.

    Ruled out

    Patient accounts.

  4. 04

    One price per provider

    Pricing by provider count means every clinic gets the same product, which removes permission checks for each tier and keeps billing to one variable.

    Ruled out

    Basic and premium tiers with different features.

  5. 05

    Short pages, customization last

    The long pain questionnaire became short pages with buttons, like the medical history section, and template customization was built last so sign up, billing and dashboards could ship first.

    Ruled out

    A body map for the pain questions.

How the system fits together

answerssign up, reviewanswersroles,templatesintakede-identifiedsummaryprovider countcallbackssecretsdashboardPatientsClinic iPad or link,no accountClinic admins,providersSign up, invite,review notesIntake flowClinic templates,tap or voiceClinic portalSign up, roles,dashboardsAzure backendOne database,clinics isolatedIdentifier filterRemoves names andbirth datesOpenAIDrafts the clinicalsummaryStripeBilling per providerAzure Key VaultSecrets out of thecodeClinicalnotesActive, archived,searchable
PeopleBuilt by DaticsAI modelOutside serviceData storeNames and birth dates stop at the Azure backend: only de-identified answers reach the model, and each clinic sees only its own notes.

What we built

01

Self-service onboarding and billing

Clinic sign up with a confirmation email and receipt, Stripe billing per provider with subscription acceptance, service terms and discounts, and short intake links for each clinic and provider.

02

Multi-clinic roles

Super admin, clinic admin and provider roles with role switching and access checks, each clinic isolated, and a super admin dashboard across all clinics.

03

Physician dashboard

Active and archived notes with bulk archive and search, plus practice notes for each clinic.

04

Template customization

Clinics add, edit, delete and reorder questions, add child questions, duplicate templates and start from a prebuilt library that the super admin maintains.

05

Shorter pain pages

The pain questionnaire became a three page wizard with buttons, like the medical history section, so patients no longer scroll through one long page.

How it works

Sign up

A clinic registers, picks its provider count and pays through Stripe.

Set up

The clinic admin invites providers and adjusts intake templates.

Send

Each provider shares a short intake link, or patients answer on a clinic iPad.

Summarize

Names and birth dates are stripped, and AI drafts the clinical summary.

Review

The provider reads, archives and searches notes in the dashboard.

A closer look

What changed

MIRA is now a commercial product: clinics register, pay per provider, add providers and customize their intake templates, and the production site passed final QA. The code lives in the client's GitHub repositories and billing runs on the client's own Stripe account.

Under the hood

Datics role
Product built by Datics
AI boundary
Patient names and dates of birth are removed before any call to OpenAI, and the AI drafts a summary without diagnosing.
Isolation
Each clinic account is fully separate, with role based access for clinic admins and providers. Only the super admin sees all clinics.
Security
Azure with HTTPS throughout and secrets in Azure Key Vault, built to HIPAA practice. The client holds the BAA and the third-party audit.
Billing
Stripe callbacks tied to the number of providers each clinic adds, with provider count as the only pricing variable.

AI and models

Azure OpenAI

Cloud and infrastructure

Azure Key Vault

Apps and APIs

Next.jsReactNode.jsStripe

Also in the stack

GitHub

How it shipped

  1. Scoping

    Functional and non-functional documents, a gap analysis, wireframes for sign up and templates, and a proposal revised as features were cut to reach market sooner.

  2. Backend and roles first

    Multi-clinic and multi-provider support, role based access and the new backend, then sign up, the onboarding wizard and per-provider billing.

  3. Dashboards and templates

    Physician and clinic dashboards with archiving and search, then template customization in the last planned sprint.

  4. Client feedback rounds

    Subscription acceptance, confirmation emails, short intake links, practice notes, access checks, child questions, the super admin template library, discounts and bulk archive.

  5. Production and handover

    Secrets moved to Azure Key Vault, live Stripe products and final QA on the production site, then developer documentation, a walkthrough and the code in the client's repositories.

Written requirements, regular meetings

Both sides agreed to replace chat back and forth with written requirements and regular meetings with the founders.

Feedback rounds before launch

After the planned sprints, the founders reviewed the product in rounds, and we worked through the changes from each round before final QA on the production site.

Shipped into their accounts

Code went to the client's own GitHub repositories and live billing to the client's own Stripe account, with developer documentation and a walkthrough at handover.

What this unlocked

Multilingual spoken questions and sending notes into EMR systems are the next features discussed.

Have a product with the same kind of constraints?

Tell us what already exists and what you want it to do. We will tell you what it takes.

Book a 30-minute Product Review