Capability
Geospatial
Data LiveAPI PlannedEvery jurisdiction carries its real boundary, so one coordinate resolves to the complete stack of governments that touch it, down to the elementary school district, in a single query with no third-party district service anywhere in the path.
One point, every jurisdiction
This is an actual result from the production graph for a coordinate in downtown Phoenix, returning nine jurisdictions ordered smallest first in one round trip.
- 15
Phoenix Elementary District
school-district
- 106
Arizona State Senate District 11
state-legislative-senate
- 106
Arizona State House District 11
state-legislative-house
- 174
Phoenix Union High School District
school-district
- 206
Arizona's 3rd Congressional District
congressional-district
- 519
Phoenix city
municipality
- 9,226
Maricopa County
county
- 113,985
Arizona
state
- 3,635,169
United States
country
Two details in that result separate a real spatial model from a simple district lookup. Both school districts appear, because Phoenix Elementary and Phoenix Union High School overlap the same address wherever elementary and secondary districts are drawn independently. The stack is also not a strict hierarchy, since the legislative districts are larger than the city without being contained by it. We return the true containment set ordered by area rather than pretending governance nests cleanly.
{
"point": { "lat": 33.4484, "lng": -112.0740 },
"regions": [
{ "slug": "region:az-phoenix-elementary-district-0406300",
"name": "Phoenix Elementary District", "level": "school-district",
"area_sq_mi": 15, "vintage": 2024 },
{ "slug": "region:az-state-senate-district-11",
"name": "Arizona State Senate District 11",
"level": "state-legislative-senate", "area_sq_mi": 106 },
{ "slug": "region:az-phoenix-0455000",
"name": "Phoenix city", "level": "municipality", "area_sq_mi": 519,
"ocd_id": "ocd-division/country:us/state:az/place:phoenix" }
// six more, ordered by area
]
}Geometry is stored in PostGIS as SRID 4326 polygons behind a spatial index, and resolution is a single containment test ordered by area and filtered to the boundaries valid on the requested date. Coordinate input is exact, whereas address input is geocoded first, so a coordinate is always the more precise call.
Boundary coverage
The tiers below county are both the hardest to obtain and the hardest to keep current, which is where most of this work went.
| Jurisdiction tier | Boundaries |
|---|---|
| Municipality | 37,636 |
| School district | 13,317 |
| State house | 4,784 |
| County | 3,235 |
| Precinct | 2,256 |
| State senate | 1,964 |
| Congressional district | 469 |
| Ward | 285 |
| State | 56 |
| Judicial district | 40 |
Measured from the production graph on 2026-08-20.
What a region carries besides its shape
A boundary alone answers where something is, while these fields answer who lives there and how to reach them without bringing in a second data vendor.
| Field | What it is |
|---|---|
population | ACS population estimate for the jurisdiction |
vintage | Census vintage year the boundary was drawn from |
timezone | The zone that decides what "polls close at 7pm" actually means |
ocd_id | Open Civic Data identifier, for joining to outside datasets |
languages | Most-spoken languages at home, priority ordered, from ACS |
land_area_sqm and water_area_sqm | Land and water area, for real density arithmetic |
fips and state_fips | Census identifiers, for joining to any federal dataset |
The languages field drives outreach. Colusa County, California returns ["es","en","de","vi"], so anyone planning ballot translation, canvass materials or a multilingual voter guide can see where to spend, attached to the same boundary they just resolved.
Boundaries are versioned
Districts get redrawn, so a boundary is never a fact about now but a fact about a window of time, which is why every region carries its Census vintage and the same validity dates as everything else in the graph.
GET /v1/districts_by_point?lat=33.4484&lng=-112.0740&as_of=2022-06-01Ask what district an address sat in during the last cycle and you get the answer that was true then rather than today's boundary applied retroactively, which matters a great deal when reconciling historic turnout or auditing a past targeting decision.
Derived boundaries
Some jurisdictions have no published boundary file at all, and state judicial districts are the clearest case as well as a documented gap for both major alternatives.
We build them ourselves. A judicial district is defined by statute as a set of whole counties, so we merge those counties into a single exact boundary and attach the court authority to it, which produces a real queryable shape for a jurisdiction that is otherwise invisible.
Derived boundaries are labelled as derived. A merged boundary carries the same provenance record as anything else and cites the statute it was built from, so you can always tell which shapes came from the Census and which we constructed.
Geography without geometry
Spatial queries are expensive, and most containment questions do not need one because the nesting is already stored in the graph as containment edges that you can traverse instead.
MATCH (county:Region { slug: 'region:az-maricopa-county' })
MATCH (county)-[:CONTAINS*1..2]->(sd:Region)
WHERE sd.level = 'school-district'
MATCH (o:Office)-[:SCOPED_TO]->(sd)
MATCH (c:Candidacy)-[:RUNS_IN]->(:Contest)-[:FILLS]->(o)
MATCH (c)-[:IS_CANDIDACY_OF]->(p:Person)
RETURN sd.name AS district, sd.population AS population,
o.name AS office, collect(p.name) AS candidatesThat single statement goes from a county to every school board race inside it. Resolving the same thing through a district lookup service and a separate candidate feed would mean a spatial call, a join on names, and a reconciliation problem you would own permanently.
Why this beats a district lookup service
Our assessment, not a vendor-confirmed comparison. The Civoren column is measured from the graph, while the left column describes the general shape of the address-to-district services we have evaluated.
| Question | A typical district service | Civoren |
|---|---|---|
| Input | Address or ZIP | Coordinate, address, or a node slug |
| Levels returned | Federal and state legislative | Ten levels, down to precinct |
| School districts | Rarely | Elementary and secondary held apart |
| Precincts | No | Real boundaries |
| Judicial districts | No | Derived from statute |
| Historic boundaries | Current only | Versioned, query as of any date |
| Connected to races | A separate lookup you join yourself | Same graph, one traversal |
| Demographics attached | No | Population, languages, timezone, area |
| Raw geometry | Not exposed | GeoJSON on request |