Methodology and data quality
StrataIQ does not know every customer or every business in a city. It combines the best available public evidence with explicit behavioural and financial models, so that every assumption is visible and can be changed. Results are conditional model estimates, not predictions or guarantees.
1. Open categories
You can describe any business. The text is matched to a catalogue of OpenStreetMap tags; if nothing matches, an optional AI step proposes tags that are validated against an allow-list, and the final fallback searches business names for your keyword. Each category is assigned to one of six economic model types (membership, dine-in, takeaway, retail, appointment, lodging). The model type decides what a sold “unit” is and how capacity works. You can always override it.
2. Live market evidence
- Competitors: OpenStreetMap via the Overpass API, fetched when you load a location. Each record keeps its OSM reference, last-edit time, and our retrieval time. Contributor usernames are discarded.
- Population: WorldPop 100 m gridded estimates (reference year shown) summed over the catchment, then distributed across ~300 m demand zones in proportion to mapped buildings (dasymetric mapping). Where building data is thin, population is spread uniformly and flagged.
- Catchment: a straight-line radius, or a travel-time area from openrouteservice when a routing key is configured. The method in use is always labelled.
- Coverage indicator: computed from mapped buildings per 1,000 residents, completeness and edit recency of competitor records. It is a heuristic, not a measured recall rate.
- Retrieval time is not the same as the time the underlying data was last updated; both are shown.
3. Customer-choice model
For demand zone z, synthetic segment s (budget, mainstream, premium) and alternative j (your business, each competitor):
N_zs = W_z · participation · share_s in-market people per month F_sj = 1 − Φ( (ln p_j − ln(m_s · p_ref)) / σ ) affordability (lognormal willingness-to-pay) V_zsj = β_q (q_j − 0.5) − β_p k_s ln(p_j / p_ref) − (λ / t_s) d_zj + ln a_j A_zsj = F_sj · exp(V_zsj) · 1[d_zj ≤ max_km · t_s] P_zsj = A_zsj / ( exp(U_0) + Σ_k A_zsk ) multinomial logit with an outside option D_j = Σ_zs N_zs · P_zsj · frequency units per month Q_0 = min(D_0, K) capacity-constrained
W is resident-equivalents (residents, plus mapped activity points for categories that also serve visitors). d is estimated road distance (straight-line × a circuity factor unless routing is available). a is awareness, which rises with marketing spend along a saturating curve for your new business. p_ref is the local reference price: entered by you, derived from competitor prices you recorded, or, if neither exists, your baseline price (flagged as an assumption). The outside option means customers are never forced to pick a modeled business.
4. Economics
Revenue = price × Q Variable cost = variable cost per unit × Q Fixed cost = rent + payroll + utilities + other fixed + marketing Operating profit = Revenue − Variable cost − Fixed cost (monthly) Break-even units = Fixed cost / (price − variable cost per unit) Payback = startup cost / operating profit
Taxes, financing, depreciation and working capital are not included and are listed as exclusions on every result.
5. Uncertainty and sensitivity
Each behavioural parameter has a documented low/high range. Monte Carlo draws parameters from triangular distributions over those ranges (fixed random seed, so a run is reproducible) and reports P10/P50/P90 profit and the modeled probability of a loss. These probabilities are conditional on the assumed ranges; they are not calibrated real-world probabilities. One-at-a-time sensitivity (tornado), price and marketing sweeps, stress tests and Spearman rank correlations identify which assumptions move the result most. These describe the model, not proven real-world causes.
6. Synthetic agents and the 615-parameter genome
The live market places 10,000 synthetic agents in proportion to real population density (WorldPop totals spread over OpenStreetMap buildings). Each agent carries a 615-parameter genome: 46 values measured from real geography (position, distance and travel time to every mapped business), 16 correlated latent traits (income, price consciousness, time poverty, digital nativity…) drawn conditionally on the agent's age and income segment, and 553 parameters generated from those traits plus noise (hour-by-hour availability, 40 attribute importances and minimums, 48 media-channel parameters, price psychology, mobility, retention, category affinities, lifestyle and constraints).
x_k = mu_k + loadings_k · z + sd_k · eps z ~ N(mu_z | age, income segment ; Sigma) V_ij = price_ij + quality_j + travel_ij + hours_fit_ij + attributes_ij + expectation_gap_ij + trust_ij + lifestyle_ij choice = argmax( V_ij + habit_ij + noise_i · Gumbel , outside_i + noise_i · Gumbel )
Every one of the 615 parameters reaches a decision (choice utility, participation, outside option, awareness, word of mouth, retention or noise); the test suite fails if any is unused. Click an agent to see its genome and why it chose what it chose. These are documented assumptions conditioned on real evidence, not data about real people, and more parameters do not by themselves mean more accuracy. Before a run, demand is checked against incumbents: businesses that exist need customers, so if the model leaves nearby incumbents below a survival floor, participation is raised (bounded at ×2.5 and reported).
7. Recommendations and AI
Verdicts, rankings and recommendations are produced by documented rules over the computed results. An optional language model can paraphrase the result in plain language; every number it writes must already exist in the result, otherwise the paraphrase is discarded. The language model never produces the numbers.
8. Validation status
The default behavioural parameters are not yet calibrated against observed sales data, and no accuracy figure is claimed. Unit and invariant tests check the mathematics (for example, that higher prices lower demand and that an added competitor reduces your share). The Monitoring page lets you record real outcomes and computes forecast error (WAPE) from them; the model is not automatically recalibrated.
Map data © OpenStreetMap contributors (ODbL). Population: WorldPop, University of Southampton (CC BY 4.0). Map tiles: OpenFreeMap, © OpenMapTiles. Routing: openrouteservice by HeiGIT.