Inspiration
Prescriptions and lab reports are written for clinicians, not patients. Dense medical jargon, abbreviated dosages, lab values with reference ranges nobody explains. For an elderly patient, someone with low health literacy, or anyone who doesn't read medical English fluently, this is a genuine barrier to understanding their own care — and doctors rarely have time to translate it for you. We wanted to build something that closes that gap directly, for free, for anyone.
What it does
MedLingo turns a photo of a prescription, lab report, or discharge summary into a plain-language explanation — in the language you actually speak.
- Upload a photo of any medical document
- Get a plain-language summary of what it says
- Every lab result is checked against the reference range printed on the document itself and flagged normal / low / high / critical, with a one-sentence explanation
- Anything abnormal is called out as a red flag — always phrased as "worth asking your doctor about," never as a diagnosis
- Choose from 8 languages (English, Bengali, Hindi, Spanish, French, Arabic, Urdu, Swahili) — the whole explanation is translated, not just the interface
- Listen to the summary read aloud via built-in text-to-speech, for low-literacy or visually impaired users
- A local history (stored only in the browser, never uploaded anywhere) lets a caregiver revisit a family member's past documents
It's a health-literacy aid, not a diagnostic tool — and we designed the prompts and UI to make that boundary explicit everywhere.
How we built it
Next.js 16 (App Router) + TypeScript + Tailwind CSS on the frontend. The core is a single API route that sends the uploaded image to a vision-language model with a structured JSON schema (document type, summary, medicines, lab results, red flags), asks for the response in the user's chosen language, and renders it directly — no separate translation step. Text-to-speech uses the browser's native Web Speech API, and history is stored client-side in localStorage, so no user document photo is ever persisted on a server.
Challenges we ran into
- The free-tier hunt. Our first plan used Claude's vision API — great quality, but pay-per-token with no free tier, which didn't fit a zero-budget hackathon build. We moved to Google Gemini next, but the free-tier quota on our test account was capped at zero (a known gotcha with Google Workspace-managed accounts). We landed on Groq, which offers genuinely free, no-billing vision-model access.
- A silent token-budget bug. The vision model we use is a "thinking" model by default — its internal reasoning trace was quietly burning through most of the free tier's tight per-minute token budget before it ever wrote the actual answer, occasionally truncating the response into invalid JSON (especially for longer-output languages like Bengali). Setting
reasoning_effort: "none"fixed it and cut token usage per request by roughly 97%. - Staying honest under uncertainty. Getting the model to say "I couldn't read this clearly" instead of guessing when a photo is blurry took real prompt iteration — accuracy matters more than confidence here.
Accomplishments that we're proud of
- A genuinely zero-cost stack, top to bottom — no credit card required anywhere.
- Verified multilingual output quality by hand (not just English) — the Bengali translations read naturally, not machine-garbled.
- A privacy-first design that doesn't need to be bolted on: no document photo ever touches a database, by construction.
What we learned
Verify "free tier" claims empirically before betting a build on them — three different providers taught us three different lessons about what "free" actually means in practice. Also: a model's own internal reasoning can be an invisible cost center if you don't explicitly manage it.
What's next
- Family/caregiver accounts to share document history securely across devices
- Drug interaction checks across a patient's saved medicine history
- In-browser camera capture for a faster mobile flow
- Offline-first support for low-connectivity users
Built With
- css
- generative-ai
- groq
- javascript
- llm
- localstorage
- nextjs
- node.js
- qwen
- react
- tailwindcss
- typescript
- vision-ai
- web-speech-api
Log in or sign up for Devpost to join the conversation.