PlazaLens
Methodology

How these numbers are made

Two different kinds of number appear on this site, and they deserve different amounts of trust.

Chain profiles are measurement. Every figure on a chain page is a percentile of observed data — the 25th, 50th and 75th of that chain's own locations. Nothing is predicted.

Plaza rankings are a model. The percentiles on a report come from a trained classifier. They are estimates, they carry error, and each is published alongside the record of how that model performed on markets it had never seen.

Where the locations come from

All of it is OpenStreetMap, collected two ways. The original chains were pulled per brand from the Overpass API, selecting on the brand:wikidata tag — the most precise identifier OSM has. The rest were matched by brand name against a national OSM extract already loaded here: the same underlying data, without re-querying a rate-limited API another 177 times.

Name matching is looser than a wikidata tag and fails in a specific way worth naming: a chain whose OSM brand string differs from its trade name matches nothing at all. Ross Dress for Less is tagged simply Ross, and exactly one POI in 1,913,197 carried the full name. Aliases are therefore declared explicitly rather than guessed, and a build gate fails if any chain resolves to implausibly few POIs.

The measurement

Surroundings come from that same extract: 1,913,197 points of interest, 1,419,831 motorway, trunk and primary road segments and 541,715 traffic signals. Demographics are US Census 2022 ACS 5-year estimates at block-group resolution (239,781 block groups); metro areas are TIGER 2023 CBSA boundaries.

For each of the 173,178 sites we draw rings of 1, 3 and 5 miles and, inside each, count POIs by category and sum demographics weighted by how much of each block group falls in the ring. Access measures are true nearest-neighbour distances. That is 112 numbers per site, and a chain page reports the 25th, 50th and 75th percentiles of them across that chain.

A chain never counts itself. Every count around a site excludes that site's own brand — including alias spellings, and the unbranded building polygon OSM often stores alongside the branded point. Re-checked on every rebuild across all 173,178 sites: zero of them report a business of their own kind at zero distance. Without this, a Starbucks trade area trivially looks like the place Starbucks goes.

How the models are judged

Whole metro areas are held out, never random rows. Retail is spatially autocorrelated, so holding out one store leaves its neighbour three blocks away in training and the score flatters itself. Each chain is also compared against two deliberately dumb baselines — ranking by population alone, and by a category-gap rule — and the build reports how many chains fail to beat them.

A held-out AUC above 0.97 fails the build. At that level something has leaked rather than been learned. That rule has caught five separate defects that would otherwise have shipped looking excellent.

86 of the 177 chains in the corpus are modelled. A chain earns a model only once it has enough locations for the held-out test to mean anything; below that the measurement is noise, and no model is published rather than a weak one. The remaining chains still contribute their locations as context around everyone else's sites.

What it does not tell you

  1. Absence is not failure. A chain missing from an area may mean untapped demand — or that the site was evaluated and rejected for reasons invisible in this data: a ground lease, a franchisee territory, a bad parcel.
  2. 86 chains are modelled. For many sites the honest answer is a regional chain not covered here.
  3. OpenStreetMap coverage is uneven. It undercounts the largest chains — 12,865 Subway locations are mapped here against roughly 20 thousand real ones. The mix ratio is what these profiles rely on, not the absolute count, but a thinly mapped rural trade area will still read as emptier than it is. The POIs-per-resident measure on each chain page exists to expose exactly that.
  4. These are locations, not outcomes. There is no public record of revenue or of stores that closed, so nothing here can say whether a site performs well — only where a chain chose to be.

Reproducibility

Generated 2026-08-19 from the corpus above. The pipeline — ingest, ring computation, training and these aggregates — is code. The original per-brand location CSVs are committed; the brands added later are reproducible by re-running the same matching step against the national OSM extract, which is also code.