Skip to main content

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.

Product design, conversation design, full-stack build2025 — Present
HEALTH-EQUITYPATIENT-FACINGFULL-STACKMULTILINGUAL
Status: Live

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

0

languages at launch

HealthLiteracy product spec (Arabic, French, Hindi, Japanese, Korean, Mandarin, Portuguese, Russian, Spanish, Tagalog, Vietnamese, English)

0

reading levels (Simple, Clear, Complete)

Patient-facing labels; internally mapped to depth tiers, not shown as grades in UI

0%

of Americans lack proficient health literacy

U.S. Department of Health and Human Services, Healthy People 2030

Live demo: HealthLiteracy AI
Open in new tab

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.

Claude API (claude-sonnet-4-20250514, two-pass with user-initiated verify)Next.js 15 (App Router)Supabase (90-day session expiry, versioned migrations)TypeScriptTailwind CSS v4Zod (request validation)Web Speech APIVercel

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

TECHNICAL UNDERSTANDING

For engineers

Claude Sonnet (claude-sonnet-4-20250514) runs both the translate and verify calls. No smaller model default or model router. Zod validates incoming API request bodies. Claude JSON responses use manual validation with retry logic on transport failures, not parse errors. Rate limiting is applied to translate, verify, share (POST and GET), and parse routes. Supabase sessions use 90-day expiry with versioned SQL migrations. Expired links return 410. Voice input uses the Web Speech API with browser support checks and inline fallback messaging. PDF and .txt only, no OCR.
PRODUCT UNDERSTANDING

For product

Every design constraint came from a clinical observation. No login because discharged patients will not create an account. Urgent items first because safety-critical information must not be buried. Twelve languages at launch because deferring is a choice about whose needs wait. Verification user-initiated rather than automatic because doubling latency on a free tool prioritizes pipeline over patient experience. The four pivot stories each represent a real product decision with a real tradeoff. The honest gaps are PDF scanned document support and a production model router for cost optimization at scale.
DESIGN UNDERSTANDING

For design

The interface is built for a specific emotional state: worried, possibly unfamiliar with the language on the page, needing information immediately. Reading level labels are Simple, Clear, and Complete because grade framing adds shame to a moment that already carries enough. The side-by-side view was built for a secondary use case: a caregiver verifying accuracy before presenting to a patient. Accessibility patterns including skip link, keyboard navigation, focus-to-results, and prefers-reduced-motion are launch requirements, not roadmap items.
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.
Next Project