Inspiration
Medical histories are often spread across paper prescriptions, photos, PDFs, messages, hospitals and personal memory. Even a doctor who knows what he prescribed may not know what a patient actually took. That difference is important. A patient might miss a dose, take half a pill, stop therapy early, start therapy late, use an OTC product, or not remember when they took it. To adapt the original prescription to suit these events would be to destroy an important part of the medical history.
I built Prescriptionly around one principle: The prescription is history. What the patient actually took is reality. Neither should overwrite the other.
What it does
Prescriptionly is an AI-powered, patient-controlled medication and medical record wallet.
Users upload an image or PDF of a prescription and multimodal AI extracts prescriber, drug names, strengths, dosage forms, instructions, frequencies and treatment durations. Extraction is never automatically considered confirmed medical information. It is an untrusted draft, with field-level confidence indicators and warnings about potentially dangerous ambiguities, such as 0.5 mg being read as 5 mg.
The extracted information is reviewed, corrected and confirmed by the patient. Prescriptionly stores the reviewed structured record along with the original document, creating a traceable link between the source evidence and the information inserted into the wallet.
Once confirmed, use can:
- Prescription management for multiple medicines prescriptions.
- Follow active, paused, completed or discontinued treatments.
- Log medication events as taken, administered, applied, used, skipped, or partially taken.
- Log over-the-counter medications, supplements, injections, and other prescription-free medications.
- Separate anticipated doses from patient-reported events.
- Log symptoms with severity, time stamps, rough timing and notes
- Speak with a grounded AI about the picked documents and the noted symptoms. - Speak with a grounded AI about the picked documents and the noted symptoms.
- See a chronological medical timeline with clear provenance labels.
- Generate health summaries for patients and clinicians.
- Export their wallet as a human readable PDF or structured JSON file.
- Temporary, scoped, and revocable share links.
- Create a purposely narrow emergency medical card.
The AI Assistant differentiates between information extracted from a document and general explanations and information not present. A lack of information in a document is not evidence that a patient does not have a condition. Symptom timing can be talked about but Prescriptionly does not automatically say a medication caused a symptom.
How we built it
Prescriptionly is realized as a domain-oriented modular monolith in a TypeScript monorepo.
The front end is built with React, Vite, TypeScript and Tailwind CSS. It is organized by product features including documents, prescriptions, treatments, medication events, symptoms, timelines, summaries, sharing, and emergency access.
The backend is built using Node.js, Express, TypeScript, Prisma, and MySQL. It offers authenticated REST APIs, patient level authorization, document processing, medication tracking, exports, sharing, audit history and background jobs.
Provider abstraction allows decoupling of AI and document processing. Prescriptionly can use Google Gemini or OpenAI to extract multimodal prescriptions and have document-grounded conversations without tying the core wallet to a single provider. If AI services are not available, you can still enter prescriptions and medications manually.
Some examples of security-sensitive features include opaque server-managed sessions, CSRF protection, private document storage, hashed access tokens, scoped sharing grants, expiration and revocation controls, audit events, and separation between normal wallet access and the limited emergency card.
Challenges we ran into
Making AI useful, without making it medical fact
Handwriting of prescriptions, abbreviations, mixed languages, unclear units and decimal points make extraction difficult. The most important design decision was to avoid the workflow becoming:
Upload -> AI -> medical record received
Prescriptionly, in contrast, is used:
Upload -> AI draft -> confidence and warnings -> patient review -> confirmed record Preserving history, but allowing edits
We should not be silently rewriting original evidence, but users still need to be able to correct errors. I designed the data model to store source documents, AI drafts, user-verified facts, medication events, corrections and audit history in separate identifiable layers.
Real drug instructions represented Some medications don’t have instructions that can be simplified to “one pill three times a day.” This could be dose modifications, PRN drugs, liquids, injections, inhalers, approximate timing, or holidays. Prescriptionly thus maintains the original instruction text with its structured interpretation.
Decoupling of association and causation Timing may be relevant if a symptom begins after a medication is started, but this does not establish that the medication caused the symptom. Prescriptionally captures temporal associations, without falling into unsupported causal conclusions.
Keep valuable information secret without exposing the entire wallet Temporary sharing and emergency access have different requirements. Sharing has to be easy, but medical information has to stay private. I responded with category-scoped, expiring and revocable links, and a separate emergency dataset with only the information intentionally selected by the patient.
Accomplishments that we're proud of
The hardest part of a health application is not the storing of data or calling an AI model. "Its about keeping trust.
A reliable system must distinguish clearly between:
- What the original document said.
- What AI thought of it.
- What the patient said. What the doctor ordered. What the treatment regimen had planned for. What the patient said actually happened.
- What the system inferred or computed.
And I also learned that uncertainty should be out in the open. Your application should ask for verification if it cannot confidently determine dosage, unit, date or instruction, rather than inventing precision.
What we learned
What I’m most proud of is that Prescriptionly didn’t become yet another generic reminder app or open-ended medical chatbot.
The project links original prescription evidence, responsible AI extraction, patient verification, treatment history, actual medication use, symptoms, summaries, sharing and export in one coherent patient-controlled system.
What's next for Prescriptionly
The next steps are:
- Expansion of de-identified AI evaluation dataset
- Structured usability reviews with patients and healthcare professionals
- Improvements in medication terminology normalization
- Future FHIR adapter validation against specific healthcare profiles 5. Mobile experience to allow for faster medication logging and offline access
Prescriptionly’s long term goal is simple help people take a reliable medication history with them wherever they go.
Built With
- argon2
- artificial-intelligence
- docker
- express.js
- google-gemini-api
- lucide-react
- multer
- mysql
- node.js
- ocr
- openai-api
- pdfkit
- prisma
- react
- rest-api
- tailwind-css
- typescript
- vite
- zod


Log in or sign up for Devpost to join the conversation.