PulseRelay
The paramedic treats the patient. PulseRelay keeps track of what’s happening.
Inspiration
A paramedic can’t always stop to document every change while treating a patient in the back of an ambulance.
But the patient's condition doesn't wait.
Blood pressure changes. Heart rate changes. Medications are given. New information comes in. All of it needs to make it to the hospital.
I built PulseRelay to handle that tracking in the background, so the paramedic can stay focused on the patient.
What it does
PulseRelay listens while the paramedic speaks naturally during transport.
The paramedic can say:
“Blood pressure is 104 over 67. Heart rate 108. Pain seven out of ten.”
PulseRelay records it immediately.
When the patient's condition changes, PulseRelay notices.
When information is incomplete, it doesn't guess.
For example:
Paramedic: “BP ninety-two over…”
PulseRelay: “I captured systolic 92, but the diastolic value is unclear. Can you repeat the full blood pressure?”
The paramedic keeps working. PulseRelay keeps the patient's record up to date.
The receiving team can see the patient's latest vitals, changes, medications, and events before the ambulance arrives.
When it's time to hand over the patient, PulseRelay has already organized the information.
How I built it
PulseRelay combines voice input, Gemini, Google ADK, and Google Cloud services to turn spoken observations into a continuously updated patient record.
Behind the interface, every observation is checked before it becomes part of the patient's record. Changes in vital signs are calculated from the recorded values, rather than guessed by the AI.
The system runs on Google Cloud using Cloud Run, Firestore, and Pub/Sub.
There are two views:
Transport View — what the paramedic sees during the journey.
Receiving Team — what the hospital team can see as the patient approaches.
Challenges I ran into
The biggest challenge was dealing with the way people actually speak.
A paramedic isn't going to fill out a form every time something changes. They might say “pressure's 120 over 80,” “heart rate's 118,” or start giving a blood pressure and get interrupted.
PulseRelay had to understand those observations without turning an incomplete statement into false information.
That became one of the most important rules in the system:
If PulseRelay doesn't know, it asks.
Google Cloud Infrastructure:**
PulseRelay is built for Google Cloud deployment. The codebase includes complete GCP integration:
- Cloud Run —
infrastructure/cloudrun/service.yamlconfigures container deployment with auto-scaling, IAM, and Cloud SQL proxy - Firestore —
pulserelay/backend/state/firestore_store.pyimplements patient state persistence with real-time sync - Pub/Sub —
pulserelay/backend/pubsub.pystreams extraction events for downstream processing - ADK Agent —
pulserelay/backend/agent/adk_agent.pyintegrates Google Agent Development Kit for orchestrated multi-agent workflow
The live demo runs on Render (free tier) because GCP billing couldn't be enabled for my account due to card issues. All GCP infrastructure code is visible in the repository.
Accomplishments that I'm proud of
PulseRelay doesn't just record what the paramedic says.
It follows the patient's story as the transport progresses.
It can capture observations, notice changes, catch missing information, ask the paramedic to clarify, and prepare the receiving team for the patient's arrival.
The result is a simple division of work:
The paramedic focuses on the patient. PulseRelay keeps track of the patient.
What I learned
I learned that the most useful technology doesn't necessarily add another thing for someone to operate.
In this environment, the best interface is one that gets out of the way.
The paramedic shouldn't have to stop treating a patient just to tell a computer what happened.
What's next for PulseRelay
I want to take PulseRelay into the environment it was designed for: a real ambulance.
That means making voice recognition reliable around sirens and road noise, supporting unreliable connectivity, connecting directly to medical monitors, and eventually connecting the transport record to the hospital's existing systems.
The goal is straightforward:
Less time documenting. More time caring for the patient.
Built With
- cloudrun
- fastapi
- firestore
- gemini
- google-adk
- google-cloud
- javascript
- python
- web-speech-api


Log in or sign up for Devpost to join the conversation.