HRya2

Inspiration

My uncle — active, late 70s — had a cardiac arrest this week and got a bypass surgery. After a few weeks of supervised rehab, he'll be on his own. HRya2 is the coach that keeps him moving!

What it does

An AI coach calls you on the phone and works out with you, pacing a gentle high-knee session to your live Fitbit heart rate. Adaptive cardio music and a 3D figure keep you moving; it checks for symptoms up front, keeps you in your prescribed HR zone, wraps up warmly after a minute, and sends your cardiologist a one-page report.

How we built it

Twilio ConversationRelay for the call, a streaming OpenAI coach (with safety logic kept deterministic, so the LLM only phrases it), live Fitbit heart rate over Bluetooth, and a FastAPI backend with an event bus feeding the UIs over SSE. Patient monitor in three.js + Web Audio; clinician intake/report app in FastAPI + SQLite.

Challenges we ran into

BLE on macOS silently hangs under uvloop (fixed by forcing asyncio); the Fitbit only shares HR once enabled and uses a 16-bit format; stopping the coach from talking over itself; running voice on the phone and music locally at once; and demoing a real call on a trial Twilio account (so we built a mock mode).

Accomplishments that we're proud of

A real end-to-end call: the phone rings, an AI coach guides exercise while reacting to your actual heartbeat, music and a 3D guide keep you moving, and it ends by generating a clinician report — on real hardware, with a safety-first architecture.

What we learned

Keep the clinically-important decisions deterministic and let the LLM handle phrasing. Real hardware and telephony are where the time goes — build mock paths early so you can iterate for free.

What's next for HRya2

More exercises, richer clinician dashboards, EHR integration, and clinical validation — turning a daily rehab session into a triage layer for chronic heart care.

Built With

Share this project:

Updates