Two grocery stores closed in high-need ZIPs. The city's food bank lost 3M lbs from federal cuts. 1 in 7 Kansas Citians are food-insecure — a 10-year high. Critical neighborhoods have 38–51% no-car households, yet surplus spoils before families know it exists.
| Feature | Abundance KC | Traditional Pantries | Delivery Apps | Static Food Apps |
|---|---|---|---|---|
| API-native KC data integration | ✔ All 8 challenge APIs | ✗ Manual entry | ✗ Not applicable | ✗ Static directories |
| Zero vehicle / logistics cost | ✔ $0 marginal delivery | ✗ Own vehicles | ✗ High fuel cost | ✗ N/A |
| Real-time surplus alerts | ✔ 48-hr perishables engine | ✗ None | ✗ None | ✗ None |
| No-car family access | ✔ Transit-stop routing | Partial | ✗ Requires phone + fee | Partial |
| Multilingual outreach | ✔ ES+ support (66101: 62.8% Hispanic) | Limited | Limited | Limited |
| Civic-first revenue model | ✔ Contract + grants, no user fees | Donation-dependent | ✗ User fees | Grant-dependent |
| Year | Revenue Sources | Operating Expenses | Net Contribution | Key Milestones |
|---|---|---|---|---|
| Year 1 — 2026 60-Day Pilot |
$500K city contract | $150K | +$350K | 50K lbs rescued · 5K families · 40% waste reduction |
| Year 2 — 2027 Scale |
$1.5M Renewal $1.2M + $300K grants/sponsors |
$400K | +$1.1M | 500K lbs/year · Multi-ZIP expansion |
| Year 3 — 2028 Full Growth |
$2.8M Renewal + $800K sponsors + SaaS to 2 cities |
$650K | +$2.15M | 1M+ lbs/year · Cash-flow positive · Multi-city |
cold_storage = none before scoring
| Scenario | Path |
|---|---|
| Normal flow | Alert detected → Batch scored → Site confirmed → Dispatch link shared → Pantry confirms → Analytics updated |
| Perishable — time running out | Same as above, but escalation countdown visible; if unallocated at threshold → auto popup fires in highest-need ZIP |
| Operator forces escalation | Clicks "Escalate Now" → highest-need ZIP popup created immediately, bypasses threshold check |
| Deadline missed entirely | Next poll marks batch spoiled · popup still fires if not already created |
| Cold storage required | Hard filter removes any site with cold_storage = none before scoring even begins |
| AI explanation requested | Optional at review step · POST /api/ai/explain · Claude generates plain-English rationale for why this ZIP/site scored highest |