# TerraCivic location snapshot attribution

The location index is a modified, exact-profile-matched subset of **Overture Maps Places, release 2026-08-19.0**. Source data and licensing: <https://docs.overturemaps.org/guides/places/> and <https://docs.overturemaps.org/attribution/#places>.

Overture's Places sources in this release include Meta, Microsoft, PinMeTo, Krick, RenderSEO, DAC, and BrightQuery under [CDLA Permissive 2.0](licenses/CDLA-Permissive-2.0.txt); Foursquare under [Apache 2.0](licenses/Apache-2.0.txt); and AllThePlaces under [CC0 1.0](licenses/CC0-1.0.txt). Foursquare attribution and the status of the upstream notice link are retained in [Foursquare-NOTICE.txt](licenses/Foursquare-NOTICE.txt). Original source references for each retained location are preserved in `provenance.json.gz`.

Foursquare copyright: Copyright 2024 Foursquare Labs, Inc. All rights reserved. Overture transformed Foursquare data to the Overture schema; the upstream attribution page records the change as March 18, 2026.

TerraCivic changed the distribution by selecting first-address country `US`, excluding permanently closed places and confidence zero, retaining exact normalized names or explicitly recorded brands that match an unambiguous existing PAC profile, projecting fields, and splitting results into one-degree geographic files. It did not change the source location coordinates or invent ownership relationships. Missing confidence remains unknown. The tile row format is `[source_id, latitude, longitude, name, brand, operator, confidence, address]`; Overture supplies no operator field, so that slot is empty. The optional address object retains source freeform street, locality, postcode, region, and country values; absent values remain null. It does not use contributor or PAC filing addresses. Source UUIDs are preserved without conversion to OpenStreetMap IDs.

The political-profile input uses the FEC identity gate: ordinary PAC type `N` or `Q`, designation `U` or `B`, a recognized connected-organization category `C`, `L`, `M`, `T`, `V`, or `W`, and a valid connected name. Candidate committees, leadership PAC sponsors, and blank organization categories cannot supply a business identity. `profile-identity-reconciliation.json` records the verified reduction from the initial profile aliases, including rechecking name-to-brand fallbacks; no previously unmatched place can become matched when every remaining alias keeps its original target.

All 16 source files are enumerated in `source-inventory.json`, including source asset URLs, release, metadata hashes, ETags, byte sizes, and expected row counts. `accounting.json` reconciles every source row into a mutually exclusive inclusion or exclusion outcome. `manifest.json` binds the location index to the exact political-profile artifact by SHA-256 and hashes each tile.

This is a dated location snapshot, not a complete or current business directory. Exact matching can miss valid corporate brand relationships, and name matches do not prove ownership of a local franchise. The political profile describes its source PAC's contributions, not a store employee's or local owner's beliefs.

## Rebuilding

Use Python with `duckdb==1.4.5` and the DuckDB `httpfs` extension. Run from the canonical project:

```sh
python build_places_index.py --extension-directory /path/to/duckdb/extensions
```

The pinned inventory is `data/places/source-inventory.json`. The importer requests public Parquet columns over HTTPS; it does not require an Overture account, key, or a live Overpass service. Per-file intermediate results are retained in ignored `raw-data/places-build/`, keyed by the input inventory, profile artifact, and builder hashes. Published artifacts are produced only after the complete inventory passes accounting and geometry validation. A bounded radius acceptance sample can be run with `--sample latitude,longitude,radius_miles`; sample mode publishes no location index.
