Inspiration

Canada's healthcare system is built for reaction, not prevention. Every Canadian with a smartphone is already generating hundreds of passive health signals daily — steps, sleep, heart rate, screen time — and none of it gets interpreted together. We asked one question: what does your body know right now that you're not paying attention to? HealthSignal is the answer.


What It Does

HealthSignal is a proactive health agent that monitors 9 passive signals over a 7-day rolling window and detects when multiple signals decline together — the difference between a bad day and a real pattern worth acting on.

When a pattern is found, the agent explains why it matters, gives you specific home actions to try first, tells you exactly when to call 811, and provides a script for what to say. It also pulls live Canadian weather and Health Canada advisories, factors in uploaded blood work from LifeLabs or Dynacare, and recommends specific Canadian stores — Shoppers Drug Mart, Costco, Walmart — with addresses, hours, and CAD prices for relevant supplements.


How We Built It

Four parallel workstreams built around a shared data contract agreed in the first hour.

Data layer — nine signal normalizer with direction inversion for signals where higher is worse (screen time, noise exposure, gait asymmetry), three synthetic patient profiles with realistic trajectories, and a day-by-day simulator for the demo.

Scoring engine — pure Python, no LLM. Applies a 15% below-baseline threshold with a minimum three consecutive days before flagging any signal. Multi-signal correlation drives the risk tier. Blood work abnormalities can independently elevate it.

Agent layer — Claude API with tier-specific prompt templates injecting signal evidence, blood work flags, live weather, flu surveillance data, and store recommendations. Follow-up chat passes full health context across turns so the agent never loses memory.

Frontend — Flask backend with four endpoints and a single-page dark editorial UI that reacts emotionally to risk tier — the ambient glow, borders, and severity bar all shift colour in unison when risk changes.

116 tests across all four modules.


Challenges We Ran Into

The typewriter animation corrupted text when users switched patients quickly — two intervals running simultaneously interleaved characters from two responses. Fixed with a global interval reference cleared before each new animation.

Signal direction inversion took real design work. Screen time going up is bad, HRV going down is bad — the same threshold logic needed to work for both without special-casing every signal.

Prompt grounding was persistent. Early agent versions generalized to generic health advice rather than reasoning from the patient's specific numbers. Tight max tokens and explicit injection of every relevant number fixed it.


Accomplishments That We're Proud Of

The 811 script. No health app tells you what to say when you call — we do: "Tell the nurse your HRV has been declining 32% for six days alongside low hemoglobin and ask whether you should see your family doctor." That specificity is what makes it useful rather than just impressive.

116 passing tests at the end of a hackathon, covering every edge case from false-positive prevention to LLM failure fallback.

Blood work PDF extraction working reliably across different Canadian lab report formats in a single prompt.


What We Learned

The agentic value is in the reasoning layer, not the data layer. The feature users responded to most was the agent explaining why multiple signals declining together matters — not the number of signals we track.

Canadian-specific context is dramatically underused in health technology. 811 guidance, provincial vitamin D risk, city-specific store hours and prices — none of it requires sophisticated infrastructure. It just requires building for Canada instead of adapting a generic product.

UI emotional response matters as much as technical depth. Judges felt the urgency when the interface shifted to red before they finished reading the explanation.


What's Next for HealthSignal

Three integrations turn the prototype into a product.

Apple Health and Google Health OAuth — one consent screen gives us all nine signals passively from every Canadian smartphone, including data from Garmin, Fitbit, and Apple Watch through the platform aggregators. Zero behaviour change required from the user.

LifeLabs and Dynacare API — replaces the PDF upload with automated blood work ingestion after each lab visit.

Sun Life benefits integration — the commercial model. Sun Life knows what medications its group benefits members take. Folding that into the scoring context makes assessments more accurate and enables routing high-risk members to Sun Life's nurse line before they need expensive intervention. Prevention at scale reduces disability claims. That is the business case.

Built With

Share this project:

Updates