work / 02 of 06 / live tool

NYC Poll Tracker

A live election-day site that tracked wait times at every polling place in New York City during the 2025 mayoral primary and rolled them up to the districts that matter.

Year2025
StackPython, JavaScript, Leaflet, NYC live polling-place API
Reach100,000+ combined views across web and social
StatusLive at nycpolltracker.com
NYC Poll Tracker map of New York City with election-district outlines, a map-layer switcher for six district levels, a wait-time legend, and a borough summary panel.
nycpolltracker.com between elections: the citywide map, layer toggles for six district levels, and the borough summary panel.

What it does

The tracker ingests New York City's live polling-place API, updates wait times across every site in the five boroughs, and groups those signals at six levels: Election District, Assembly District, City Council, State Senate, Congressional District, and borough.

It also layers in political analyst Michael Lange's Assembly-level prediction map, so the live operational picture sits next to expert local knowledge about where turnout was expected to be strong.

How it is used

On primary day a long wait is an operational signal, not just a public-information issue. Voter-assistance volunteers, legal observers, and troubleshooting support can be routed toward the sites and districts where friction is highest.

Because the tool rolls sites up to political districts, a decision-maker can see in one glance whether a problem is isolated to one location or concentrated in a district that matters.

What I built

  • Python ingestion and processing against the city's live polling-place feed, resilient to the gaps and oddities of a live API.
  • Geographic joins from each polling site to its Election District and up through Assembly, Senate, Council, Congressional, and borough boundaries.
  • A JavaScript front end on Leaflet with a layer switcher per district level, a wait-time legend, and a borough summary panel.
  • Deployed and live while voting was underway. This was production work, not a demo, and it generated more than 100,000 combined views across the web and social media.
100,000+combined views on primary day
6district levels, from Election District to Congressional
5boroughs, every polling site