Your medical records, in your language.
HealthLiteracy AI
Clinical documentation is written for providers. Patients receive the same documents at discharge, often scared, sometimes in pain, frequently in a language they do not read fluently, and are expected to manage their own care from them. 88% of American adults have less-than-proficient health literacy. Patients who understand their discharge instructions are 30% less likely to be readmitted. That gap is not inevitable. It is addressable with a well-designed AI tool.
The proof point
Seventeen years of watching patients fold their discharge papers into a bag and go home without understanding them. This tool closes one piece of that gap, for free, in twelve languages, with no login required.
This tool exists because that gap is preventable. Not later. Now.
The problem
The stakes are not abstract
languages at launch
HealthLiteracy product spec (Arabic, French, Hindi, Japanese, Korean, Mandarin, Portuguese, Russian, Spanish, Tagalog, Vietnamese, English)
reading levels (Simple, Clear, Complete)
Patient-facing labels; internally mapped to depth tiers, not shown as grades in UI
of Americans lack proficient health literacy
U.S. Department of Health and Human Services, Healthy People 2030
Process
How it was built
STEP 01 — CONSTRAINT SET
The Constraint Set
No login. No setup. Urgent items first. Medical terms explained in the same sentence. Twelve languages at launch, not deferred. Attribution language in the output, not the footer. Every constraint came from seventeen years of watching what patients actually do when they leave a care setting.
Pivots
What changed and why
The standard MVP pattern is English and Spanish first, more languages later. That pattern was rejected before the first commit. The launch set was chosen for coverage and script diversity across the largest underserved U.S. patient populations: Arabic, Mandarin, Hindi, Russian, Vietnamese, Tagalog, Korean, Japanese, French, Portuguese, and Spanish alongside English.
Deferring language support is a product decision about whose needs wait. This product made the opposite choice.
Internally the system maps to 5th grade, 8th grade, and college-equivalent depth. The UI shipped Simple, Clear, and Complete because grade labels confuse family members and shame patients. Same constraint as the discharge paperwork problem this product exists to solve.
Grade numbers shame patients under stress. Plain labels serve the people actually using the product.
The original spec called for automatic verification on every translation. The shipped version is user-initiated. Doubling latency and cost on every free session prioritizes pipeline architecture over the patient's experience. Making verification explicit and on-demand respects autonomy, controls cost, and keeps the patient in control of what happens next.
Automated is not always more trustworthy. Visible and explicit builds more trust than silent in a clinical context.
The product uses claude-sonnet-4-20250514 for both translation and verification with no smaller model path and no model router. High-stakes plain language for patients making medical decisions is not generic chat. Retries fire on transport failures. Zod validates request bodies. Claude responses use manual validation.
Model selection is a product safety decision in clinical contexts. Default to the model that gets the clinical output right.
What shipped
Every layer, production-ready
Input and Access
Paste, upload (PDF and .txt text-layer only), or voice (Web Speech API, Chrome and Edge best). No login, no setup, no cost. Works on mobile, tablet, and desktop.
Translation Engine
12 languages: Arabic, French, Hindi, Japanese, Korean, Mandarin, Portuguese, Russian, Spanish, Tagalog, Vietnamese, English. 3 reading levels: Simple, Clear, Complete. Medical term explanation in every output. Attribution language preventing misreading as diagnosis. Claude Sonnet (claude-sonnet-4-20250514).
Output and Verification
Urgent item extraction as separate structured card array. Side-by-side view (original and translation). User-initiated verification pass (Check for Missing Info button). Issue cards flagging detected omissions or inaccuracies. THOROUGH CHECK / PARTIAL CHECK / QUICK CHECK badges. Copy and share, PDF export with disclaimer. Session persistence via Supabase (90-day TTL, 410 on expiry).
Infrastructure and Quality
Next.js 15, App Router, TypeScript. Tailwind CSS v4. Claude API (claude-sonnet-4-20250514), timeouts and retries on transport failures. Zod validation on API request bodies; manual validation on Claude responses. Rate limiting on translate, verify, share (POST and GET), and parse routes. Supabase (90-day expires_at, 410 on expiry, versioned SQL migrations). Vercel.
Accessibility
Skip link. Full keyboard navigation and tab semantics. Focus-to-results after translation completes. prefers-reduced-motion respected. Visible error states for PDF extraction and share failures.
What this demonstrates
For every audience
Zero tolerance for friction: no login, urgent items first, plain reading level labels.
Issue cards and badges, not automatic re-render on every translation.
Sonnet for translate and verify; verification explicit and on-demand.
Twelve languages at ship; skip link, keyboard nav, focus-to-results, reduced motion.
Zod on request bodies, rate limiting on translate, verify, share, and parse routes.
Problem definition through deployed product with Supabase schema discipline.
Seventeen years at the bedside informing every pivot and constraint.
The honest summary
Three ways to understand this work
For engineers
For product
For design
This project exists because discharge instructions written at a 12th-grade reading level do not help a patient who reads at a 5th-grade level, speaks Vietnamese or Tagalog at home, and is scared. That gap is preventable with a two-second API call. The research agrees.