Civic cleanup map

Trash Mapper

A crowdsourced litter-reporting app for Austin with geotagged submissions, OpenAI vision validation, Supabase-backed accounts, and cleanup progress loops.

Problem

Why this mattered

Neighborhood cleanup work needs trustworthy location data. A simple open form can collect reports, but without validation it also collects irrelevant photos, duplicate noise, and reports that are hard to turn into action.

Build

What shipped

  • An interactive map for browsing litter hotspots and submitted reports.
  • A report flow with image upload, geolocation, severity, and cleaned-state updates.
  • AI image validation that checks whether a submitted photo appears to show outdoor litter before accepting it.
  • Supabase-backed authentication, Postgres persistence, and image storage.
  • Image optimization with Sharp before storage, plus points for submitting and cleaning reports.

Stack

Tools and systems

Next.jsReactTypeScriptTailwind CSSNext.js API routesSupabasePostgresOpenAI visionSharpPigeon Maps

Decisions

Technical choices

  • Validate report images before they become trusted map data.
  • Keep cleanup status separate from report creation so the map can show both problem areas and resolved work.
  • Use user stats and points to make repeated civic contributions visible.
  • Optimize uploaded images server-side so map browsing stays lightweight.

Outcome

Proof surface

Public source and a deployed web surface make the project easy to inspect, run, and evaluate beyond a static screenshot.