Skip to content

Case study · Built by our founder

VocalMD

HIPAA-grade telehealth, built solo on mobile, live for 2+ years.

A telehealth app where patients log in with their hospital credentials, pull their real medical records, and consult US doctors over encrypted chat, voice, and video, all inside one app on iOS and Android.

  • Founder portfolio
  • Healthcare / telehealth
  • Bare React Native
  • HIPAA / e2e encryption
  • EPIC FHIR
  • Native iOS bridge
VocalMD telehealth app marketing visual
Engagement type
Founder portfolio (pre-Inseed, via LaunchX)
Platforms
iOS and Android (bare React Native)
Status
Live in production for 2+ years
Team size
2 total: sole mobile engineer plus one backend engineer
Industry
Healthcare / telehealth
Key integrations
EPIC FHIR, GetStream, Doximity Dialer, Virgil Security
Time to App Store
6 to 8 months

The story

Telehealth where the hard parts had to be invisible.

VocalMD predates Inseed. Our founder built it as the sole mobile engineer and mobile architect on a two-person build, under Rehan on the LaunchX engagement, years before Inseed existed. It is founder-portfolio work, not an Inseed client project, and it is the healthcare and compliance story the team leans on.

The product connects US doctors and patients for online consultations, and it carries the weight that comes with that: it handles protected health information, so HIPAA is a floor, not a nice-to-have. Patients needed to reach a real doctor, share their actual medical history, and talk over chat, voice, or video, without any of the plumbing leaking their data or pushing them off-platform to swap personal phone numbers and emails.

The brief was to make all of that feel ordinary. A patient should log in, see their records already there, pick a doctor, and start talking. Every genuinely difficult piece, the encryption, the record sync, the masked calling, had to disappear behind a screen that felt like any consumer health app.

What we built

One app, both sides of the visit.

The app shipped both sides of the marketplace in a single bare React Native codebase: the patient app for finding a doctor, syncing records, and consulting, and the doctor app for managing availability, dashboards, and patient conversations. Our founder owned the entire mobile surface end to end, from architecture through App Store and Play Store deployment, while a single backend engineer built the NestJS and PostgreSQL services behind it.

Rather than build real-time messaging, voice, and video from scratch, the app integrated GetStream so the whole doctor-patient conversation stayed inside VocalMD. Onboarding pulled a patient’s medications, conditions, and lab reports automatically through EPIC via FHIR, so people did not have to hand-type their medical history. Subscriptions and in-app purchases ran through RevenueCat.

Because the stakes were clinical, the compliance work was designed in, not bolted on. All sensitive data was end-to-end encrypted with the Virgil Security SDK so no PHI was exposed in transit, and doctor phone numbers were masked so patients could call without ever seeing a personal line.

Architecture

Built for compliance, not retrofitted for it.

The mobile app is bare React Native (not Expo) in TypeScript, with Redux for app state and React Query for server state, and Firebase Auth for sign-in. The backend is NestJS on PostgreSQL, built by the one backend engineer on the team. That split let the mobile side move fast without waiting on a large services layer.

The compliance posture rests on three deliberate choices. First, end-to-end encryption of sensitive data through the Virgil Security SDK, so protected health information is never exposed in transit. Second, keeping every doctor-patient interaction inside the app through GetStream, which removes the off-platform sharing of personal contact details that most telehealth workarounds fall back on. Third, masked calling: doctors verify with their real number, but a native bridge to the Doximity Dialer iOS SDK means patients only ever reach a masked line.

The EPIC FHIR integration is the other load-bearing piece. Patients authenticate with their hospital credentials and the app pulls medications, conditions, and lab reports directly from the hospital record, which is what lets onboarding feel like a login rather than a data-entry form.

Selected screens

Selected screens.

Login
Login
Patient onboarding
Patient onboarding
Patient dashboard
Patient dashboard
Patient health record
Patient health record
Browsing doctors
Browsing doctors
Selecting a doctor
Selecting a doctor
Patient care team
Patient care team
Doctor to patient chat
Doctor to patient chat
In-app video visit
In-app video visit
Scan a medication
Scan a medication
Trustee (caregiver) view
Trustee (caregiver) view
Doctor dashboard
Doctor dashboard
Chat availability settings
Chat availability settings
Publishing a health article
Publishing a health article
Patient newsfeed
Patient newsfeed
Pricing and subscription plans
Pricing and subscription plans

User journey

From hospital login to consultation.

VocalMD patient and doctor user journey diagram
The end-to-end flow: hospital login and record sync, finding a doctor, and consulting over encrypted chat, voice, and video.

Stack

Stack and integrations.

Mobile
Bare React Native, TypeScript
State and data
Redux (app state) + React Query (server state)
Auth
Firebase Auth
Backend
NestJS + PostgreSQL (separate backend engineer)
Real-time comms
GetStream SDK (in-app chat, voice, and video)
Masked calling
Doximity Dialer SDK via a custom native iOS bridge
Encryption
Virgil Security SDK (end-to-end encryption of PHI)
Health records
EPIC via FHIR (medications, conditions, lab reports)
Payments
RevenueCat (subscriptions and in-app purchases)

One decision worth telling

A native bridge for masked calling.

Doctors had to register their real phone number to verify their identity, but the moment a patient placed a call, that personal number was exposed. On a healthcare product that is not an acceptable leak, and there was no off-the-shelf React Native solution for it.

The fix was to drop down to native. Our founder wrote a custom React Native bridge to the Doximity Dialer iOS SDK, which masks the doctor’s number, and wired it into the app so patients could call a doctor directly without ever seeing a personal line. It is the clearest example of what the whole build required: reaching past the JavaScript layer into a native SDK to make a compliance requirement disappear behind an ordinary call button.

Outcome

What it did in the market.

  • Onboarded 100+ doctors and 500+ patients in the first month.
  • 5-star rating on the App Store.
  • Live in production for 2+ years across the App Store and Play Store.
  • 5,000+ downloads.
  • In use across 200+ hospitals through EPIC FHIR hospital login.

What we would do differently

What we would do differently.

Most agencies skip this section. We include it because honest hindsight is the kind of credibility you cannot buy.

Stand up the native bridge test harness earlier.

The masked-calling bridge to the Doximity Dialer SDK was the highest-risk piece, and it could only be exercised properly on a real device. A device-level test harness built at the start, rather than mid-flight, would have made each iteration on the native layer faster and cheaper to verify.

Treat EPIC FHIR variability as a first-class problem.

Hospital record systems do not all expose FHIR data the same way, so the mapping from a hospital login to clean medications, conditions, and labs is more of a moving target than it first looks. Budgeting for that variability up front, instead of hardening it per hospital, would have smoothed the record-sync experience sooner.

Design the compliance scaffolding before the features.

Encryption, masked calling, and on-platform communication were all designed in rather than bolted on, which was the right call. If anything, we would push that discipline even earlier: on a HIPAA product, the compliance primitives are the foundation every feature sits on, and settling them first removes a whole class of rework later.

Related work

Other case studies.

Built by Inseed

The LYVE App

Zero to App Store in under 4 months. Past 3,000 users in the next 3.

Read the case study

Built by Inseed

Playlists

Vibe search shipped in 3 weeks. AI searches up ~200%.

Read the case study

Building something regulated or clinical?

Healthcare, encryption, native SDKs, health-record integrations. Tell us what you are shipping and we will tell you what the first four weeks can de-risk.

Book your audit