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.

Built With

Share this project:

Updates

Submission history