14,384
homes flyered, every one logged on the map
30
volunteers on the map at the same time
Real time
results on every phone as they are logged

The situation

A volunteer-run local campaign set out to put a door hanger on every single home in the district. That means dozens of people in different neighborhoods at the same time, each needing to know which doors are done, which are next, and who is covering what, without anyone walking the same street twice.

What I built

  • An admin draws a shape on the map. The app fills it with every home inside, from county property records, in walking order, and assigns it to a volunteer.
  • Volunteers sign in with their email and get their own color on the map. They tap a house to log a door hanger or a knock, tracked as separate passes so one never overwrites the other.
  • Everyone sees who is out, which zone each person is working, and which houses are already done, updated in real time. If a phone loses signal, results save on the device and send when it reconnects.
  • The phone highlights the nearest house not yet done, several houses can be marked at once with an undo, and team chat announces each finished zone. A weekly leaderboard kept it a little competitive.

One rule mattered more than any feature: county records list both a mailing address and a physical address for each property, and showing the wrong one sends a volunteer to the wrong city. The map only ever labels the physical address.

The result

The campaign flyered every home in the district, 14,384 in all, with about 30 volunteers working at once. The only homes skipped were the ones with a No Soliciting sign. The tool is what made that coordination possible: because everyone could see who was out and which areas were covered, volunteers stepped in to help or finished each other's zones in real time, with no texting back and forth about what was done.

For your business

For a business, swap doors for service stops and volunteers for crews.

Why custom

Commercial canvassing apps are built for big campaigns: one kind of visit per house, a heavy account setup for every volunteer, and pricing to match. This campaign needed two passes on the same homes, thirty volunteers who could start in seconds, and the county's physical addresses rather than owners' mailing addresses. A custom build fit all three, with no per-volunteer cost.

Built with

Leaflet maps · Google Sheets + Apps Script · GitHub Pages · automated tests · built with Claude Code

Have a workflow like this?

Most projects scope in a 30-minute call. Tell me where the time goes.