How Voter Approval Works
The CPP says voters must be confirmed residents. Here’s the workflow from your address claim to your first vote — and the safeguards in between.
Last updated 2026-05-25
Why approval exists
The Birmingham Citizen Participation Plan (1974, last revised under 24 CFR 91.105) requires that votes in neighborhood-association elections come from people who actually live in that association’s boundaries. Without that constraint, anyone could vote in any NA’s election from anywhere — including outside the City.
Approval is the platform’s way of doing what an NA Secretary used to do at the door of an in-person meeting: confirm the person voting lives where they say they live.
The workflow, step by step
You submit an address claim from /residency. The platform geocodes your address against Birmingham’s official Open Data Portal boundaries and picks the NA your address falls inside. A row is written to resident_verifications with status=PENDING. Nothing public changes yet.
Your NA’s admin sees your row appear at /admin/residency-claims. They review it, see the address, the matched NA, and the geocoder’s confidence score. They click Approve (or Reject — rare; usually because the address didn’t resolve cleanly or you live just outside).
On approval, your status flips to APPROVED. The next time the platform recomputes your scopes (immediately, in practice), `voter_approved` becomes true for that NA. You can now cast votes in that NA’s elections.
Every step is logged in the audit log. RESIDENCY_CLAIMED on submission. RESIDENCY_APPROVED or RESIDENCY_REJECTED on the admin decision. The actor, the resident, the neighborhood, the timestamp — all permanently recorded and inspectable.
What could go wrong, and what doesn’t
Could go wrong: a rare geocoder miss pins you to a neighboring NA. Fix: the admin can reject your claim with a note, and you can re-submit with a more precise address. The geocoder works against the official City boundary file, so this is unusual but not impossible at the edges.
Doesn’t happen: nobody approves themselves. NA admins can’t approve claims they submitted (the schema and the audit log both prevent self-approval — Glen Iris scenario protections). Platform admins can intervene if an NA admin position is vacant, and any such intervention is logged.