🐟 tinystores

The next store, scored.

A private location-intelligence tool, built for you.
private · for Tobias only
Zürich · 22 May 2026

Dear Tobias,

Since we had lunch on the 19th I've been building you something in the evenings. It is a small piece of software that scores any Swiss commercial-lease address for how well it would work as a Tiny Fish store — using the same kind of signals your intuition already uses, but at the scale a brain cannot.

This page is the first version. It is still rough at the edges, and it is private — just for you. The point is not the page; the point is to show you a direction and ask if you want me to push it further.

Jonathan

What this is, in nine questions

What is this, exactly?

A scoring model for choosing the next Tiny Fish store. You give it a Swiss commercial-lease address; it returns a number from 0 to 100, plus the reasons behind that number, decomposed into the dimensions that actually drive a small fresh-sushi point-of-sale.

Those dimensions are: pedestrian density, catchment affluence, lease cost, transit access, competition, and — since this week — rail-deliverability if you ever want to serve cities the kitchen van cannot reach.

Why does it matter?

Today the next-store decision is mostly intuition plus the broker's book. That works at 14 stores. At 30 — and especially at the Western-world franchise scale you described — picking a location should be a model, not a vibe.

Each lease is a multi-year commitment in a market where rent variance between two ostensibly comparable blocks can be 3× and weekday foot-traffic variance can be 10×. The wrong store doesn't kill anyone. But it locks up management attention, slows the cadence, and chips at the brand discipline that makes Tiny Fish credible.

What kind of data does the model use?

Public data only — no broker fees, no expensive panels — combined under one consistent scoring philosophy. The categories of input are:

  • Public foot-traffic indicators in 200 m and 500 m radii around each candidate
  • Neighborhood-level income statistics, including the married-household tariff figure that captures the Goldküste signal cleanly
  • Automated analysis of recent street-level photographs — building grade, adjacent-shop quality, visible luxury signage, premium-employer signs, pedestrian profile
  • Restaurant pricing density as a revealed-preference signal — what people around this block actually pay for lunch
  • Commercial-lease price benchmarks at the postcode level
  • Real-time drive-time from Altstetten plus the 5-minute walking-catchment polygon at each candidate
  • Public-transit volumes — rail station passenger counts plus urban tram and metro density
  • Rail-deliverability scoring per Swiss city — direct train service from Zürich HB and the strength of the local last-mile cold-chain courier network
  • Curated lists of luxury brands, Swiss private banks and premium-employer headquarters, matched by proximity

The specific sources behind each of these are kept private. The model only trusts a signal when several independent inputs agree on it.

How does it know the affluence of a neighborhood?

Six signals are combined into one affluence dimension: luxury-brand density in the immediate 200 m, private-bank presence, premium-employer headquarters within walking distance, the average price level of restaurants in the area, the federal household income at the Stadtkreis or municipality level, and the automated read of a recent street-level photograph.

The signal is intentionally U-shaped. Too touristy-luxury — Patek-tier shopping with no offices nearby — is wrong too. The sweet spot is rich-with-lunch-demand: professional districts with serious money and serious meal-break schedules. Bleicherweg, Bern Spitalgasse, Stadelhofen.

Does the model agree with your existing stores?

Yes — and it disagrees with one of them, which is how I know it's honest.

Running the same unbiased model on the existing 14 stores produces a strong-agreement signal (Spearman ρ = 0.72) between the model's rank and the Google Reviews count per store. Löwenstrasse, Bern Spitalgasse, Bleicherweg and Stadelhofen rise to the top quartile. Elias-Canetti-Strasse comes out at the bottom. The model says that one was a stretch.

I take that as the honest version of validation. A model that only ever agrees with the chooser is useless; this one earns the right to be trusted by also surfacing the picks that are weaker.

What's the surprising finding so far?

Bleicherweg — your flagship by review count — only ranked middle-of-pack until two signals were added: Stadtkreis-level married-household income, and automated analysis of the actual street photograph. The vision read at Bleicherweg returned professional_lunch_crowd, modern_premium building, UBS signage detected, affluence 85/100. Once both were in, Bleicherweg climbed to second of the existing 14. That is the kind of correction the model is designed to make — and the kind no spreadsheet can produce.

What about expansion beyond Zurich?

This is the real strategic question, and the answer changed my mind during the build.

With a single Altstetten kitchen and a 3-hour driving radius, the model says full national coverage caps around 18-20 stores. The Romandie and Tessin are mostly outside the window.

If Tiny Fish commits to rail-based delivery — passenger IC trains plus insulated cold-chain boxes plus a local bike-courier handover at the destination station, not SBB Cargo Express which is overnight-only — then Geneva, Lausanne, Basel, Bern, Lugano all enter the viable set. The 30-store plan stays on track from one kitchen.

I wrote you a one-page brief on this for the AGM. It compares three options: status quo van, a second kitchen at ~CHF 1m capex, or a 30-90 day rail pilot at ~CHF 30k. The recommendation is the pilot. The brief is in the project folder — happy to send it when you want.

What does the model recommend next?

Two things, in order:

1. Pilot rail delivery to one Geneva store for 30-90 days. Total downside ~CHF 30k. Upside opens up the 16 stores you couldn't reach with vans alone.

2. Let me extend this into a weekly digest — score every new commercial-lease listing that appears on Homegate against your operational filters, flag the ≥75-score ones for you and Diego ahead of broker visits, and refresh the dashboard every Monday morning.

Who built this?

Just me, in my evenings, since we had lunch on the 19th. The model itself, the data acquisition pipeline, this private dashboard — all of it.

Nothing fancy. Just the kind of thing software is good at, applied to the question that matters most for your next decade.

— Jonathan

Where Tiny Fish is today

The 14 existing stores plus the SV Group fridges, on a map. This is the footprint the model was honest-checked against.

Full store SV Group Fridge Altstetten kitchen

The 14 stores, scored honestly

Same model, applied to the stores you already chose. Vision-read of the actual street, signal triangulation, no preferential weighting. Spearman ρ = 0.72 against Google Reviews count.

loading…

Top candidate locations the model is converging on

Each row shows a real street-level photograph and the automated read of that photograph. The candidates the model penalises (cannibalisation, rail-only, drive-time fail) are surfaced at the bottom — not hidden.

loading…

Want me to push this further?

A weekly digest, the rail pilot brief, real top-3 recommendations for your next leasing visit — say the word and I'll keep building.

Yes, keep going →