A PWA canvassing app built for dead zones, apartment basements, and rural routes. The service worker caches the walk list, and IndexedDB queues every disposition, note, and survey response. When signal returns, the queue syncs in the background.
— Capabilities
Most canvassing tools assume connectivity. Beacon was built the other way around — every screen the canvasser uses works without a tower, and the data ships up when a connection comes back.
/01 — CACHE
The app shell, walk list, contact details, and survey definitions all cache to the device on the first sync, so the canvasser can open the app at the door without a network round trip.
/02 — QUEUE
Every disposition, note, and survey response writes to the IndexedDB queue first. The queue persists across browser closes and phone restarts, so nothing is lost if the battery dies.
/03 — SYNC
When the device sees a connection, the queue ships in a single background batch. Server-side conflict resolution preserves duplicate visits as separate records.
— On the door, off the grid
Disposition buttons, survey forms, and AI talking points cached from the last sync render straight from local storage. The "Online" pill at the top of the walk list goes red when signal drops, but the rest of the app keeps working as before.
See the canvasser flow →
— How an offline shift runs
/01
Open the app on wifi, tap sync. The walk list, contact details, survey definitions, and territory boundaries cache to the device.
/02
Walk the list, log dispositions, fill surveys, and leave notes. Every action writes straight to IndexedDB. The "Online" pill turns red, but nothing else changes.
/03
When the phone catches signal again, the queue ships in the background and the pending counter clears.
/04
Knocks land in the activity feed and the map updates as the batch comes in, so there isn't a spreadsheet hand-off or an end-of-day reconciliation.
— FAQ
Q / 01
Every offline interaction writes to IndexedDB on the device, and when the phone sees a connection again, queued interactions ship to the server in a single batch. Server-side conflict resolution keeps two canvassers visiting the same contact as separate records.
Q / 02
Data persists in the IndexedDB queue, surviving browser closes, app restarts, and phone reboots. Open the app again, get connectivity, and the pending queue ships normally.
Q / 03
No. Beacon is a PWA, so on Android, Chrome offers "Add to Home Screen," and on iOS you tap the Safari share button and choose "Add to Home Screen." You get the app icon and a full-screen experience without an app store account.
Q / 04
The app shell is under 2MB on first load, and a typical 500-contact walk list fits under 1MB. Once cached, the app uses no data until sync, and a heavy day of door knocks (100+ logs) usually syncs in well under 500KB.
— Start walking
Open an account, install the PWA on your team's phones, and run a sync. The walk list works whether or not the bars do.