🐟 tinystores

The next store, scored.

A multi-criteria decision model for Tiny Fish β€” built to rank Swiss commercial-lease offerings against the unit economics that actually matter.

MVP Β· for Tobias & Luca

Methodology

Tiny Fish is one of Switzerland's most thoughtful sushi brands β€” 14 stores, growing 4–5 per year, fed by a central kitchen in Altstetten that reaches Geneva by 11:30. The next decade hinges on choosing the right next sixteen stores well.

Tinystores is a multi-criteria decision model. It evaluates any Swiss commercial-lease offering against the principles that actually drive Tiny Fish unit economics: how many pedestrians walk past, who they are, what they can spend, how easy the location is to reach by public transit, how much office activity sustains weekday lunch, what competition already exists, how visible the shopfront is, and how flexibly the lease is structured. Hard filters reject anything outside the 3-hour kitchen radius or too close to an existing store.

Competition is modeled in two directions, not one. Direct competitor proximity (other sushi or Asian-cuisine operators within 200 m and 500 m) is a penalty β€” head-to-head splits demand. But a moderate cluster of any nearby restaurants and cafΓ©s is a positive signal: it proves the location is a validated lunch zone, not an isolated bet. Tiny Fish wants to be the best fresh option inside a proven corridor, not alone in an empty one.

Catchment affluence is its own dimension β€” the model's biggest blind spot until recently. A street's character determines whether the people walking past can comfortably spend CHF 20 on lunch. The model now triangulates affluence from six independent signals: density of luxury brands in the 200 m around a candidate (jewelry, watches, fashion houses with established global recognition), presence of private banks and wealth managers (a Swiss tell of high-net-worth catchment), proximity to premium-employer HQs (UBS, McKinsey, Goldman Sachs, Roche, Pictet β€” sites that anchor the highest-earning weekday lunch crowds), the average price level of nearby restaurants (an honest revealed-preference signal), federal median taxable income at the Stadtkreis or municipality level (with the wealthier married-couple tariff used in Zurich because that's the spread that matters), and an automated street-view read via Mapillary imagery analysed by a vision model that extracts shop quality, dress code, building grade, and detected luxury signage. The signal is U-shaped β€” too touristy-luxury (Patek-tier shopping with no offices) is wrong too. The sweet spot is "rich-with-lunch-demand": professional districts with serious money and serious meal-break schedules.

The signal layer is built on a foundation of public Swiss federal data, free OpenStreetMap geographies, federal income statistics at the Stadtkreis level, crowdsourced street-level imagery via Mapillary analysed by a vision model, real drive-time and 5-minute walking-isochrone routing from OpenRouteService, SBB daily station passenger volumes, Google Places restaurant price-level data, and real Homegate commercial-lease benchmarks β€” running at a marginal cost in the low double-digit Swiss francs per month. No broker fees. No expensive third-party panels. The street-view photos shown next to each candidate are real, recent (typically within the last 12 months), and feed directly into the affluence and visibility scores.

Logistics matters too. The current model hard-filters anything beyond a 3-hour drive from the Altstetten kitchen, which structurally limits Romandie and Tessin expansion. The model now scores each city's rail-deliverability separately β€” IC/IR train frequency from Zurich HB + last-mile courier ecosystem (Velokurier federation, bike-cargo networks, PostLogistics) + station-handover feasibility. When a city scores β‰₯75/100 on rail and only barely fails the 3-hour road radius, the model treats it as a viable target rather than a hard rejection. Geneva, Lausanne, Basel, Bern and Winterthur all clear that bar today; Lugano and Locarno are close behind. The rail option opens up the 30-store national footprint that road-only would never reach.

A note on disclosure. This is built by Jonathan Perez for Tiny Fish only β€” not a productized tool, not a third-party SaaS. The specific weights, signal sources, normalization rules, and cutoff thresholds are kept private to preserve the analytical edge. What's shared publicly is the philosophy and the output; the mechanics stay between Tiny Fish and the builder. Read the full white paper β†’

Demo: 20 Swiss candidate locations, scored

Twenty plausible Swiss commercial locations evaluated by the model. Bottom 10 are openly shown β€” proof the model rejects what it should. Middle 7 are openly shown β€” the gradient of what's interesting but not best. The top 3 are currently under internal audit β€” they'll be revealed (gated) once validated against Tiny Fish's operational filters.

Existing TF store SV Group Tiny Fish Fridge Candidate, score β‰₯ 70 Candidate, 50-70 Candidate, < 50

Top 3 β€” under audit

The top 3 are being manually validated

The model has converged on three specific Swiss addresses as top candidates. Before publishing them, we're hand-auditing each against Tiny Fish's operational filters and confirming the underlying signals. They'll be revealed (gated, by request) once validated.

Notify me when ready β†’

Middle 7 β€” solid candidates

The gradient β€” interesting locations the model rates above the line, just not the very top.

Bottom 10 β€” why these score poorly

Locations the model rejects. The labels show why β€” that's how the model validates itself from below.

Honest check: the same model on the existing 15 stores

A model that's only ever trained to agree with the chooser is useless β€” it just memorises the chooser's blind spots. So we don't calibrate against existing stores. We run the same unbiased model on them and show the result as-is. Some come up high β€” confirmation. Some come up low β€” that's signal worth a conversation. The Google review count on the right is the only outcome proxy we have without per-store revenue.

What this check produced β€” and how the model improved. In the first version, Bleicherweg (250 reviews, the most of any TF store) ranked #7 β€” the model missed it because raw amenity counts treat a McDonald's the same as Patek Philippe. Adding affluence + premium-employer proximity + Mapillary street-view vision analysis pulled Bleicherweg from #7 to #4, and rank-correlation against Google Reviews climbed from ρ = 0.43 to ρ = 0.57 β€” approaching the strong-agreement threshold (ρ > 0.6) typically considered sufficient for predictive ranking in retail-geography literature. The vision read at Bleicherweg returned "professional_lunch_crowd, mixed_high adjacent shops, modern_premium building quality, UBS signage detected, affluence 85/100" β€” exactly the signal the model needs and the kind of analysis no spreadsheet model can produce. The remaining gap to #1 is genuine: LΓΆwenstrasse sits on top of Zurich HB's 450K daily passengers (Bleicherweg has only the much-smaller Bahnhof Selnau nearby), and the model is right to flag the foot-traffic differential. This is exactly the kind of honest progress a good model produces: not by hiding misses, but by hunting them.

Are you interested to learn more?

The white paper is a 1,000-word read on the model's philosophy, data approach, validation strategy, and the 2040 vision behind it. The top 3 candidate locations are a conversation.

Yes, let's talk β†’
or read the white paper first