__MK__tabaqat · StrataCommerce & Real Estate
The Swing Slate — Site Selection

Which site leads —
and how far would you
have to be wrong?

Candidate sites ranked, every score broken into its weighted criteria, and between each adjacent pair the smallest change in one of your own weights that would reverse them. Every incumbent ships a score. Not one ships the score's stability.

California reference implementation · keyless open data · 504 assertions green On-prem · no API key · no licensed panel · read-only
© 2026 Tabaqat · Built on Strata — sovereign geospatial applications. A screening and ranking under assumptions the reader sets. Not a sales forecast, not a valuation, not a determination. The five candidate sites are GENERATED demo inputs.
The decision this drives

Which single store to open this year.

Defended at an expansion committee, by a team that has already qualified the sites. A multi-unit operator, a franchisor's expansion group, a grocery or convenience banner, a restaurant group.

The published promise in this category is always open, expand or close. Close is the verb no vendor makes first-class, because no vendor wants to sell software that recommends shutting a store. It is the same score with the candidate set replaced by the customer's own sites — so it ships here, as a page, and it costs almost nothing to build.

Buyer: the expansion committee Reads over the shoulder: the real-estate director · the franchisee · the analyst who has to defend it
1.2points separating rank 1 from rank 2 in the shipped reference slate — and the pair is FRAGILE

Lower transit access by 1.1 points of weight, renormalise the rest, and the order reverses.

The committee does not need to be told which site scored highest. It needs to know whether the answer survives the argument it is about to have.

What the market did in 2026

Everyone bolted on a chat window. Nobody published their own instability.

The interface moved everywhere at once

One incumbent relaunched its whole platform as a conversational product in May 2026. Another moved its business-analyst AI assistant to general availability in June 2026. A third wired plain-language querying in 2025. A fourth no longer exists as a brand.

Transparency is now a crowded claim

A funded entrant sells five reshapeable weighted lenses with traceable inputs from $200 per month. "We show the arithmetic" stopped being a differentiator while we were writing it down.

The stability of the ranking is still unclaimed

Across every vendor page and every comparison page read in the study, not one reports how far an assumption would have to move before the ranking changed.

A chat interface on top of a black box is still a black box. For any single site you want the inputs, the weights, and the ability to rerun the math yourself. Narrating a number is not the same as showing it. Vendor comparison literature, read 2026-09-02
The structural reason

A vendor whose asset is a closed model cannot publish how unstable its own answer is.

That is the best argument in this whole solution, and it is not a marketing line. It is why the gap has stayed open while four platforms rebuilt their front ends.

We can publish it, because we sell nothing inside the model. The arithmetic is a thirty-year-old published method, the inputs are keyless open data, and the weights are the customer's.

The method has a name and a citation. Triantaphyllou & Sánchez (1997) give the unified sensitivity treatment of the weighted sum model; Jaini & Utyuzhnikov (2016) define the object exactly.

The smallest change in the preferences value that affects the current ranking may determine the critical criterion. Jaini & Utyuzhnikov, Critical Criterion Analysis for Multi-criteria Decision Making, 2016

The model itself is the industry's own

The incumbent's documentation describes suitability analysis as preprocessing, weighting, combination and a final score scale — and says of the weights:

The weights for all criteria add up to 100 percent. Therefore, if you increase or decrease the weight for any criteria, the weights for each remaining criterion automatically decrease or increase proportionately. Vendor suitability-analysis documentation, read 2026-09-02

That is the weighted sum model, renormalised to 100. It is exactly the arithmetic this app runs. The assumption rail is not an invention — it is the industry norm made visible, and then measured.

The unit of answer

A ranked, decomposed slate.

Every row's bar is broken into its weighted criterion contributions, read left to right. Between each adjacent pair sits a chip carrying the smallest single-weight change that would reverse that pair, and a two-state verdict against a threshold the reader sets.

demandhouseholds in the band
spendshare at $100k+
exposurenearest traffic count
competitionrivals in the band
accessmapped transit

A missing input is flagged and excluded from that site's weight base — never scored zero. A blank traffic count coerced to zero would score a site at the worst possible exposure instead of no reading. That is how a screening tool quietly kills a good site, and it is a measured risk: 30 rows on the state's own AADT layer carry a blank ahead count, and 49 a blank back count.

The slate5 candidates · 3.00 mi band · grocery
1Bruceville Rd @ Big Horn Blvd73.4 dem 30.0spd 10.5exp 15.5cmp 7.4acc 10.0 FRAGILE · gap 1.2 pts — transit access ↓ 1.1 pts of weight reverses this pair
2Laguna Blvd @ Bruceville Rd72.2 dem 28.5spd 13.0exp 18.2cmp 12.6acc 0.0 ROBUST · gap 4.7 pts — household demand ↓ 14.6 pts of weight reverses this pair
3Elk Grove Blvd @ Bruceville Rd67.5 dem 20.3spd 15.4exp 18.2cmp 13.7acc 0.0
#4 · #5 follow · 2 of 4 pairs fragile · ranking stability 1.1 pts of weight
The shipped reference slate at the default weighting (30/20/20/20/10). Note acc 0.0 on ranks 2 and 3: that is a measured zero — those sites sit outside any mapped transit area — and it is drawn as a real contribution of no width. A missing input looks nothing like it: hatched, after a gap, at the end of the bar, and excluded from the weight base entirely.
The application, first paint

The argument, the answer and the place — in that order.

The Swing Slate at first paint: the assumption rail on the left carrying the trade-area band and five weights, the ranked decomposed slate in the centre with flip chips between adjacent pairs, the map on the right, and the evidence and provenance strip beneath.
Shipped build, verified 2026-09-02 — a browser screenshot taken by the automated driver, not a mock-up.
  • The assumption rail. The trade-area band and five weights that renormalise to 100. Move one and the others rebalance proportionately.
  • A persistent notice bar. Screening and ranking, straight-line buffer, register vintage, demand vintage and frame. Never the status line, which is transient.
  • The slate, ranked and decomposed, with a flip chip between every adjacent pair.
  • The map repaints in the same frame. Rank symbology, the stated band, the competitive set, the count stations and the transit areas.
  • Evidence beside provenance. Every number on the left; on the right, one line per source with its vintage and its caveat.
48 behaviours specified and testedDark by default · light is the print mode
The number that is new

The flip margin, and it is verified end to end.

For every adjacent pair, solve for the minimum move in one criterion's weight — renormalising the rest so the set still sums to 100 — that puts the lower site above the higher one. Print it. Call the pair robust or fragile against a stated threshold.

rank 1 73.4 · rank 2 72.2 = gap 1.2 pts
smallest single-weight change that reverses it: transit access ↓ 1.1
fragility threshold 8 pts → verdict FRAGILE
rank 2 72.2 · rank 3 67.5 = gap 4.7 pts → ROBUST at 14.6 pts of weight

The suite applies every predicted flip and checks that it actually reverses the pair. Four of four do. And half the predicted change reverses none of them — which is what makes the printed margin a threshold rather than a label.

It converts "the model picked site 3" into "site 3 wins unless you believe traffic exposure is eight points more important than you said, in which case site 2 wins." That is a sentence a committee can argue with.

The defect that proves the assertion earns its place

Solving for score_b ≥ score_a is the published form of the method, and the solver's own unit tests passed.

Two candidates that share a nearest count station carry the identical normalised exposure. Drive that weight to its limit and both scores land on exactly the same number. The pair ties. It does not reverse — and the chip was promising a reversal the user would never observe.

Caught at 3 of 4, by the assertion that applies the app's own printed promise rather than checking that the solver satisfied its inequality. The predicate is now a strict inequality, and where no strict reversal exists the pair is reported ROBUST.

Assert the claim, not the code
The second assumption nobody flip-tests

The trade area has the same power over the answer as any weight.

2.6to one — the population gap produced on a single California address purely by choosing a three-mile ring over a five-minute drive time, before any analysis runs
3miles — the trade area the shopping-centre classification standard publishes for a neighbourhood centre; 3–6 for a community centre, 5–15 for a regional mall
1.75miles — where the band would have to move to reverse the top pair in the reference slate. Outside the published figure, so that result is strong

So the app prints the second sentence nobody else prints: how far the stated band would have to move before a pair reverses, and whether that move stays inside the standard's own range.

A flip that requires leaving the standard's range is a strong result. A flip that happens inside it means the slate was never decided by the data. This is a sensitivity reading of one stated definition — never a bench of rival catchment definitions to pick from. Bands are rings, labelled straight-line buffers on screen and in every export, because one community routing engine was down on six consecutive attempts and the other publishes no data vintage.

Keyless, on-premises, and probed rather than trusted

Every criterion has an open source. Every source has a trap.

CriterionSourceThe trap, reproduced on the wire
Household demand & spending powerCensus ACS 5-year summary file, joined to TIGERweb tract geometryKeyless and reachable, and the host sends no CORS header at all — so the spine is baked at build time. 9,129 = 9,129 tracts, zero orphans, asserted as a build gate.
Traffic exposureState highway AADT + its truck-volume siblingEvery count is a String. The naive maximum is 99,000; a server-side cast returns 386,600. A blank is missing, never zero.
The competitive setState points-of-interest registerThe object id is OBJECTID_1 and the column literally named OBJECTID is a decoy holding unrelated values. The whole register is one snapshot dated 2020-05-06.
Transit accessState high-quality transit areas and stopsA modelled planning product with no vintage field, whose counts moved by +481 and −550 in five weeks. Re-read at load, never hard-coded.
JurisdictionIncorporated city boundaries483 cities, and unincorporated territory is in no city layer — so a non-match renders unincorporated — county jurisdiction, never a blank.

Catchment figures are areally apportioned. A tract that straddles the band contributes the fraction of its households its area fraction implies. Counting straddling tracts whole overstated demand by +41.7 % at the reference slate's leading site — 43 tracts touched, 22 of them partial. It is the single most consequential operation in the pipeline and the one most often skipped.

Settled before any design depended on it

Four things this question appears to need are licensed. We name them and stop.

  • Store-level sales. Not published. The customer's own, or nothing. So: no sales forecast.
  • Retail receipts by store location. Not obtainable — the only public state source reports by the permit holder's registered address, consolidating multi-site and online sellers onto one permit. So: no leakage, no surplus, no retail gap.
  • Observed foot traffic. Licensed in every commercial form. The only open California visit data is the 19 April – 9 May 2020 lockdown window. So: never observed, and no cannibalisation study.
  • Parcel-accurate footprints. There is no queryable statewide California parcel service. So: a site is a point with a labelled band, never a measured footprint.

Leakage and surplus is not a gap we concede

It is a finding we report. The industry's canonical retail-gap output is in mature status, frozen at 2017 vintage, retired by its own vendor because its sources "cannot adequately differentiate e-commerce sales from store-front sales". Its 2026 replacement is demand only — no supply side, therefore no leakage.

We are not behind the incumbent on this number. There is no incumbent number.

The lockdown window is quarantined, structurally

The register's 21 visit columns run Visits04_19_2020 to Visits5_9_2020. The bound-field allow-list contains none of them, so nothing can arrive and be charted by accident — asserted on the wire, not promised in a comment.

Proof, not promises

Built, driven and measured — 2026-09-02.

504assertions green — 219 live · 180 offline · 105 in real headless Chrome
48behaviours specified, each mapped to the suite that exercises it
5.08worst informational contrast ratio, in both themes — the floor is 4.5
4/4predicted flips that actually reverse their pair — and half the change reverses none

Three harnesses, because each is blind to the next

Live against the real services, offline against the shipped module, and a real headless browser. The browser suite found five defects the other two reported green — including a theme switch that permanently lost every operational layer.

Every trap asserted as present

The suite inverts each one deliberately, so the day a service fixes itself the build goes red rather than quietly stale. A numeric predicate on the string column must still throw.

Keyless is asserted as a behaviour

Each basemap is probed as a style, then two different tiles are fetched and required to differ — and one is looked at. One raster host passes every automated check and is still watermarked "API KEY REQUIRED". It is not in the gallery.

Reading the figures: every service, count, field and vintage above was probed live and is reproduced in the recipe with its literal terminal output. The five candidate sites and four estate sites are GENERATED demo inputs, labelled as such on every screen and in every export — in a deployment they arrive by upload, pin or address search. No measured figure is ever mixed with them.

Stated as boundaries, not caveats

What this application will not do.

  • No opinion of value. No capital value, rent, yield, residual land value or "estimated market value" a reader could quote. We assemble the evidence; the valuer signs it.
  • No forecast and no calibrated gravity model. A Huff model needs observed patronage or store-level sales, and neither is open.
  • No determination. The parking-relief chip reads "relief likely — confirm with the jurisdiction" and never a green tick, because the half-mile test is necessary and not sufficient and the finding belongs to the agency.
  • No veto criterion. Every criterion always produces a number. A fatal constraint cannot be traded against a weight, and a flip margin against a vetoed candidate is meaningless.
  • Read-only, end to end. No write path anywhere, so it runs identically on a read-only server and a writable one. The committee's decision is recorded outside it.
  • On-prem, behind the perimeter. No keyed provider. The demand spine is a bulk file deployed inside the customer's own network.
  • One catchment definition, stated. Its stability is reported; rival delineations are never drawn beside it.
  • English only, and nothing synthesized. A lane with no source renders empty with its citation, and every cap says so on screen.

Every one of these is written into the delivered application's own README. A tool that hides its edges costs you the project it cannot finish.

Point it at your shortlist

One CSV.
Your five criteria.

Your candidate sites with their coordinates, the centre type you are building, and the weights your committee actually argues about. Two weeks, and this slate ranks your shortlist instead of a generated one — and tells you which pairs will not survive the meeting.

Swappable by configuration, not by code: the criterion list is data-driven, so a firm that already licenses a commercial extract pushes it in as an additional criterion. The model is open, so their data stays theirs. That is the coexistence story, and it is the same one either way.

tabaqat.net → Solutions → Commerce & Real Estate info@tabaqat.net
© 2026 Tabaqat · Built on Strata. Reference implementation over Sacramento County, California; candidate and estate sites GENERATED. A screening and ranking under stated assumptions — not a sales forecast, not a valuation, and not a determination on parking, zoning or entitlement.
1 / 13