Hub3 · product

The Field Targeting System.

A precinct-level data and dashboard platform. The statewide voter file, voter history, polling places, address points, and precinct boundaries -- joined into operational outputs chairs and field staff use. This is what we have; let us know if you want it.

Chair workflow

What a chair does in the dashboard.

Five steps. No data dictionary required. The chair is the user.

STEP 01

Pick a county and precinct.

Open the precinct view for the county you're working today.

STEP 02

Review priority doors.

Scan the prioritized household list with plain-English turnout context.

STEP 03

Open a map and route the shift.

Drop into the map explorer and route a walkable shift under 90 minutes.

STEP 04

Print or open the playbook.

Generate the per-precinct PDF -- queue, map, route, and audit in one document.

STEP 05

Check gaps and provenance.

Confirm address gaps, new voters, and source files before going out.

What's in the box

Built for chairs. Honest about the data.

Configurable county universe.

County coverage is driven by a single config file; adding a county is config-first, not a code patch. The current build covers 11 counties in North Carolina.

Voter and history join.

Statewide voter and history files are joined per county, with status, party, race, age, registration date, vote history, county, precinct, polling place, propensity tier, supervoter status, geocoded location, and address-quality signals.

Propensity tiers.

  • Supervoter -- voted in every required federal general and current-precinct municipal election they were registered for since 2018.
  • Tier 1 -- never voted since 2018.
  • Tier 2 -- presidential-only behavior plus missed registered midterms.
  • Tier 3 -- sporadic voter, excluding supervoters and Tiers 1 / 2.

Priority precinct filters.

Combine any of: configurable party-registration-share threshold, configurable demographic-share threshold (e.g. precincts where a given group is at least 50% of registered voters), propensity tier mix, and supervoter density. Each organization sets its own definitions; nothing is hard-coded to one party or coalition.

Household clustering.

Doors group into warm leads, family clusters, and solo households so volunteers focus on the highest-leverage knocks first.

Plain-English turnout context.

Each target shows a one-line last_seen_english summary so a volunteer reading a card understands the history without a data dictionary.

Walkable route shifts.

Routes are capped at 90 minutes of walking. The current build emits 1,754 route shifts and zero exceed the cap.

Aging-in and new-registration cohorts.

Per-county chunks of voters newly eligible or newly registered, with precinct context.

Absentee follow-up.

Unreturned absentee rows pulled from statewide files with match-rate auditing.

Polling-place change signals.

Inferred from historical precinct fields, surfaced as a rollup so chairs can warn affected voters.

Address gaps.

Conservative multi-unit gap flags and AddressNC-derived "addresses with zero matched registered voters inside a target precinct polygon" rows. Chair-facing follow-up -- not proof anyone lives there.

Printable playbooks.

Per-precinct PDFs that fold the queue, the map, the route, and the audit into one document a county chair can hand a volunteer.

Local map explorer.

County, precinct, ZIP, street / block, route-shift, address-gap, and polling-place modes. Public OpenStreetMap tiles for browser display only -- no voter data leaves the local machine.

Audit & provenance built in.

Every output traces back to source files and run logs. The Audit view shows source directories, generation timestamp, privacy mode at build time, absentee URLs tried, and audit table samples. Chairs check this before trusting an output.

By the numbers · current build

What's actually in the system today.

11
counties configured
913
precinct summary rows
3,056,851
active & inactive registered voters in scope
54
priority precincts with full v2 chair-action outputs
61,723
target households
260,146
aging-in / new-registration cohort rows
134,701
absentee follow-up rows
2,833
polling-place change rollup rows
54
printable precinct playbooks
1,754 / 0
route shifts emitted / over the 90-minute cap
Two modes, one system

The system you run is the system funders see -- minus the voters.

Switch the same build between full operational outputs and a redacted demo. One command. Same workflow. Same screens. Different surface area.

field.hub3.local · Durham 33-04 · priority doors LOCAL
#
Household
Tier
Cluster
Door
01
Whitaker, A. & J.
412 Oak St · last voted 2020 G; missed 2022 M, 2024 P
TIER 2
Family
D-0412
02
Boateng, K.
418 Oak St · registered 2024-08; never voted
TIER 1
Solo
D-0418
03
Reyes-Pham household
421 Oak St · 3 registered voters · 2 supervoter
SUPER
Warm
D-0421
04
Okonkwo, D.
425 Oak St · voted 2020 P, 2024 P only
TIER 2
Solo
D-0425
05
Henderson, M. & T.
429 Oak St · sporadic since 2018
TIER 3
Family
D-0429
06
Vance, L.
434 Oak St · registered 2025-02; aging-in
TIER 1
Solo
D-0434
#
Household
Tier
Cluster
Door
01
Whitaker, A. & J.
[address redacted] · last voted 2020 G; missed 2022 M, 2024 P
TIER 2
Family
D-████
02
Boateng, K.
[address redacted] · registered 2024-08; never voted
TIER 1
Solo
D-████
03
Reyes-Pham household
[address redacted] · 3 registered voters · 2 supervoter
SUPER
Warm
D-████
04
Okonkwo, D.
[address redacted] · voted 2020 P, 2024 P only
TIER 2
Solo
D-████
05
Henderson, M. & T.
[address redacted] · sporadic since 2018
TIER 3
Family
D-████
06
Vance, L.
[address redacted] · registered 2025-02; aging-in
TIER 1
Solo
D-████

Local mode OPERATIONAL

Used by your organization on its own machines. Exact names, addresses, NCIDs, phone numbers, route stops, household labels, exact coordinates, and full printable playbooks. Never published, never deployed to a public URL, never committed.

Redacted demo mode PUBLIC-SAFE

Used for sharing with funders, boards, coalition partners, and the public. Masks names, addresses, NCIDs, phone numbers. Jitters or aggregates exact household coordinates. Disables sensitive PDFs. Keeps aggregate counts and workflow behavior so reviewers see exactly how the system works -- without ever seeing a voter.

What we don't claim

Honest about the limits.

Civic-tech buyers respect this. We do too.

  • Some addresses won't geocode and stay blank.
  • Address-gap flags are leads to investigate, not proof that eligible voters live somewhere.
  • The voter file is current registration only; full historical address moves aren't reconstructable.
  • Polling-place change signals are inferred from historical precinct fields -- not directly from a historical polling-site address feed.
  • Birth month / day isn't in the public voter file -- birthday-style outputs use registration date as a public-data proxy and say so.
  • Only precincts that meet the chair-action threshold get household-level routes and playbooks. Other precincts get summary and boundary views.
  • No paid APIs required. No voter data is uploaded to any third-party map or AI service.
How it's built

Local-first. Idempotent. Verifiable.

Local-first.

Reads statewide voter, history, polling-place, address-point, and precinct-boundary files. Writes only to local output directories. Generated PII-bearing outputs are gitignored.

Idempotent builds.

Dashboard data regenerates from scratch on every build. Local mode and redacted mode are both one command. Switching between them is one command.

Verifiable.

Python and dashboard test suites, route-quality audits, address-match-rate audits, and run logs are first-class outputs -- not afterthoughts.

See it on your county.

If you're operating in one of our 11 NC counties, we can show you live priority precincts. Outside NC? We'll talk roadmap.

Get in touch →

Email me a sample county packet

A redacted PDF with the chair workflow, priority doors, route, and audit -- for one of our 11 NC counties.