Street sweeping schedules for 25 cities, built from their own open data
When street sweeping is on every street in Los Angeles, San Francisco, San Diego, New York, Chicago, Boston and 19 more cities and counties, with the tickets written there, read from each city’s own data and rebuilt every month.
- Client
- Curb Reader (own product)
- Role
- Founder and sole engineer
- Built with
- Next.js, React, Mapbox GL, Tailwind CSS, Postgres, Web Push, GitHub Actions
- Integrations
- City ArcGIS layers, data.lacity.org, DataSF, NYC Open Data, Chicago Data Portal, Mapbox

(01)Results
- 25
- Cities and counties
- About 10,800
- Pages
Each from its own published data
Streets, cities, wards and neighborhoods
(02)The problem
Every city publishes its street sweeping schedule differently: map layers, spreadsheets, a database of street signs, or hand-written text like “NS 2nd Fri, SS 2nd Thu”. None of it answers what a resident wants to know: when is my side of my street swept next, and how often does the city write tickets there? The answers sat in city map viewers that few people find.
(03)The approach
- 01
Every city’s format, read into one schedule
Build scripts read each city’s source, from ArcGIS layers and open-data portals to zipped shapefiles in state plane coordinates and New York’s database of 194,870 broom signs, into one model of days, weeks, hours, sides and seasons. Rows the scripts can’t read are left out and logged, never guessed.
- 02
Tickets placed on the block
A year of each city’s street-cleaning citations is matched to the route, block and side it was written on, so every street page shows when tickets actually get written. Plates and vehicle details are never downloaded.
- 03
A page for every street
About 10,800 pages, one per street in the largest cities and one per city, ward or neighborhood elsewhere, each titled with the search people type and showing the next sweep dates worked out in the browser.
- 04
Next dates people can rely on
Seasons where a city stops sweeping in winter, New York’s holiday suspensions read from the city’s own calendar, calendar feeds, and a push reminder the evening before, all from the same schedule logic.
- 05
Kept current without calling the cities
A monthly job re-downloads every source and rebuilds the site; if one source fails, last month’s files stay. Visitors only ever load the site’s own files, and an address typed into the search goes only to the map provider, never stored.