Inspiration

My grandma has been going from doctor to doctor for years, on multiple medications, and most of what she goes through happens because of one specific thing: a prescribing cascade — a side effect gets mistaken for a new problem, so a new medication gets added. I built Check On so families like mine could catch that before it happens.

What it does

Check On catches prescribing cascades. The elderly person taps one of six icons when something feels off — no typing, no accounts. Every symptom gets checked two ways: a live query against real FDA adverse-event data (FAERS, via openFDA) for anything statistically linked to a recently started medication, and a comparison against a personal frailty baseline trained on real government health survey data. A caregiver gets one plain-language flag — never a raw number, never a diagnosis.

How we built it

Backend: FastAPI, Postgres. Frontend: React. The frailty model is trained on real NHANES data using an adapted Fried Frailty Phenotype. The medication-symptom check computes a real Proportional Reporting Ratio and Evans criteria against live FAERS data. AI: openai/gpt-oss-120b via Groq, free tier — used narrowly. Every decision (which of five outcome states fires) is deterministic code, not AI. The model only turns an already-decided outcome into one plain-language sentence, and every sentence passes two safety checks first: one blocking false-reassurance language, one verifying it never names a medication that wasn't actually involved.

Challenges we ran into

Our frailty model was originally built using grip strength, but our app only collects data through a weekly phone check-in — so we rebuilt the baseline using walking difficulty instead, which actually matched the original clinical research even more closely. The Llama model we planned to use on Groq turned out to be deprecated the day before our deadline — caught just in time by checking the docs directly instead of trusting the model list. We also found a real bug where openFDA can return a technically successful response with a silently wrong number under load, and a case where our AI invented a medication that was never actually involved — which is why we built a dedicated fact-checking layer on top of the language-safety checker.

Accomplishments that we're proud of

Every number in this app traces back to a real, verified source — nothing fabricated, nothing guessed. We built real safety guardrails around the AI instead of just prompting it to behave, including a check that catches the AI naming a medication that isn't real.

What we learned

though this genre ( health ) is new to me and i dont have much information about it i challenged myself into learning about it to help people with such an issue, and i learned that its way more fun when you create something without much knowledge about it you learn along the way.

What's next for Check On

wider medication window / more symptoms / real deployment

Share this project:

Updates