Inspiration

Most health-tech tries to diagnose you in one shot. That's a hard problem, and honestly a slightly arrogant one for a hackathon project to promise. What actually goes unnoticed is drift — the slow week-over-week change in how steady your hand is, how you walk, how your voice sounds — the stuff that happens between doctor visits and nobody's watching for. We got interested in that gap instead of chasing a diagnosis nobody should trust from a weekend build.

What it does

MotorMetrix turns your phone into six motor-tracking tests — Trace, Tap, Write, Tremor, Gait, and Voice — no camera, no wearable, no app store. Every attempt gets compared against your own personal baseline (not a population average, not a clinical norm) using real statistics computed live on-device. When you drift from your own normal, it flags it — and then Gemini steps in to translate the z-scores and significance buckets into a plain-language sentence any patient or caregiver can actually read, without ever pretending to diagnose anything.

How we built it

Next.js 16 + React 19 on the frontend, everything client-side and local-first — no server holding your health data. The core is a layered pipeline: capture → signal processing (real DSP: autocorrelation pitch tracking for jitter/shimmer/HNR in the Voice test, kinematic trajectory analysis for Trace) → a Welford's-algorithm baseline engine → z-score change detection. Gemini sits entirely on top of that, in one API route, reading only the already-computed numbers and never touching scoring or measurement — the math stays deterministic and auditable, Gemini just narrates it.

Challenges we ran into

Getting microphone permission errors to actually tell us why they failed instead of a blanket "denied" cost real debugging time — turned out to be Windows blocking mic access at the OS level, several layers below where the browser even gets a say. We also had to resist the urge to let Gemini touch the actual scoring — it would've been an easier demo to let it "interpret" the results, but that's exactly the kind of unearned confidence we didn't want to ship.

Accomplishments that we're proud of

92 passing unit tests on genuinely deterministic logic (not just smoke tests), a clean one-way-dependency architecture (capture → signal → baseline, nothing circular), and holding the line on "no AI diagnosis" even when it would've been the flashier pitch. Also: a Gemini integration that disappears cleanly if the API key isn't set, instead of taking the whole app down with it.

What we learned

The boundary between "AI-powered" and "AI-decides" matters more than we expected — and it's genuinely possible to satisfy a "Built with Gemini" requirement without compromising a tool's core honesty, if you're deliberate about where the LLM sits in the pipeline.

What's next for MotorMetrix

Wiring this into an actual caregiver check-in loop — weekly summaries, trend lines a clinician can glance at between visits instead of guessing from one snapshot months apart. Longer-term: the same architecture (deterministic core + narration layer) extends to more tests without touching what makes it trustworthy in the first place.

Built With

Share this project:

Updates

Submission history