Automatically organize who's bringing dinner when a neighbor needs help
# Mutual Aid Meal Train Coordinator
## The Problem
When a neighbor faces surgery, welcomes a new baby, or experiences loss, the community wants to rally—but coordination inevitably fails. Well-meaning helpers accidentally deliver three lasagnas on Tuesday while Thursday goes uncovered. Meanwhile, families with dietary restrictions receive food they can't eat, delivery times clash with nap schedules, and budget-conscious neighbors who'd love to help don't know that the local food pantry has fresh bread available. The result: helpers feel frustrated, recipients feel overwhelmed, and community goodwill dissipates into logistical chaos.
## Who Uses It
**The Train Organizer (Sarah)**: A neighbor, coworker, or congregation member who hears someone needs help and wants to coordinate the response. She's juggling her own life and needs something that runs itself once set up. She's comfortable with basic web tools but doesn't want to manage a spreadsheet or field 15 text messages asking "what day works?"
**The Helper (Marcus)**: Wants to contribute but needs clarity—what day, what time, any allergies? He'd cook if he has time, order delivery if he doesn't, or contribute pantry items if money's tight. He needs one click to claim a slot, not a group chat to wade through.
**The Recipient Family (The Nguyens)**: Exhausted, grateful, and slightly embarrassed to need help. They have a shellfish allergy and a toddler who naps 1-3pm. They don't want to seem demanding but also can't handle another doorbell during naptime or another dish they can't eat.
**The Local Restaurant Owner (Chef Amara)**: Runs a small spot and would love to offer a "meal train discount" to support neighbors—good karma and good business. Currently has no way to plug into community coordination.
## Core Features
1. **One-Link Train Creation**: Organizer enters recipient name, situation summary (optional—"recovering from surgery"), dietary restrictions, preferred delivery window, address, and how many weeks of coverage needed. System generates a shareable link—no accounts required for basic use.
2. **Visual Calendar Claiming**: Helpers see a simple calendar grid showing which days are covered (green), claimed by someone else (gray), and available (open). One click claims a day. Claimed slots show first name only ("Tuesday: Marcus is bringing dinner") for recipient visibility without over-sharing helper details.
3. **Dietary Restriction Guardrails**: When a helper claims a slot, they see the restrictions prominently ("Reminder: no shellfish, vegetarian-friendly") and check a box confirming they've read them. Recipients can add notes like "We love Thai food" or "Please no more pasta—we've had a lot!"
4. **Local Restaurant Quick-Order Suggestions**: For helpers who'd rather order in, the slot-claiming screen shows nearby restaurants pulled from WellSpr.ing's local business data, with a note: "These local spots deliver to the family's area." No checkout integration—just awareness and a "I'm ordering from Pho Saigon" note option.
5. **Free Pantry Item Visibility**: Below the restaurant list, display free items currently available nearby from WellSpr.ing's free items feed. A helper watching their budget might claim a slot with "I'll bring fresh bread from the Little Free Pantry on Oak Street plus homemade soup."
6. **Delivery Window Enforcement**: Calendar slots include the family's preferred window (e.g., "5-6pm, please not during nap 1-3pm"). When a helper claims, they confirm they can hit that window. Organizer gets a heads-up if someone claims but doesn't confirm timing.
7. **Gentle Reminder Nudges**: Helpers who claimed a slot get an email/SMS reminder 24 hours before ("You're bringing dinner to the Nguyen family tomorrow, 5-6pm. Dietary note: no shellfish"). No app required—just a reply link if they need to swap out.
## WellSpr.ing Integration Points
### MCP Tools (via POST to `https://wellspr.ing/mcp` using JSON-RPC 2.0)
**`get_businesses`**
- **Use**: When displaying "order-in" restaurant options for a meal slot, call `get_businesses` with the recipient's area to surface local restaurants, cafes, and prepared food vendors.
- **Implementation**: Cache results per train (refreshed daily) to avoid repeated calls. Display business name, type, and any available contact info.
**`get_free_items`**
- **Use**: Display currently available free pantry items, community fridge contents, or mutual aid offerings near the recipient's address. Helps budget-conscious helpers contribute meaningfully.
- **Implementation**: Show 3-5 nearest items with freshness priority. Update on each page load for helpers.
**`get_business_detail`**
- **Use**: When a helper clicks a restaurant to learn more, fetch details like hours, phone number, and any special notes (e.g., "offers community meal discounts").
- **Implementation**: Display in a modal or expanding panel. Include the reach_number if available for direct contact.
**`ask_ody`**
- **Use**: Power an optional "Ask Ody" helper on the organizer setup page. If someone's unsure how to phrase dietary restrictions or wants suggestions for their situation note, Ody can assist.
- **Implementation**: Simple chat input that sends context + query to ask_ody. Display response inline.
**`search_civic_services`**
- **Use**: On the "resources" tab of each train, optionally surface relevant civic services—meal delivery programs, social services for new parents, bereavement support. Helps families who might need more than neighbor dinners.
- **Implementation**: Query based on situation type if provided. Display as "You might also find these helpful."
### REST Endpoints
**`GET https://wellspr.ing/api/geo/portals?area_code=NNN`**
- **Use**: When setting up a train, suggest relevant local coordination portals or adjacent neighborhood networks. "Want to share this train with the Eastside portal too?"
- **Implementation**: Call with recipient's area code during setup. Display as optional cross-posting.
### Future Integration Opportunities
**Roadmap: not yet live** — Covenant Commerce payment rails would enable "chip in for delivery" pooling, letting multiple helpers split a restaurant order for one night. Not currently available; build the claiming system now and payment pooling can layer on later.
**Roadmap: not yet live** — Merchant self-registration would let Chef Amara officially list her "meal train discount" in WellSpr.ing, surfacing automatically for local trains. For now, she can use `submit_business` to ensure her restaurant appears in `get_businesses` results.
## Data Model
### `trains`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| share_code | string(8) | URL-friendly unique code |
| recipient_name | string | "The Nguyen Family" |
| situation_note | text | Optional, brief context |
| dietary_restrictions | text | Freeform, displayed prominently |
| delivery_window | string | "5-6pm weekdays" |
| delivery_address | text | Shown only to confirmed helpers |
| area_code | string | For WellSpr.ing geo queries |
| start_date | date | First day of coverage |
| end_date | date | Last day of coverage |
| organizer_email | string | For notifications |
| created_at | timestamp | |
### `slots`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| train_id | uuid | FK to trains |
| date | date | The day this slot covers |
|
◎
This is your project thread with Ody. Ask questions, share screenshots, talk through the build. Anyone with this link can join the conversation.
Paste screenshots or upload images/PDFs · Shift+Enter for new line