Inspiration
This came out of the SDG 3 hackathon brief, but the problem itself is real — clinics and pharmacies throw out usable medication and supplies all the time while other facilities nearby are short on the exact same stuff. Nobody's got a way to know who has what. I wanted to build something that actually closes that gap instead of just being another donation form nobody checks.
What it does
RemiChain lets a facility list surplus supplies (meds, PPE, equipment, whatever) and lets another facility post what it needs. Behind the scenes there's a matching engine that scores every possible donation-request pair based on how urgent the need is, how close the item is to expiring, how far apart the two facilities are, and how much of the request the donation actually covers. When someone posts a request, it tries to find the best match right away instead of making them wait.
How I built it
Flask backend, SQLite for storage, no frontend framework — just server-rendered templates because I didn't need anything fancier for this. The matching logic is the actual core of the project: it's a weighted scoring function, not just "same item = match." Expired stock gets auto-disqualified, near-expiry stuff gets bumped up in priority, distance is calculated with haversine so it's not just a guess. I seeded a few demo facilities around Pakistan so the app isn't empty the second you open it.
Challenges I ran into
Honestly the biggest headache wasn't the app logic, it was GitHub auth. Fine-grained personal access tokens kept getting killed almost instantly — created one, it worked for exactly one API call, then died. Took a few rounds of generating new tokens to figure out it wasn't a fluke, it was permission scoping plus tokens getting flagged the moment they touched anything. Ended up doing a chunk of the pushing manually instead of automating it end to end, which wasn't the plan but got the job done.
Accomplishments I'm proud of
The matching algorithm actually works and I wrote real tests for it — not just "does it run," but specific cases like expired stock never matching, higher urgency scoring higher, results coming back sorted correctly. It's a small thing but I didn't want to submit something where the "smart" part was just a search filter pretending to be an algorithm.
What I learned
A lot of the GitHub API's permission model for fine-grained tokens — Contents vs Administration are separate, and neither one implies the other, which cost me some time. Also relearned that resource-matching problems look simple until you actually sit down and decide what "best match" means numerically.
What's next for RemiChain
Real facility verification instead of a demo seed list, SMS/WhatsApp alerts for facilities that don't have reliable internet, multi-language support since a lot of the people who'd actually use this don't work in English, and a cold-chain flag for supplies that need refrigeration since right now the app doesn't distinguish that.
Log in or sign up for Devpost to join the conversation.