Inspiration Most people who witness an emergency freeze - not from indifference, but because they genuinely don't know what to do. The knowledge exists. Paramedics know exactly what to do. But that knowledge isn't accessible to the person standing next to the injured in the moment it's needed. For cardiac arrest, survival probability drops roughly 10% per minute without CPR
The ambulance takes 8 minutes. The bystander takes zero - if they know what to do. FieldMedic tries to close that gap.
How I Built It Vibe coded with AI as engineering partner, which meant fast iteration but staying deeply engaged with every decision. Three ADK agents coordinated by an orchestrator:
IntakeAgent- detects language, urgency, injury category from raw input TriageAgent - Gemini Vision analyzes the wound photo, returns severity and first action GuidanceAgent - generates multilingual step-by-step instructions, falls back to offline tree if network fails
React PWA on Firebase Hosting, FastAPI on Cloud Run, Firestore for real-time case sync, Cloud TTS for voice output, Gemini Live API for two-way voice.
What I Learned Mobile browsers are hostile in ways that matter. getUserMedia silently fails over plain HTTP - no error, no callback, nothing. Geolocation does the same. More time went into mobile compatibility than any AI feature.
Challenges Getting language to propagate correctly through the full pipeline - from intake detection through guidance generation through TTS voice selection - required touching six files and was broken in subtle ways at each step. The camelCase/snake_case boundary between the Zustand store and Pydantic backend caused cases to silently save as empty records. Pydantic ignores unknown fields rather than erroring, so startedAt sent to a field expecting started_at produced no warning and no data.
Built With
- fastapi
- firebase-hosting
- gemini-2.5-flash
- gemini-live-api
- google-agent-development-kit-(adk)
- google-cloud
- google-cloud-build
- google-cloud-firestore
- google-cloud-run
- google-cloud-text-to-speech
- python-3.12
- react-18
- vite
- zustand
Log in or sign up for Devpost to join the conversation.