Methodology

How Geod computes every number, and why the answer survives committee.

We document everything: data sources, aggregation logic, scoring weights, snapshot dates, and the boundaries of what the model does and does not claim. When the CFO asks where a number came from, the brief already contains the answer.

Every analysis answers three questions

1

Who can you reach?

The trade area defines who could realistically visit a site. We build trade areas from actual travel time, not arbitrary radii.

2

How much demand exists?

Within that trade area: how many people, how much spending power, what's the density? Demographics aggregated to the catchment.

3

How crowded is it?

How many competitors are already serving that trade area? Is there room for another, or is it saturated?

For networks, we add a fourth: What's the impact on your existing stores? Per-store demand transfer, sibling recapture, net new opportunity.

For site access, we keep reach separate from accessibility. Reach describes the travel-time catchment. Accessibility describes whether the site can be used: ingress, egress, turns, parking, stacking, pedestrian or transit path, and confidence in those inputs. When curb-level access has not been verified, we mark it unavailable instead of turning catchment size into an access score.

Trade areas: how we define “who can reach”

Travel-time isochrones, not radii

A 10-minute drive isn't a circle. It's shaped by roads, intersections, traffic patterns. We generate real isochrones using road network routing.

Time-of-day aware

Rush hour traffic changes the shape. A site's 10-minute catchment at 8am is different from 2pm or 7pm. We let you specify the time window that matters for your concept.

Multiple rings

Standard output: 5, 10, and 15-minute drive times. Need different thresholds? Configurable by scenario.

Stored and versioned

Every trade area gets a deterministic ID. Reference it later, compare across analyses, audit months after the decision.

What we use: Mapbox Isochrone API with traffic-aware routing.

Demographics: how we measure demand

Source: U.S. Census Bureau

American Community Survey (ACS) 5-year estimates. The standard for population, income, age, household composition, and housing data.

Aggregated to your trade area

Raw Census data is at the block group or tract level. We aggregate to your specific catchment using area-weighted interpolation on an H3 hexagonal grid.

What's included

  • Total population
  • Total households
  • Population density (per sq mi)
  • Median household income
  • Average household income
  • Median age
  • Age distribution brackets
  • Household size
  • Owner vs. renter
  • Educational attainment
  • Commute patterns

Vintage documented

Every brief shows the ACS vintage (e.g., “ACS 2019-2023”). You know exactly how fresh the data is.

Why we use Census: It's authoritative, consistent, and defensible. Private data vendors model on top of it—we start with the source.

Competition: how we measure saturation

Source: Foursquare Places

13M+ U.S. points of interest with category taxonomy, verified locations, and monthly updates.

Filtered to relevant categories

You're not competing with every business. We filter to your competitive set—QSR, fast casual, coffee, fitness, whatever matches your concept.

Counted and mapped

  • Total competitors in trade area
  • Competitors per square mile (density)
  • Nearest competitors by distance
  • List with names and addresses

Supplemented with license data

Where available, we layer in state license records (liquor, food service) for verified operating status. A closed restaurant still in POI data won't inflate your competition count.

Bring your own competitors

In Strategize plans, upload your competitive set. Your intel, your definitions—supplementing or replacing our defaults.

Scoring: how we combine it into a recommendation

Weighted linear model

The score is a weighted sum of components. No neural networks, no hidden layers—arithmetic you can verify.

Default components

  • Reach: Population and customer base within the travel-time trade area
  • Demand: Income index relative to baseline
  • Competition: Inverse of competitor density (more = lower score)
  • Accessibility: Site-access usability and confidence signals where available

Default weights

Reach: 30% | Demand: 30% | Competition: 25% | Accessibility: 15%

Fully transparent

Site scores 74 = Reach (28) + Demand (31) + Competition (-12) + Accessibility (27)

Every component visible. Disagree with the weights? In Strategize, you set your own.

Why linear? Explainability. A linear model can be written on a whiteboard. It survives CFO scrutiny. Complex models score better on benchmarks but die in committee when no one can explain the output.

Cannibalization: how we measure network impact

Share-of-choice allocation

Every resident cell in the trade area is divided among the stores that could serve it: yours and the competitors'. Each store's share is weighted by distance, store draw, and how substitutable that store's category is with the brand being evaluated. A store's demand is the sum of its shares. Overlap is weighted by where people actually live, never by raw square miles of intersection.

Per-store decomposition

A move never reduces to one number. A closure shows the released demand, how much each nearby same-brand store wins back, and how much leaks to competitors, store by store, by name. A conversion shows both sides: what the original brand gives up and recaptures, and what the destination brand's own nearby stores lose to the converted site.

Competition as each brand sees it

The same competitor matters differently to different brands. Every competitor is weighted by category substitutability against the specific brand being evaluated, and the resulting weights are shown in a table you can read, not buried in a score.

Units, stated plainly

Demand figures are residents of the surrounding drive-time area, assigned to the store each is most likely to use. They are not visits and not sales. Converting demand to revenue requires your own store sales data, and until that data is connected we say demand share and nothing more.

No imputed numbers

When a component cannot be computed honestly, it is omitted and labeled as omitted. When a question is degenerate, like adding a brand a site already operates, the model refuses and explains why instead of fabricating an answer.

Strategize plan feature

Network scenarios: forecasts anchored to reported sales

Existing stores start from their own sales.

For closures, conversions, relocations, and infill openings, each affected store with operating history begins at its reported trailing sales. Geod computes how the proposed move changes the store's allocated share of local demand, and applies that change to the store's observed baseline. The model never replaces a store's known sales level with an estimate; it forecasts the change.

Where no history exists.

A brand-new site or a just-converted store has no sales to anchor to. Those levels are estimated from the operator's own comparable stores, with the comparable set and its spread shown, and they carry the widest ranges in any brief.

Predictions are registered and checked.

Scenario forecasts are stored with their assumptions and a due date. After the move, they are compared against actual results using matched-control comparisons, so the effect of the move is separated from the market's background drift. The scorecard accumulates in the product.

Data freshness: how we keep it auditable

Snapshot timestamps

Every analysis records the data vintage: ACS year, POI update date, isochrone generation time.

Deterministic IDs

Trade areas, snapshots, and analyses get stable identifiers. Reference them in reports, compare across time.

Reproducibility

Run the same inputs six months later—get the same outputs (unless underlying data updated). No stochastic variation.

Methodology in every export

PDF briefs include a methodology section: data sources, aggregation method, scoring weights, snapshot dates.

Why this matters: Deals close months after analysis. Boards review decisions years later. The brief needs to stand on its own.

Current status

Live for all workspaces
  • Travel-time trade areas (Mapbox routing)
  • Demographics (ACS 5-year estimates)
  • Competition (Foursquare POI)
  • Explainable scoring with component breakdown
  • PDF brief export with methodology
Live for Strategize plans
  • Portfolio upload (your locations)
  • Custom scoring weights
  • Cannibalization analysis
  • Network scenarios (closures, conversions) with registered predictions
  • Batch candidate evaluation
In development
  • Nationwide license record coverage (currently partial)
  • Traffic count integration
  • Foot traffic / mobility data partnerships
  • Enhanced daytime population estimates

We'll update this page as capabilities ship.

Need more detail?

We maintain a technical methodology document with data lineage, validation procedures, and calculation specifics.