Inspiration

In India, many elderly patients take four or five medicines a day. The strips are printed in small English text, and nobody explains what each tablet is actually for. A grandparent can't easily ask "Is it OK to take these two together?" or "What is this one for?" in Hindi or Marathi. [Add one line of your own story here, e.g. a family member who mixed up their tablets.]

What it does

MediClear explains medicines in simple English, Hindi and Marathi, with large text and audio.

  • Find a medicine: type the brand name, or take a photo of the strip. MediClear reads the brand and active ingredients from the photo.
  • About it: what the medicine is for, how to take it, what to avoid, common side effects and when to see a doctor. Every section can be read aloud in the chosen language.
  • Ask a question: every question goes through a safety router first. Overdose or emergency questions show a large red Call 112 button. Questions only a doctor should answer (e.g. "Can I stop my BP tablet?") are referred to a doctor. Only safe, factual questions are answered, and only from verified data.
  • My medicines: save the medicines you take, and MediClear checks them against each other. It warns about duplicate ingredients, risky pairs and timing problems, each shown with an icon, a word and a colour, so it works for colour-blind users too.

No login needed: each phone gets an anonymous ID.

How we built it

  • Backend: FastAPI + SQLite (SQLModel), with a hand-verified knowledge base of 24 active ingredients, 23 Indian brands and 33 interaction pairs. Every fact links to its source.
  • Photo reading: Gemini with structured output reads the strip. Confidence, ingredient and strength checks then reject any result that doesn't match the database, so a misread photo becomes "please type the name" instead of a wrong medicine.
  • Translations: English comes straight from the verified database. Hindi and Marathi are translated by Gemini from that English text only (never generated from scratch) and cached.
  • Audio: gTTS, cached per language.
  • Frontend: React + Vite + TypeScript, designed for elderly users: 20px base text, 56px+ buttons, high contrast, a two-step "Remove" so nothing is deleted by a shaky tap, and every error message translated.
  • Quality: pytest + ruff for the backend and ESLint + TypeScript build for the frontend, all in GitHub Actions CI. Tests use a fake LLM, so CI needs no API key.
  • Deployment: one Docker image on Render, with FastAPI serving both the API and the built React app.

Challenges we ran into

  • Messy strip text: labels like "Paracetamol (Anhydrous)" stopped matching our database, so we had to clean bracketed qualifiers before fuzzy matching.
  • API rate limits: the free Gemini tier returns 429 errors under load. We added a fallback to a second model, plus a "Read in English" button when translation is busy.
  • Not trusting the AI: the hardest design work was keeping the LLM away from facts. Every answer path had to end in verified data, a fixed safe message or "ask your doctor".
  • Designing for elderly users in three languages, including Devanagari fonts and layouts that still work at phone width and 200% zoom.

Accomplishments that we're proud of

  • The AI never invents medical facts. It only reads photos, sorts questions into safety categories and translates verified text.
  • We measured safety instead of assuming it, with two evals:
Eval Test cases Result
Safety router 25 questions 25/25 correct, 0 unsafe answers
Photo reading 10 real strip photos 10/10 correct, 0 "wrong but confident"
  • A complete, deployed app: 4 screens, 3 languages, audio, interaction alerts and CI on every push.
  • Accessibility built in from the start: large text, big touch targets, translated errors and alerts that never rely on colour alone.

What we learned

How to build an AI feature where being wrong is dangerous: use structured output, check every AI result against trusted data, and write evals that count unsafe results, not just correct ones. We also learned a lot about accessible design for older users, and about shipping a full stack app from local code to a live Docker deployment.

What's next for MediClear

  • More medicines and brands, reviewed by a pharmacist
  • Native-speaker review of the Hindi and Marathi text, then more Indian languages
  • Medicine reminders
  • Sharing the medicine list with family or a doctor

Built With

Share this project:

Updates

Submission history