Inspiration
The idea came from watching a former classmate manage life as a diabetic. He couldn't take ibuprofen, but that one restriction meant he was constantly stopping to check his medication list before taking anything for quick relief. Watching him do this repeatedly made us realize how much mental precaution individuals with chronic conditions carry just to stay safe. That's what inspired us to build a tool that stores an individual's medications and instantly flags interactions or contraindications, so no one has to second-guess a decision that could affect their health.
What it does
MedCheck lets users log their medications (prescriptions and supplements) and flags risky combinations while explaining this in plain English, sorted by severity. These flagged interactions include suggested questions for a pharmacist or doctor, a body map highlighting the affected systems, and a timeline view of overlapping doses with the option of a voice readout. It also introduces a caregiver mode that lets someone view a read-only copy of the patient’s medication list.
How we built it
The frontend is written in React (Vite) while the backend is written in Python (FastAPI). Supabase handles auth (and Google sign-in) and stores medications, interaction flags, and caregiver logs. RxNorm and OpenFDA (via the RxNav Interaction API) provide drug data and interactions, which is taken by Google Gemini to turn into plain-English explanations and risk summaries. We run two separate Gemini API keys, one dedicated to the voice assistant, so a burst of requests for one feature can't stall the other. Backboard gives the AI persistent memory across sessions, and ElevenLabs handles both speech-to-text and text-to-speech for the voice assistant. The frontend is deployed on Cloudflare, the backend on Vercel.
Challenges we ran into
Integrating 6 external services into a single functional product meant implementing fallbacks for flaky ones. We also had to carefully frame each output to be a conversation-starter, not a diagnosis, since interaction data does not capture a patient’s full clinical perspective. Deployment was its own challenge towards the end of the weekend since splitting frontend and backend across two platforms created few routing and CORS issues that took patience and real debugging.
Accomplishments that we're proud of
Building a solid idea by incorporating multiple different aspects, like interaction detection and persistent memory, while learning most of this stack from scratch is our biggest accomplishment. Another accomplishment would be that we brainstormed unique features to include that provides a human angle while still maintaining technology as the focus.
What we learned
We saw firsthand how much mental stress chronic condition management adds to everyday decisions, and how much of it functional, accessible design can offset. We also learned how to reliably link multiple AI/data APIs together with effective fallbacks for live demos.
What's next for MedCheck
Some future implementations for MedCheck would be Barcode/photo scanning for adding meds, deeper timeline reminders, richer body map detail, and direct pharmacy integrations to keep medication lists automatically up to date.
Built With
- backboard
- cloudflare
- css
- elevenlabs
- fastapi
- git
- google-gemini
- google-oauth
- html
- javascript
- openfda
- postgresql
- python
- react
- rxnorm
- supabase
- uvicorn
- vercel
- vite
Log in or sign up for Devpost to join the conversation.