DEV Community

Cover image for GiveRoute — Stop Dumping Donations, Route What’s Actually Needed
Sreejit Pradhan
Sreejit Pradhan Subscriber

Posted on AI-assisted

GiveRoute — Stop Dumping Donations, Route What’s Actually Needed

DEV Weekend Challenge: Generosity Edition Submission 💜

This is a submission for Weekend Challenge: Generosity Edition

What I Built

Anyone who has volunteered at a shelter knows the "second disaster": rooms filled with random, unneeded items while the community's most urgent needs (like baby formula or specific medications) go completely unmet.

I built GiveRoute to flip donation logistics from donor-centric to need-first:

  • Verified Wishlist Aggregator: Tracks real community needs with automatic freshness decay (stale requests lose priority).
  • 8-Factor Matcher: A deterministic scoring engine that factors in category, quantity limits (penalizing surpluses), audience age, radius, and condition.
  • 8-Step Handoff Protocol: Guides donors and staff from initial outreach all the way to scheduled delivery.
  • Public Impact Ledger: Issues verifiable receipts (GR-2026-XXXX) instead of meaningless vanity badges.

Demo

Try typing or pasting a messy offer like "I have 8 boxes of baby wipes and warm toddler blankets in Seattle" into the intake box to see how the engine normalizes it and ranks real local matches.


Code

Stack:

  • React 19, TypeScript & Tailwind CSS
  • Express backend (with Vercel serverless adapter in api/index.ts)
  • Supabase PostgreSQL with Row-Level Security (RLS) & offline in-memory fallback
  • 41 automated tests (npm test) covering matching math, edge cases, and security boundaries

How I Built It

  1. Deterministic Matching Over LLM Guesswork: I didn't want a fuzzy AI black box deciding logistics. The scoring engine (matcher.ts) allocates 100 points across 8 concrete variables, explicitly penalizing volume surpluses so shelters don't get swamped.
  2. Freshness & Evidence Trails: Needs cycle through 5 audit stages (SOURCE FOUND to ORG CONFIRMED). Requests unverified after 30 days are automatically marked Stale to prevent outdated runs.
  3. Safe AI Ingestion: Google Gemini runs server-side behind strict SSRF guards to turn chaotic user descriptions and agency wishlists into typed civic schemas.
  4. Vercel & Supabase Ready: Built on Supabase for persistent tables with RLS, backed by an Express app modularized for both Vercel Serverless and Docker environments.

Prize Categories

Best Use of Google AI

I integrated Google Gemini on the backend to handle the messy human side of civic intake:

  • Wishlist & Offer Normalization: Extracts structured counts, item specifications, age brackets, and delivery constraints from messy text and emails.
  • Outreach Drafter: Generates concise, professional coordination messages with donor specs and availability, sparing busy shelter workers from endless email tag.

Top comments (0)