Crowdsource the locations and conditions of curb cuts so wheelchair users and parents with strollers can plan accessible routes.
# Curb Cut Mapper: Accessibility Route Builder
## The Problem
Wheelchair users, parents with strollers, and anyone using mobility devices face a daily gamble: will the sidewalk route they choose actually be passable? Cities rarely maintain comprehensive curb cut data, and even when ramps exist, they may be crumbling, too steep, or blocked by utility poles and parked cars. A single missing or broken curb cut can force a half-mile detour—or leave someone stranded at an intersection. This invisible infrastructure gap affects millions but remains undocumented because the people most impacted are often the least able to report it through traditional channels.
## Who Uses It
**Maria, 34, wheelchair user and downtown office worker** — Plans her commute and lunch routes around known-good curb cuts, currently relies on mental notes and word-of-mouth. Wants to contribute her hard-won knowledge so others don't have to learn the hard way.
**David, 42, father of twins** — Pushes a double stroller through his neighborhood daily. Knows every bumpy curb cut and missing ramp on his usual routes but has no way to share this with other parents or influence city repair priorities.
**Sandra, 67, city accessibility coordinator** — Needs community-reported data to prioritize ADA compliance work. Currently relies on sporadic 311 complaints that don't show patterns or severity.
**Terrence, 28, delivery driver using a hand truck** — Discovers how accessibility infrastructure (or lack thereof) affects everyone hauling loads through the city.
## Core Features
1. **Drop a Pin, Report a Curb Cut** — Anyone can tap a map location to report a curb cut. Required: condition rating (Good / Fair / Poor / Missing / Blocked). Optional: photo, specific issue (steep grade, lip edge, crumbling concrete, drainage problems).
2. **Photo Evidence with Automatic Geocoding** — Users snap a photo directly in-app. GPS coordinates auto-populate. Photos are stored with timestamps so the community can track whether issues get fixed.
3. **Condition Verification and Freshness Scoring** — When someone uses a reported curb cut, they can confirm "still accurate" or update the condition. Reports older than 6 months without verification display a "needs check" badge. This keeps data fresh without requiring constant re-surveying.
4. **Accessible Route Planner** — Enter start and destination addresses. The planner calculates a route prioritizing streets with verified good-condition curb cuts, showing alternatives that avoid known problem intersections. Displays estimated additional distance for the accessible route vs. shortest path.
5. **Heat Map for City Officials** — Aggregated view showing density of poor/missing curb cut reports by neighborhood. Exportable as CSV for 311 integration or city council presentations. Sandra can finally show the Public Works director *where* the problems cluster.
6. **Local Business Accessibility Notes** — When planning a route to a destination, show relevant info about that business's accessibility (entrance ramps, automatic doors) pulled from existing local data. Lets users plan complete trips, not just sidewalk segments.
7. **Community Priority Voting** — Users upvote problem locations that most need fixing. Creates a community-ranked repair priority list separate from raw report counts—because one dangerous curb cut matters more than five inconvenient ones.
## WellSpr.ing Integration Points
**MCP Tools (connect via POST to `https://wellspr.ing/mcp` using JSON-RPC 2.0):**
- `get_businesses` — When a user plans a route to a specific destination, query nearby businesses to surface any accessibility notes in business descriptions and help users identify accessible entrances or pickup points.
- `get_city_services` — Pull existing city accessibility services, ADA compliance contacts, and relevant departments. Display these as resources when users report serious accessibility gaps (e.g., "Report this to [City ADA Coordinator]").
- `search_civic_services` — When users report blocked curb cuts (e.g., by permanent utility infrastructure), help them find relevant city departments or services to file formal complaints.
- `get_civic_ideas` — Surface related accessibility improvement ideas from the community. A user frustrated by a missing curb cut might discover neighbors have already proposed solutions.
- `submit_business` — If a local business wants to formally register their accessibility features (ramp entrance, accessible restroom, etc.), enable submission to the local business registry.
- `ask_ody` — Power a help assistant that can answer questions like "What are ADA requirements for curb cuts?" or "How do I file an accessibility complaint with my city?" Provide contextual civic guidance without the app needing to hard-code this knowledge.
- `reach_number` — When users want to escalate urgent accessibility hazards (someone trapped by a blocked ramp, dangerous condition creating immediate risk), provide direct contact pathways to relevant officials.
**REST Endpoints:**
- `GET https://wellspr.ing/api/officials` — Display relevant local officials (city council, public works leadership) on the heat map view. Users can see who represents high-problem-density areas and has authority over infrastructure repair budgets.
- `GET https://wellspr.ing/api/geo/portals?area_code=NNN` — Identify geographic boundaries to properly scope the map and ensure reports connect to the right municipal jurisdictions. Essential for cities with complex ward/district structures.
**Future: Covenant Commerce (not yet live):**
- Merchant accessibility certification badges — Businesses could earn and display verified accessibility status
- Micro-grants for community curb cut repair — Crowdfunded fixes for the highest-priority gaps
- Contractor matching for accessibility improvements — Connect property owners with ADA-compliant contractors
## Data Model
### curb_cuts
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| lat, lng | decimal | GPS coordinates |
| condition | enum | good, fair, poor, missing, blocked |
| issues | array[string] | steep, crumbling, lip, drainage, obstructed |
| photo_url | string | Optional image |
| reporter_id | uuid | Anonymous or authenticated |
| created_at | timestamp | |
| last_verified | timestamp | Most recent confirmation |
| verification_count | integer | Times confirmed accurate |
| priority_votes | integer | Community upvotes |
### verifications
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| curb_cut_id | uuid | Foreign key |
| verifier_id | uuid | |
| still_accurate | boolean | Confirm or update needed |
| new_condition | enum | Null if still_accurate=true |
| verified_at | timestamp | |
### routes
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| user_id | uuid | |
| start_lat, start_lng | decimal | |
| end_lat, end_lng | decimal | |
| calculated_path | jsonb | Array of waypoints |
| avoided_curb_cuts | array[uuid] | Problem spots routed around |
| created_at | timestamp | |
### route_feedback
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| route_id | uuid | Foreign key |
| success | boolean | Did the route work? |
| issues_encountered | text | Freeform feedback |
| created_at | timestamp | |
## Vibe Coding Prompt to Get Started
Paste this into Claude or Replit Agent:
```
Build a "Curb Cut Mapper" web app for crowdsourcing wheelchair accessibility data.
Tech stack: React frontend with Leaflet maps, Express.js backend, PostgreSQL database. Deploy on Replit.
FIRST MILESTONE —
◎
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