Inspiration
Usable medicines are routinely discarded while community organizations struggle to stock basic supplies. A safe donation pathway needs more than a listing page: expiry enforcement, human review, verified recipients, and a confirmed handoff. MedBridge is a working demonstration of that full pathway, built entirely with synthetic records so no real medicine, patient data, or addresses are involved.
What it does
- Donor submits a donation in a 4-step flow: basics (medicine, form, quantity, expiry, batch), label photo, condition declaration, review. The backend rejects medicines with less than three months of remaining shelf life.
- On step 2 the donor photographs the strip label. OCR (Tesseract.js) runs entirely in the donor's browser and suggests candidate name, batch, and expiry. Nothing is accepted automatically: the donor confirms every field against the label and checks a box stating they did. The OCR processing never leaves the device; the label photo itself is uploaded with the submission.
- A demo administrator reviews each submission - declared details, label photo, and OCR candidates side by side - and approves or rejects with a note.
- A verified NGO browses approved listings with filters (distance, expiry window, category). Every card states that label details were confirmed by the donor and that OCR was suggestion-only.
- The NGO requests a quantity with a note. The donor sees the request, accepts or declines with a decision note, and schedules a simulated collection.
- Handoff is confirmed with a private 4-digit code shown only to the donor. A wrong code is rejected and the collection is not completed.
- Every step - submission, admin decision, request, acceptance, scheduling, collection - produces a notification and a timestamped lifecycle timeline visible to both sides.
- All records are synthetic and labeled as such throughout the UI. No physical medicine changes hands; collections are simulated database events.
How we built it
- Frontend: React 18 + Vite, deployed on Vercel.
- Backend: Java (Spring Boot 3) REST API with an isolated MySQL/TiDB review database.
- On-device OCR: Tesseract.js v7 (WebAssembly) running in the browser; candidate fields are suggestions with a manual-entry fallback.
- AI coding assistance was used during development and is disclosed here. The only machine-learning component in the product itself is the on-device label OCR described above.
Challenges we ran into
- Keeping OCR honest: label reading is genuinely useful but error-prone, so the flow is built around donor confirmation rather than auto-acceptance. The system trusts the donor's correction; it does not perform automated medication-safety verification.
- Coordinating a multi-actor lifecycle (donor, administrator, NGO) with clear state transitions and notification coverage for every event.
Accomplishments that we're proud of
- A complete, working loop - donation, review, request, acceptance, scheduling, code-confirmed collection - verified end to end on the live deployment, including the negative case (an incorrect handoff code is rejected).
- Privacy-conscious OCR: recognition runs on the donor's device, and the UI is explicit that suggestions are never auto-accepted.
What we learned
- Trust features (human review, confirmation checkboxes, private codes, visible timelines) matter as much as the core listing flow in a donation product.
- OCR earns its place only when the interface is honest about uncertainty: suggestions, not answers.
What's next for MedBridge
- Persistent sessions (a refresh currently signs the user out - known limitation).
- Faster label-photo delivery: previews now show an explicit loading state with one automatic retry, but first loads can still take several seconds on free-tier hosting.
- Stronger verification workflows for NGO registration and richer expiry alerting.
Known limitations (stated plainly)
- Demonstration with synthetic records only; not a medical service; no physical redistribution.
- Sessions are in-memory: a full page refresh signs the user out.
- Label photos show an explicit loading state and one automatic retry (the retry path is covered by unit tests); on the free hosting tier the first load after idle can still take several seconds. The underlying record is unaffected either way.
- The platform trusts donor-confirmed details; it is not an automated medication-safety verification system.
Built With
Judge access
The full authenticated walkthrough (donor, administrator, NGO) is shown in the demo video, and the public source repository includes the complete application. A one-page project description PDF is uploaded with this submission via the form's file upload.