Crowdsource where sidewalks disappear so walkers, wheelchair users, and stroller-pushers can plan safe routes.
# Sidewalk Gap Mapper: Track Broken Walking Paths
## The Problem
In most American neighborhoods, sidewalks are a patchwork—they exist in front of some houses, vanish at property lines, crumble into dirt paths, or get swallowed by overgrown vegetation. For anyone using a wheelchair, pushing a stroller, or walking with limited mobility, these gaps aren't just inconvenient—they're dangerous barriers that force people into the street. Cities rarely have complete data on sidewalk conditions because infrastructure surveys are expensive, so repairs happen reactively (after someone complains or gets hurt) rather than proactively where need is greatest.
## Who Uses It
**Maria, 34, mom of two** — Pushes a double stroller on daily walks. Knows exactly which blocks force her into traffic, but has no way to share that knowledge or request repairs.
**James, 67, wheelchair user** — Plans every trip around sidewalk availability. Would love a reliable map showing which routes actually work, built by people who've rolled them.
**Councilmember Patel** — Gets constituent complaints about sidewalks but has no systematic data to prioritize the capital improvement budget. Needs evidence to advocate for ADA compliance funding.
**Neighborhood Association volunteers** — Want to document conditions during walk audits but need a simple tool that doesn't require GIS expertise.
**City Public Works staff** — Receive repair requests through multiple channels with inconsistent location info. Would benefit from standardized, mappable reports.
## Core Features
1. **Drop a pin, describe the gap** — Anyone can tap a location on a map and report a sidewalk issue by choosing from categories (missing sidewalk, cracked/broken, obstructed by vegetation, blocked by pole/sign, flooded/drainage issue, too narrow for wheelchair) and optionally adding a photo and text description.
2. **Severity scoring** — Each report includes a simple 1-3 severity rating: (1) inconvenient but passable, (2) forces detour or careful navigation, (3) completely impassable or dangerous. This helps prioritize without requiring expertise.
3. **"I've seen this too" confirmation** — Other users can upvote existing reports to confirm the issue still exists, adding social proof and timestamp freshness. Reports with multiple confirmations surface higher in city views.
4. **Safe route suggestions** — Given two points, the app highlights known good sidewalk segments and warns about reported gaps along the route. Not full turn-by-turn navigation—just "heads up, there's a gap reported on Oak Street between 3rd and 4th."
5. **One-click report to city services** — For confirmed issues, generate a formatted repair request that users can submit to their city's 311 system or public works department. Pre-fills location, category, photo, and description.
6. **Neighborhood walkability dashboard** — Aggregate view showing gap density by area, trending issues, and improvement over time (resolved reports). Useful for advocacy and grant applications.
7. **Export for city councils** — Generate a PDF or CSV summary of all reports in an area, suitable for attaching to budget requests or presenting at public meetings.
## WellSpr.ing Integration Points
### MCP Tools (via POST to `https://wellspr.ing/mcp` using JSON-RPC 2.0)
| Tool | Usage |
|------|-------|
| `get_city_services` | Retrieve list of relevant city departments (Public Works, ADA compliance, Parks) for routing repair requests |
| `search_civic_services` | Find existing sidewalk repair programs, ADA transition plans, or walking safety initiatives the user can reference |
| `get_civic_ideas` | Pull related civic improvement ideas from the community—connect sidewalk gap data to broader walkability campaigns |
| `ask_ody` | Let users ask natural language questions like "What's the ADA requirement for sidewalk width?" or "How do I request a sidewalk repair in [city]?" |
| `get_federation` | Discover adjacent WellSpr.ing nodes to enable cross-neighborhood gap mapping |
| `get_adjacent_nodes` | When a gap report is near a boundary, check if neighboring nodes have related reports |
### REST Endpoints
| Endpoint | Usage |
|----------|-------|
| `GET /api/officials` | Display relevant elected officials (city council, mayor) for users who want to escalate persistent issues |
| `GET /api/geo/portals?area_code=NNN` | Get geographic boundaries to properly scope reports and dashboards to correct jurisdictions |
### WCIB Integration
| Endpoint | Usage |
|----------|-------|
| `POST /api/wcib/ody-ask` | Power the "ask about sidewalk policy" feature in the app |
| `GET /api/wcib/ideas` | Show users other civic tech projects related to walkability and accessibility |
### Future Capabilities (Roadmap: not yet live)
- **Automated 311 submission**: Direct API integration with municipal 311 systems would allow one-click official reports. For now, the app generates formatted text users copy into their city's existing channels.
- **Official resolution tracking**: Two-way sync with city work order systems to automatically mark issues as "repair scheduled" or "completed." Currently, users manually update status.
## Data Model
### `gap_reports`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| lat, lng | decimal | Location coordinates |
| category | enum | missing, cracked, obstructed, blocked, flooded, narrow |
| severity | int | 1-3 scale |
| description | text | Optional user narrative |
| photo_url | text | Optional image |
| reporter_id | uuid | FK to users (nullable for anonymous) |
| status | enum | reported, confirmed, submitted_to_city, resolved |
| created_at | timestamp | |
| resolved_at | timestamp | Nullable |
### `confirmations`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| report_id | uuid | FK to gap_reports |
| user_id | uuid | Who confirmed |
| confirmed_at | timestamp | Freshness tracking |
### `users`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| display_name | text | Public identifier |
| email | text | For notifications, optional |
| neighborhood | text | Self-reported area |
| created_at | timestamp | |
### `city_submissions`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| report_id | uuid | FK to gap_reports |
| submitted_at | timestamp | When user sent to city |
| method | enum | 311_app, email, phone, web_form |
| reference_number | text | City's tracking ID if provided |
## Vibe Coding Prompt to Get Started
Paste this into Claude or Replit Agent:
---
```
Build a "Sidewalk Gap Mapper" web app using React + Express on Replit with a SQLite database.
**First milestone: Working map with report submission (4 hours)**
Frontend (React):
- Full-screen Leaflet or Mapbox GL map centered on user's location (ask for geolocation permission)
- Floating "Report a Gap" button that opens a slide-up panel
- Report panel has: category dropdown (missing sidewalk, cracked/broken, obstructed, blocked, flooded, too narrow), severity selector (1-2-3 with emoji indicators), optional description textarea, optional photo upload, submit button
- Clicking submit drops a pin on the map at current center crosshairs
- Show existing reports as colored markers (green=resolved, yellow=confirmed,
◎
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