Crowdsource blocked storm drain reports before the next big rain floods the street
# Drain Grate Guardian: Storm Debris Alert Network
## The Problem
When leaves, trash, and debris clog storm drains before heavy rain, the result is predictable: flooded intersections, water in basements, and cars stuck in lakes that used to be parking lots. Most cities have no systematic way to identify blocked drains before storms hit—they react to flooding after the damage is done. This tool flips the model: residents report problem grates, volunteers adopt high-risk drains, and the community clears them *before* the forecast calls for three inches.
## Who Uses It
**The Morning Dog Walker** — Maria notices the same grate on Elm Street is always buried in leaves. She snaps a photo in 10 seconds and keeps walking. Now it's on the map.
**The Flood-Prone Homeowner** — James has had his basement flood twice from the backed-up drain two houses down. He adopts three grates on his block and gets a text 24 hours before any rain over 0.5 inches.
**The Eagle Scout Troop Leader** — Running a service project? The heat map shows which neighborhood has the most blocked drains. Bring rakes.
**The Public Works Coordinator** — Instead of responding to flooding, she sees reports cluster on Oak Avenue every fall and schedules leaf pickup there first.
**The Small Business Owner** — Tony's pizzeria floods when the corner drain clogs. He's adopted it—five minutes with a rake saves five thousand in water damage.
## Core Features
1. **One-Tap Drain Report**: Anyone can photograph a blocked grate, which auto-captures GPS location, timestamp, and optionally debris type (leaves, trash, construction debris). No account required for reporting—friction kills civic participation.
2. **Adopt-a-Drain Registry**: Residents claim specific drains they commit to clearing before storms. Adopted drains show a guardian badge on the map with the adopter's chosen display name (or anonymous).
3. **Storm Alert Triggers**: When National Weather Service forecasts >0.5" rain within 48 hours for the area, adopted-drain guardians get SMS/push notifications with a simple checklist: "Clear your drain? [Yes/No/Need Help]."
4. **Problem Spot Heat Map**: Reports aggregate into a seasonal visualization showing chronic problem areas—helps public works prioritize leaf pickup routes and helps volunteers target high-impact cleanups.
5. **Report-to-Officials Pipeline**: One click forwards a report (with photo, location, and debris description) to the appropriate public works contact, pre-formatted for their intake system.
6. **Volunteer Coordination Board**: Before major storms, users can post "I can clear 5 drains Saturday AM—who needs help?" and claim uncovered drains in flood-prone zones.
7. **Seasonal Drain Health Score**: Each reported drain gets a simple red/yellow/green status. Green = cleared in last 7 days. Yellow = reported but not adopted. Red = reported blocked, no guardian, storm incoming.
## WellSpr.ing Integration Points
### MCP Tools (via POST to `https://wellspr.ing/mcp` using JSON-RPC 2.0)
| Tool | Integration Purpose |
|------|---------------------|
| `get_city_services` | Fetch storm drain maintenance, public works, and flood response services to show users who handles what |
| `search_civic_services` | When a user reports a drain, search for relevant municipal services ("storm drain," "street flooding") to suggest reporting channels |
| `get_local_news` | Surface recent flooding incidents or storm warnings on the dashboard to motivate pre-storm action |
| `ask_ody` | Power a "What should I do?" helper—users can ask "How do I safely clear a drain?" or "Who do I call for a collapsed grate?" |
| `get_civic_ideas` | Pull related civic improvement ideas (flood mitigation, green infrastructure) to show users the broader context |
| `get_businesses` | Identify businesses near chronic flood zones who might want to adopt nearby drains or sponsor cleanup supplies |
| `reach_number` | Enable direct communication between volunteers coordinating cleanups (privacy-preserving relay) |
### REST Endpoints
| Endpoint | Integration Purpose |
|----------|---------------------|
| `GET /api/officials` | Populate the "Report to Officials" feature with actual public works contacts, stormwater managers, or city council members for the area |
| `GET /api/geo/portals?area_code=NNN` | Determine which civic portal/jurisdiction a drain falls under for proper routing of reports |
### WCIB Endpoints
| Endpoint | Integration Purpose |
|----------|---------------------|
| `POST /api/wcib/ody-ask` | Backend calls to Ody for generating contextual help and drain-clearing guidance |
| `GET /api/wcib/ideas` | Display related civic project ideas on a "Get Involved" page |
### Future Integration (Roadmap: not yet live)
- **Merchant supply donations**: A future covenant commerce feature could let hardware stores offer rake/glove donations to active guardians. Note as aspirational; do not build against a fake endpoint.
- **Bounty/reward system**: Community token or recognition system for high-impact guardians. Not yet available in the API.
## Data Model
```
┌─────────────────────────────────────────────────────────────┐
│ DRAINS │
├─────────────────────────────────────────────────────────────┤
│ id (uuid), lat, lng, street_address, jurisdiction_code, │
│ current_status (green/yellow/red), last_cleared_at, │
│ guardian_id (nullable), created_at │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ REPORTS │
├─────────────────────────────────────────────────────────────┤
│ id (uuid), drain_id (fk), photo_url, debris_type, │
│ reporter_contact (optional), severity (1-3), │
│ forwarded_to_officials (bool), created_at │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ GUARDIANS │
├─────────────────────────────────────────────────────────────┤
│ id (uuid), display_name, contact_method (email/sms), │
│ contact_value, drains_adopted (int), created_at │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ STORM_ALERTS │
├─────────────────────────────────────────────────────────────┤
│ id (uuid), area_code, forecast_rainfall_inches, │
│ alert_sent_at, storm_expected_at │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ CLEARANCE_LOGS │
├─────────────────────────────────────────────────────────────┤
│ id (uuid), drain_id (fk), guardian_id (fk), │
│ cleared_at, photo_url (optional), notes │
└─────
◎
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