Inspiration
Every Indian prescription says it the same way: 1–0–1. Morning, afternoon, night. What happens after the clinic is the problem:
- Nearly half of Indians over 60 (49%) take five or more medicines at once (meta-analysis of 27 Indian studies, Frontiers in Pharmacology, 2021).
- In a 2026 Gujarat study of 380 elders, 41% had low adherence, and the most common reason was simply forgetting (Cureus, 2026).
- About a third live alone or only with a spouse (LASI 2017–18), often while their children work in other cities. The daily check-in becomes a phone call: "Did you take your tablets?"
We wanted the parent to stay independent and in control, and the child to stop worrying, without turning care into surveillance. Sources: Bhagavathula et al., Frontiers in Pharmacology 2021; Jyotsana et al., Cureus 2026; Sarkar et al., SSM Population Health 2023 (LASI); Patel et al., BMC Geriatrics 2023. Full list: https://github.com/chxmq/saathi/blob/main/RESEARCH.md
What it does
Saathi is two phones sharing one medicine schedule, with Amma in control.
- Amma's phone answers one question: what do I take now? The next dose fills the screen, each tablet is drawn the way it looks in the strip, and one 72px button confirms it. Everything is in English, Hindi or Kannada, can be read aloud, and scales to 150% text. Reminders arrive when a dose is due.
- Scan a prescription on the phone itself. Text recognition runs on the device and understands Indian shorthand (
1-0-1,½-0-½, OD/BD/TDS/HS/SOS, before/after food, "x 30 days"). Every medicine is shown for confirmation before saving. The photo never leaves the phone. - Amma decides what's shared. Before pairing, she sees in her own language what her family will see. Medicine names are private by default, and letting family manage medicines is a separate opt-in. She can pause, stop sharing, or delete everything from her phone and the server in one tap.
- Pair by QR code. Rahul scans it and sees a one-line status for today, a week grid in the prescription's own
1–0–1shorthand, refills as "days left", and an alert only after a dose is 30 minutes late, with a button that sends a reminder to Amma's phone. - Share with the doctor: a plain-text 7-day adherence summary, ready for WhatsApp.
How we built it
A static site, live on GitHub Pages and on Deployxa, in vanilla JavaScript modules with no build step and no framework, on free tiers only.
- End-to-end encryption: the QR code carries a 256-bit AES-GCM key in the URL fragment, which browsers never send to a server. Firebase Firestore stores only
{ciphertext, iv, timestamp}. We verified on the live server that it holds no readable medicine names, that strangers can't list households (HTTP 403), and that "Delete everything" removes the data (HTTP 404). - On-device OCR: Tesseract compiled to WebAssembly, served from our own site, plus a custom parser for Indian prescription notation (unit-tested on 16 cases).
- Installable app (PWA): a service worker for offline use and reminders. Fonts, the OCR engine and the QR library are self-hosted: no trackers, no analytics, no accounts.
- Deployed on Deployxa: Deployxa builds the site straight from the GitHub repository (
chxmq/saathi, branchmain) and ships every push. We ran the full two-phone journey against https://saathi.deployxa.online (scan on-device, pair, take a dose, delete everything) while recording every network request: the only hosts contacted were the site itself, the Firebase SDK and the relay, and no medicine name, person's name or key appeared in any of them. - Type: Atkinson Hyperlegible (designed by the Braille Institute for low-vision readers) and Anek (by Ek Type, an Indian foundry) across Latin, Devanagari and Kannada.
Accessibility
WCAG AA contrast throughout, touch targets of 44px or larger (72px for the main action), full keyboard support with visible focus, a focus-trapped dialog with Escape to close, screen-reader labels on every dot in the week grid, lang switching for correct pronunciation, live regions for confirmations, and support for reduced-motion settings.
Privacy (designed around India's DPDP Act principles)
Consent from the person being tracked, data minimisation (names hidden unless allowed, 8 days shared), purpose limitation, erasure on demand, and a server that can't read what it stores.
Challenges
- Two users with opposite needs. The elder needs no choices; the caregiver needs a whole week at a glance without being alarmed by it. The answer was one decision per screen for Amma, and "reassure first, alert only when it matters" for Rahul.
- Reading prescriptions without the cloud. Running OCR on the phone meant handling misreads (
l-0-lfor1-0-1,Ofor0), brand names with bare numbers ("Telma 40"), and "only when needed" medicines that must never be scheduled. Everything goes to a confirmation screen, because a person must check medicine data. - Real-time sync with a server that can't read. Amma's phone is the source of truth and publishes a sealed snapshot of only what she agreed to share; the family's phone sends sealed requests back.
What we learned
Privacy is a UX feature: the consent screen, in the elder's own language, ended up being the most important screen in the app.
What's next
Reminders over SMS for feature phones (without exposing the schedule), Hindi and Kannada handwriting in the scanner, and pharmacy reorder integration.
Try it
- Guided demo (both phones on one screen, with a clock to scrub through the day): https://chxmq.github.io/saathi/
- Real app on two phones: https://chxmq.github.io/saathi/app.html (tap "No prescription handy? Try a sample" to test the scanner)
- The same app, deployed on Deployxa: https://saathi.deployxa.online (real app at https://saathi.deployxa.online/app.html)
Log in or sign up for Devpost to join the conversation.