-
-
MedAlly - consumer medication safety platform
-
How it works
-
Features
-
Pricing
-
Instant Demo Patients - for easy check
-
Patients created by you
-
Medications Add/Edit page
-
Safety Report with score and grading
-
High Risk Flag for Medication interections
-
Beers criteria for adults
-
Questions to Ask your Doctor
-
Questions to Ask Your Pharmacist
-
Patient Case Specific Chat with AI Agent
-
App in Dark Mode
-
Printable Report
MedAlly — Project Story
Inspiration
My mother takes eleven medications. Her cardiologist prescribes one, her rheumatologist another, her GP manages three more. Nobody looks at the full picture together. That's not a unique situation — it's the norm for millions of older adults worldwide.
1.3 million people are harmed by medication errors every year (World Health Organization, 2023). Most of these errors aren't reckless — they're invisible. A blood thinner and a pain reliever taken together. A sleeping pill that's been on the "unsafe for elderly" list for a decade, still being prescribed. A kidney medication that needs monthly blood tests nobody reminded anyone to schedule.
The information to prevent these harms exists. FDA drug labels warn about dangerous combinations. The American Geriatrics Society publishes the Beers Criteria — a list of medications potentially inappropriate for adults 65 and older, updated every few years by leading experts. NIH maintains RxNorm, a comprehensive drug naming database. The data is there.
What's missing is a tool that brings it together for the people who need it most: family caregivers. Not pharmacists. Not physicians. The adult child managing their parent's medications at 11pm, trying to figure out if it's safe to give Mom ibuprofen for her knee pain while she's on warfarin.
That's what inspired MedAlly.
What We Built
MedAlly is a consumer medication safety platform that runs three layers of safety checks on a patient's medication list — all in one plain-English report, free for any family worldwide.
The Three Safety Layers
Layer 1 — Drug-Drug Interactions A curated database of 85 clinically validated dangerous drug pairs, sourced from FDA drug labels, clinical guidelines, and established pharmacological literature. Covers the highest-priority interactions across anticoagulants, CNS depressants, statins, immunosuppressants, antidepressants, and more — with severity categorized as HIGH RISK, CAUTION, or MONITOR.
Each interaction card shows:
- A plain-English subtitle ("Blood thinner becomes too strong — serious bleeding risk")
- The clinical mechanism, with every medical term underlined and tappable for a plain-English definition
- "Watch for these symptoms" — specific warning signs the caregiver should watch for if the patient is already taking both medications
- A green "What to do" box with concrete, actionable guidance
Layer 2 — Beers Criteria (Adults 65+) When a patient is 65 or older, MedAlly automatically checks each medication against the American Geriatrics Society Beers Criteria (2023 edition) — the gold-standard list of medications considered potentially inappropriate for older adults. 41 medications across 9 concern categories, each with a plain-English explanation and a safer alternative.
Layer 3 — Lab Monitoring Recommendations For 30 of the most commonly prescribed medications, MedAlly surfaces which laboratory tests a patient's doctor should be tracking — and how often. Warfarin needs INR checks weekly. Metformin needs annual kidney function and vitamin B12. Amiodarone needs thyroid, liver, and pulmonary checks every six months. Most patients on these drugs have never been told this. MedAlly tells them.
The Overall Safety Score
Every report includes an Overall Safety Score from 0 to 100, graded A through F. The algorithm deducts points based on what was found:
- Each HIGH RISK interaction: −40 points
- Each CAUTION interaction: −20 points
- Each MONITOR interaction: −10 points
- Each Beers Criteria flag: −8 points
- Each pregnancy risk flag (Category D): −12 points
- Each pregnancy risk flag (Category X): −20 points
Margaret Chen, 72, on Coumadin + Advil + Lasix: Grade D, 42/100 — High concern. Sarah Mitchell, 29, pregnant, on Coumadin + Xanax + Advil: Grade F, 12/100 — Urgent. James Rodriguez, 55, on Lipitor + Lisinopril + Metformin: Grade A, 100/100 — No concerns.
The contrast between these three demo patients — and the fact that MedAlly doesn't cry wolf when nothing's wrong — is the core of the product.
Plain-English Accessibility
Every medical term in the report is underlined with a dotted blue line. Tapping or clicking any term reveals a plain-English definition — all 30 terms including CYP2C9, NSAIDs, INR, eGFR, platelet aggregation, Beers Criteria, and more. Caregivers who have never seen a drug label in their life can understand their loved one's safety report.
Multi-Turn AI Chat
An AI chat assistant, powered by MeDo's multi-turn chat capability, is grounded on the patient's specific medication list and safety report. Pre-populated starter prompts guide caregivers to the right questions: "Is this dangerous right now?" "What can I take instead of Advil?" "When should I go to the ER?" Every AI response ends with a reminder to verify with a pharmacist or doctor.
How We Built It
MedAlly was built entirely on MeDo's Advanced Mode using React 19, TypeScript, Vite, TailwindCSS, shadcn/ui, Zustand, Framer Motion, and lucide-react.
Custom MeDo Plugins
Two custom plugins power the live data layer:
Plugin 1 — RxNorm Search (NIH)
Connects to rxnav.nlm.nih.gov for medication name normalization and autocomplete. Users can type any brand name (Advil, Coumadin, Lasix) or generic name and get back the correct standardized medication with its RxCUI identifier.
Plugin 2 — OpenFDA Drug Label (FDA)
Connects to api.fda.gov to retrieve structured FDA drug labels including drug interactions, warnings, adverse reactions, and pregnancy categories.
Cache-Aside Architecture
Both plugins use a cache-aside pattern with visual trust indicators. Before every API call, MedAlly checks its internal cache tables (rxnorm_cache, fda_label_cache). Cache hits display a "📦 Safety database" badge. Fresh API calls display a "🔴 Live FDA data" badge. This delivers 70–90% faster response times for repeat medications while maintaining data freshness for new ones.
Pre-Seeded Reference Tables
Three reference tables are pre-seeded at app initialization:
critical_interactions— 85 drug pairs (66 HIGH severity, 19 MODERATE)beers_criteria— 41 medications with concern categories and safer alternativeslab_monitoring— 30 medications with affected organs, recommended tests, and monitoring frequencies
The critical_interactions table acts as a safety net that always fires regardless of API availability. If OpenFDA returns no data for a drug, the local table still catches every major interaction we've curated.
Per-User Demo Patients
Three demo patients are seeded per user on first visit — each designed to produce a different outcome:
- Margaret Chen, 72 — elderly, HIGH RISK interactions + Beers Criteria flags
- Sarah Mitchell, 29, pregnant — multiple pregnancy risk flags + HIGH RISK interactions
- James Rodriguez, 55 — clean combination, lab monitoring only
These are read-only fixtures. Users cannot delete or modify them. Each has a "Reset to original" button.
Freemium Model (Stripe)
Free users can manage up to 3 real patient profiles. Premium ($5/month via Stripe Checkout) unlocks unlimited profiles. All safety features — interactions, Beers Criteria, lab monitoring, AI chat, doctor visit prep — are free for everyone.
Challenges We Faced
The RxNav DDI API Deprecation
The NIH's Drug-Drug Interaction API — which we planned to use as the primary interaction engine — was discontinued on January 2, 2024. We discovered this early and pivoted to a two-layer approach: a hand-curated critical_interactions database as the reliable safety net, supplemented by AI synthesis from OpenFDA drug label content. This pivot made the interaction detection more reliable, not less — because FDA drug labels sometimes express interactions differently than a lookup table would.
Brand Names vs Generic Names
The OpenFDA API indexes drugs by generic name and RxCUI, not by brand name. A user typing "Advil" gets RxCUI 5640 from RxNorm — but querying OpenFDA with "Advil" returns nothing. Every API call had to go through a two-step resolution: brand name → RxCUI (via RxNorm) → FDA label (via RxCUI). This also meant that the critical_interactions table needed both generic names and brand name aliases for every drug, with case-insensitive matching in both directions.
Making Clinical Information Understandable
The single hardest design problem was translating pharmacology for caregivers who have never read a drug label. "CYP2C9 inhibition raises warfarin plasma levels" is true and important — but it means nothing to a 45-year-old caring for her father. Every mechanism description was rewritten in plain language. Every card was restructured so the consequence and action appear before the mechanism. Every medical term was given a tappable tooltip. This took significantly more iterations than any technical component.
Jargon Tooltip Rendering
Inline jargon tooltips that open a definition without breaking the surrounding paragraph text required precise positioning. Block-level definition elements pushed text flow in unpredictable ways. The final implementation uses position: absolute within a relatively positioned inline container, so the definition floats above the text without affecting layout.
What We Learned
Caregivers are underserved by health tech. Most medication safety tools are built for clinicians, not the people actually managing medications at home. Plain language isn't a "nice to have" — it's the entire product.
The gap between available data and accessible data is enormous. FDA labels, NIH databases, and AGS guidelines are all public and comprehensive. Nobody had connected them in a consumer-facing interface before MedAlly.
Three layers is the right scope. Drug-drug interactions alone is a lookup tool. Add Beers Criteria and you have geriatric safety. Add lab monitoring and you have proactive health management. The combination produces something qualitatively different from any single layer.
MeDo's multi-turn chat is genuinely powerful when grounded correctly. The AI chat isn't generic — it knows Margaret's specific medications, which interactions fired, and what Beers Criteria flags are active. Context makes the difference between a chatbot and an assistant.
What's Next
- Medication label OCR — photograph a pill bottle to add medications automatically
- Refill reminders — push notifications before medications run out
- Drug-food and drug-supplement interactions — grapefruit juice with statins, St. John's Wort with antidepressants
- Share with your doctor — a one-page PDF formatted for clinical handoff
- Integration with pharmacy systems — auto-import medication lists from CVS, Walgreens, or Epic
Built With
MeDo React 19 TypeScript Vite TailwindCSS shadcn/ui Zustand Framer Motion lucide-react FDA OpenFDA NIH RxNorm AGS Beers Criteria 2023 Stripe ERNIE
Built With
- api
- css
- fda
- html5
- javascript
- lucide-react
- medo
- openfda
- react
- rxnorm
- shadcn/ui
- stripe
- tailwind
- typescript
- vite
- zustand
Log in or sign up for Devpost to join the conversation.