TasteFit · Prediction ledger

Evidence

TasteFit is the location tool you can prove wrong. The figures below are the committed backtests. A negative result stays on the page.

Backtest, Chicago 2023–2024

Nine areas where a Qloo rank call returned an order. Surviving catalog openings in the top 3 of each ordering. The Qloo-minus-baseline difference has a 90% bootstrap interval of [-0.656, -0.036].

OrderingTop-3 hit rateRank correlationSurvivors
Qloo rank29%0.02231
Citywide baseline68%0.30831
Over-index only36%-0.03731
OSM under-supply only32%-0.10431
Taste Gap Index48%-0.15931
Baseline plus Taste Gap Index55%0.22831

No measurable gain. Qloo's top-3 hit rate is 29% and the citywide baseline is 68%. The 90% interval for Qloo minus that baseline, −66 to −4 points, stays below zero. The Taste Gap Index hit rate is 48%. Its 90% interval versus the baseline, −36 to −6 points, stays below zero. Read both as taste and supply evidence, not as a survival forecast. Qloo describes today's taste, after these places opened.

Footfall, before the window

Footfall alone hit 39% (90% interval versus this run's citywide baseline, −52 to +3 points). Footfall + Taste Gap supply hit 39% (90% interval versus this run's citywide baseline, −44 to −15 points). Footfall + citywide baseline hit 68% (90% interval versus this run's citywide baseline, 0 to 0 points). This run's citywide baseline on the same areas is 68%. The published nine-area citywide baseline is 68%. No footfall variant beats the citywide 68%. Sources: m6dm-c72p (2022-01-01 to 2022-12-31); fg6s-gzvg (2019-01-01 to 2019-12-31); 5neh-572f (2022-01-01 to 2022-12-31). The Taste Gap term is the supply leg only. Over-index D was not recomputed, so this is not the published Taste Gap Index. Zero Qloo calls. The weights are stated priors, not fitted. The counts are community-area totals from before 2023, not a door count and not a vetted address.

Survivorship and intervals

Not identified. Heckman (1979) needs an exclusion restriction, and the Chicago inspections file has none: closing, a missing re-inspection, and a keyword miss are not separable from the survival outcome, and applications that never opened are not in the file.

Inverse-probability weights (Horvitz and Thompson 1952) on a later register pull with no Qloo call: citywide top-3 hit rate 69% on survivors, 77% after weighting. Openings dropped because the propensity was 0: 10. This pull is not the nine-area Qloo table, and it does not reverse that table. The Qloo column was not recomputed, because rank orders are not stored.

Split conformal (Vovk, Gammerman and Shafer 2005), 90%, around the leave-one-area citywide share: quantile 1.0, mean width 2.0. Split conformal interval (Vovk, Gammerman and Shafer 2005) around the leave-one-area citywide survivor share. This is not an interval for a stored Qloo fit score. A width of 2 on a rate in [0, 1] is the whole range. The interval does not tighten the claim.

Claim ledger

The "without Qloo" panel asks the same model, with no tools, for concepts and up to five competitor names. Each concept is marked confirmed, contradicted, partly supported, or not tested against this run's Taste Gap label. Each named venue is checked against OpenStreetMap. The counts are agreement with this run and existence in the open map, not accuracy. The map misses real venues too.

Pre-registered predictions

The prediction ledger stores a SHA-256 of the concept, the area, the shortlist verdicts and the UTC time. No Qloo payload is stored. The committed Chicago batch is ramen shop in Wicker Park, Chicago, verdict unscored, check date 2026-11-17. The first listed concept is not a ranking. No probability was registered, so the Brier score (Brier 1950) is not defined for that batch. A later scored batch would be a new fingerprint.

Test before you lease

The top concept can be checked with a 4 to 8 week pop-up. The success line is the mode break-even at the rent-first ceiling, on the check that value of information ranks first. The length is a stated rule in that band. The figures use TasteFit's stated cost assumptions, not yours. Monthly figures, no interest and no discounting. The plan has its own SHA-256. It is not part of the five-field prediction fingerprint, so the committed Chicago batch hash does not change. A pop-up is not a vetted address. Logging the observed value, the weeks run and whether it cleared does not rewrite that hash.

Street match

With 3 to 5 monthly rents, Stable Street certifies a mix from the concepts already scored in that run. Stand-alone value is this run's fit plus a rent-first shift. Neighbour effects are an uncalibrated map of audience overlap already in the run. The page states when no replacement or swap raises the surplus, and when fixed rents have no stable assignment. No extra Qloo call. The certificate is not a survival forecast. Baseline: ignores neighbours. Gale and Shapley (1962) matched on fit and the rent-first verdict and did not use neighbour effects.

Milwaukee Avenue, representative rents

Event kinds and timings only, plus the street certificate. No Qloo response is stored. Representative rents, not confirmed vacancies, and not a vetted address. Example point near Milwaukee Avenue, Wicker Park, Chicago on 2026-10-15. Rents in USD: 2600, 2400, 2200, 2000. Elapsed 80363 ms. TasteFit /tenant, same code as main 4dde350, run locally on 2026-10-15 because https://tastefit.onrender.com/tenant returned offline. Steps that hit a rate limit: 1.

- Street certificate `a7d5aa6fe01da33ddda9cc58116ed713becb74fb1d28816dc2169f0fcf3e9719` (SHA-256 of the unit ids, the rents, the assigned concepts, the moves checked and whether the street needs rent flexibility; no Qloo payload).

No improving move: 0 replacements and 6 swaps checked. Neighbour effects are an uncalibrated map of this run's audience overlap (same category cannibalises, a different category is treated as complementary footfall, and the effect scales with the neighbour's fit); no extra Qloo call. Units are treated as a line of neighbours, about 100 m apart or on one mall floor; that distance is not measured. With negotiable rent only the symmetric part of those effects changes the total. The 2023-2024 Chicago backtest found no measurable gain, so this is not a survival forecast. Empty units are not part of those checks: this search does not move a tenant into a vacant unit. Only the concepts that received an audience-overlap check carry a neighbour effect, and a run checks at most two, so other concepts contribute 0.

Assignment: Unit 1: Mediterranean bowls (GO), Unit 2: ramen shop (GO), Unit 3: salad bowls (ADJUST), Unit 4: Korean fried chicken (NO-GO). Not a vetted address.

Find an improving move our certificate missed

The published street is docs/published-street.json. Scores and overlap in that file are stated for the example. It stores no Qloo response. The units are an example line, not vetted addresses. From a checkout:

python3 docs/verify_certificate.py docs/published-street.json

Exit 0 means no replacement or swap raises the surplus. Exit 1 prints the move. The script uses the same surplus as the certificate and makes no Qloo call. The certificate is not a survival forecast.

Call it from an agent

The MCP server is mcp_server.py on stdio. Nothing is written to disk. The snippet below is the client shape. This change does not add a step-by-step client guide.

{"mcpServers": {"tastefit": {"command": "python3", "args": ["/path/to/tastefit/mcp_server.py"],
  "env": {"QLOO_API_KEY": "...", "QLOO_BASE_URL": "https://hackathon.api.qloo.com"}}}}

Infrastructure

$0. The app is a standard-library server. The ledger, the backtests and this page are files in the repository. Hosting is the Cloud Run free tier and a free container registry. No database and no paid API beyond the hackathon keys already in the environment.

Limits