Inspiration
I hate predictable problems solved with chaotic processes. Thalassemia transfusions run on a clock; donor coordination doesn’t. My dad is a long‑time blood donor, and watching him show up even when he’s buried in work and life taught me what actually drives repeat donations: a clear reason to act now, a nearby slot with low friction, a personal ask, a sense of community recognition, and a fast feedback loop that your donation mattered. I studied his patterns. What gets him out the door is not a blast message. It is a timely local purpose anchored nudge that respects his schedule and closes the impact loop.
I build systems that compound. So I asked a simple question. What if we grow a local donor base like a community product? DonorPulse AI came from that question and from my dad. We built around repeat donor triggers. Donor pods. Right time nudges. A why you and why now rationale. Impact receipts that turn good intention into a reliable habit.
What it does
DonorPulse AI is a two‑engine system:
GROW: Find and convert high‑yield donor communities (campus/corporate/temple/neighborhood), reduce first‑time deferrals, and form 3–5 person donor pods that are catered towards a child.
ACTIVATE: Predict donor eligibility windows, forecast patient demand, surface nearby stock, and one‑click mobilize donors via WhatsApp in their language, aligned with Blood Bridge and e‑RaktKosh. Borrowing from social‑matching apps, we score donors by proximity, timing, reliability, and social affinity, then use a bandit to optimize template × send‑time for higher accept rates.
How we would build it
Stack
Frontend · Next.js (React) | APIs · Azure Functions
Data · PostgreSQL + PostGIS + pgvector | Redis (eligibility cache)
AI / ML · Azure ML (TFT, Prophet, LightGBM, GCN) | Azure OpenAI GPT-4o
Voice · Azure AI Speech | Messaging · WhatsApp Cloud API
Integrations · e-RaktKosh adapter (read-only) · Blood Bridge connector
Architecture & Data Model
Core tables: users, donor_profile, patient_profile, donor_pod,
donor_pod_members, eligibility_windows, invitations, responses,
banks, stock_snapshots, contributions.
Graph signals: adjacency edges for same company / college / area
(persisted embeddings via pgvector).
Geo: PostGIS KNN for who’s nearby & reachable.
Layer 1 — Predictive Foundation (sense the environment)
- Patient demand forecasting: Temporal Fusion Transformer (TFT)
→ 72-h need window. - Donor eligibility & macro supply: LightGBM (per-donor) + Prophet
(area × blood-group trend) → guides drive planning. - Risk models: (P(\text{deferral})) & (P(\text{no-show}))
→ micro-coaching + ethical over-invites.
Layer 2 — Decision Engine (optimize every action)
- Graph-based matching & ranking: GCN + LightGBM with features
geo distance, time overlap, reliability, deferral risk, affinity, stock fit.
Baseline score:
[ s = w_1\mathrm{prox} + w_2\mathrm{elig} + w_3\mathrm{rel} + w_4\mathrm{aff} + w_5\mathrm{stock} - w_6\mathrm{fatigue} ] - Outreach optimization: LinUCB bandit on (template × channel × send-time).
- Constrained drive planner: ILP maximizes yield under capacity, fatigue, fairness caps.
Layer 3 — Augmentation Interface (human + AI)
- Personalization & comms: Azure OpenAI GPT-4o (function calling)
→ multilingual WhatsApp/SMS/email with clear why you, why now. - Ops agents (draft-only, human-approved):
Drive Planner | Outreach Ops (second-wave strategy). - Voice & integrity: Azure AI Speech (ASR/TTS) + anomaly detector.
Matching Workflow
- Geo + compatibility filter (radius around patient/preferred bank).
- Eligibility window join (next 14 days).
- Feature build → GCN + LightGBM rank → fairness/cool-down re-rank.
- Bandit pick best (template × time) to hit invite target.
- LLM generate message (structured JSON).
- Dispatch via WhatsApp; stream status to coordinator UI.
- Learn from accept/attend/no-show → update models & bandit rewards.
Function-Calling Schema (example)
{
"intent": "generate_outreach_message",
"inputs": {
"donor_locale": "hi-IN",
"reasons": [
"eligible Friday",
"2.1 km from XYZ Bank",
"same college alumni"
],
"patient_context": "child with scheduled transfusion",
"safety": [
"no medical advice",
"include opt-out"
]
},
"output_schema": {
"title": "string",
"body_whatsapp": "string",
"why_you": "string"
}
}
## Accomplishments that we're proud of
Reframing the problem: From “blast more messages” to a Grow + Activate system that compounds supply and reduces scramble.
Social‑matching applied to health: Pods, affinity edges, and “why you” cards—borrowed from dating/social apps, repurposed to save lives.
Metrics‑first plan: Success defined in operations: on‑time transfusions, donor retention, and invites per on‑time transfusion.
## What we learned
Impact over features. A smaller well timed donor base beats a large uncoordinated one.
Do the unscalable first. WhatsApp first flows reduce adoption friction. Polish apps later.
Language is leverage. Localized and empathetic copy outperforms generic scripts. Let the bandit learn it.
Design for constraints. Privacy rules eligibility intervals and rate limits shape the product. Lean into them.
## What's next for DonorPulse AI
Pilot
Weeks zero to six. One city. Five to ten patients. Three to five pods each. Track three metrics. On time transfusion rate increases. Ninety day donor retention increases. Invites per on time transfusion decreases.
Productize
Pre approved WhatsApp templates. Hindi and one regional language pack. Coordinator dashboard. Minimal consent vault.
Scale
Add rare and extended match registry flags. Expand languages. Deepen integrations with Blood Bridge and e RaktKosh.
North Star
A predictable privacy safe air traffic system for blood. We grow donors. We mobilize precisely. We ship on time transfusions.
Log in or sign up for Devpost to join the conversation.