Mobile prototype for the Dialogue challenge at MPC Hacks 2026.
The project explores a zero-wait virtual care flow: an AI-assisted pre-consultation prepares a structured clinical handoff before the licensed care provider sees the patient. The AI can collect context, summarize symptoms, inspect patient-provided media, suggest routing, and draft notes. Regulated clinical decisions stay with the care provider.
FastCare turns a virtual-care visit into a clinician-ready packet before the provider opens the case.
- Members complete a low-friction AI intake by chat, voice, and optional camera/photo context.
- Gemini helps interpret free-text answers and generate visual notes from member-provided media.
- The backend checks red flags, assigns risk, suggests routing, and prepares a structured care packet.
- Providers review a prioritized queue, inspect the packet, and approve, modify, request more info, escalate, or start a video visit.
- Member-facing FastCare updates persist back to MongoDB so appointment suggestions and provider decisions can show up in the member app.
- Every regulated medical decision remains with a licensed provider.
- Expo
- Expo SDK 54
- React Native
- TypeScript
- NativeWind / Tailwind CSS
- Node / Express backend API
- MongoDB
- Gemini 2.5 Flash
- ElevenLabs Conversational AI
- LiveKit / WebRTC
- Vultr deployment target
.techhackathon domain branding
Install dependencies:
npm ciCreate a local environment file:
cp .env.example .envKeep real MongoDB credentials in .env only; do not expose them with an EXPO_PUBLIC_ variable.
Keep Gemini, ElevenLabs, MongoDB, and Vultr credentials in .env only too. The shared .env.example intentionally uses placeholders for deployment secrets.
If the backend is reachable outside your laptop, set DEMO_API_KEY and pass it as x-demo-api-key or a Bearer token for provider/demo routes.
Start the backend API:
npm run backend:devStart Expo:
npm run startThen open the app with Expo Go, iOS Simulator, Android Emulator, or web.
Use Expo Go from the App Store. This project is pinned to Expo SDK 54 so it works with the current Expo Go version we tested on iPhone.
Start the app in LAN mode:
npm run start -- --go --host lan --port 8082 --clearFind your Mac IP address:
ipconfig getifaddr en0On the phone, open this URL in Safari, replacing the IP if needed:
exp://10.201.48.144:8082Safari should ask to open the page in Expo Go. Tap Open.
If the phone shows Project is incompatible with this version of Expo Go, do not upgrade the project SDK. Keep the project on SDK 54 or update Expo Go on the phone.
Do not use localhost on the phone. On iPhone, localhost means the phone itself, not the Mac running Expo.
npm run start
npm run ios
npm run android
npm run web
npm run typecheck
npm run backend:dev
npm run backend:startThe backend prepares the clinical handoff packet that the care provider sees. It stores intake cases in MongoDB and keeps regulated decisions with the care provider.
Available endpoints:
GET /api/health: backend and integration readiness.GET /api/departments: routing destinations for care requests.POST /api/intakes: patient intake in, clinical packet out.GET /api/member/:memberName/fastcare: persisted member FastCare state.POST /api/member/:memberName/fastcare/updates: append a provider/member update.PATCH /api/member/:memberName/fastcare/appointments/:updateId: record a member appointment response.GET /api/provider/cases: care provider queue.GET /api/provider/cases/:id: one care provider case.PATCH /api/provider/cases/:id/action: approve, approve test, decline, modify, request info, reassign, reschedule, start video, or escalate.POST /api/demo/seed: seed demo cases for the pitch.
Concrete demo flow:
- Patient enters a FaceTime-style AI intake with transcript, symptoms, vitals, and optional image/video notes.
- Backend checks red flags, suggests the right care department, and creates a care provider packet.
- Care provider sees the summary, risk level, red flags, routing recommendation, and allowed actions.
- Care provider makes the final clinical decision: approve, modify, request more info, video call, or escalate.
Integration roles:
- ElevenLabs: voice intake layer for the patient conversation.
- Gemini: direct model access for visual audit and multimodal packet summarization.
- Gemini model:
gemini-2.5-flash. - MongoDB: stores clinical cases, packets, and care provider actions.
- Vultr: deployment target for the backend demo with a GitHub Actions workflow that packages and deploys the backend after typecheck and tests pass.
.tech: project domain for the hackathon demo and submission branding.
The FastCare ROI model is documented in docs/FASTCARE_ROI_MODEL.md and tested in
src/utils/fastCareCapacity.test.ts. The defendable base case projects about
6.2x member capacity with the same 100 care providers. The quality-protected
10M target requires average care-provider time at or below 1.5 minutes per
request, live visits near 5%, fast reviews under 90 seconds, and human approval
for every regulated decision.
The project currently includes:
- two-role mobile app entry point for members and care providers
- Dialogue-inspired member experience with services, intake choice, chat intake, and FaceTime-style intake screens
- care provider queue grouped by clinical lane, urgency, risk, and recommended action
- provider case review with transcript, summary, red flags, routing, member updates, and care-provider actions
- Mongo-backed intake sessions, clinical cases, member FastCare state, provider case routes, and demo seeding
- Gemini-backed AI intake assistant with deterministic fallbacks when model credentials are not configured
- Gemini vision notes for member-provided photos or camera snapshots
- ElevenLabs conversation-token route, native mobile voice path, and smoke-test screen for voice intake
- emergency/red-flag detection, routing recommendations, action gating, and clinical packet generation
- capacity model and tests for the FastCare throughput claim
- GitHub Actions workflow for Vultr backend deployment
- style notes in
STYLE_GUIDE.mdand project context inMEMOIRE.md
Quality checks:
npm run typecheck
npm test -- --runInBandBuild two experiences:
- Patient app: low-friction audio/video intake with simple questions and optional visual audit.
- Care provider app: clinical handoff dashboard with transcript, bullet summary, risk flags, routing, and one-click care provider actions.
Core principle:
Do not replace clinicians. Remove the repetitive operational work that keeps them from doing clinical work.
We are four people building this during the hackathon. Prioritize many small, focused files over one large file.
When adding features:
- split UI into small reusable components
- keep screen files thin
- move mock data, constants, helpers, and types into separate files
- avoid putting an entire flow in a single component
- prefer clear folders and small files so teammates can work in parallel without merge conflicts