vitrina.| Smart Supply Router
Supply — what's pickable this week
Open in Google Maps drive this route →
Order basket

Today's orders

Lines
Empty. Pick a scenario or add an order.
Order total €—
vs distributor · —
Run cost
Goods€—
Van + fuel€—
Driver€0
Drive time— min
Distance— km
Prepared scenarios

Pick a morning to run

Each one is a real morning Vitrina would face. The chef just says what they want; the model decides the route.

Modeling report

Is this an uber-scale business?

Smaller slice per basket. Cheaper to serve. Almost free to replicate.

That's the trade. We take less margin per chef on purpose — because we have no warehouse, no fleet, no salaried payroll to feed. What we lose in slice we more than win in volume × number of cities × no plateau. Three charts walk through it.

1 · Where the chef's €100 goes
same chef, same €100 paid · the boxes are different sizes in each model
Farmer Logistics Middleman
+€30
Farmer gets paid double. Our slice is small on purpose.

Distributor pays the farmer €40; we pay €70. Yes — our cut shrinks too. That's the trade. We don't need a fat margin because we don't have a warehouse, payroll, or fleet to feed. The next two charts are where our small slice turns into a big number.

live from simulator
2 · How much each chef costs to serve
left → right: more chefs in one city · up/down: cost to serve one of them · lower is better
Vitrina HORECA distributor Ocado CFC (B2C ref)
~€7
~€7 cheaper per chef. At every city size. Forever.

Distributor settles around €25/chef at scale (warehouse + cold room + picker + dispatcher + truck never go away). We settle around €18/chef. That €7 we save is what makes our smaller slice still pay off, on every single chef, in every single city.

distributor at scale ≈ €25/chef · vitrina at scale ≈ €18/chef · €7 gap × every chef × every city
3 · What it costs to open a new city
money spent before serving a single chef in that city
Vitrina Distributor Ocado CFC
15×
15 cities for the price they need for one.

Opening a new city costs us about €20K — one organiser, one month of rented vans, recruiting budget. The distributor needs ~€300K — warehouse lease, cold infra, two trucks, six months of ramp. If a city flops, we walk away in a month; they're stuck with a five-year lease.

vitrina ≈ €20K to open · distributor ≈ €300K to open · ocado ≈ €235M per region
So why does this win?

Thin slice × cheaper per chef × almost-free replication = a business that compounds without ever capping out. The distributor takes 30% per basket but can only serve one city at a time, with €300K of fixed plant burning before order one. Ocado takes 20% per basket but only at 21,000 orders/day — a HORECA chef is invisible to them. We take ~9% per basket, serve every chef €7 cheaper, and can be in 15 cities by the time they're in two. The slice doesn't have to be fat if the volume × footprint × replication speed is uncapped.

What would break this model: if we end up needing a cold warehouse at scale (the €7 gap closes), if wholesalers cut margins on contested corridors (gap halves), or if basket variance is much wider than the €150 average we used (low-end mornings miss the floor longer).

Today's morning math

Same model, zoomed to one basket. Does this morning clear its floor?

What we keep per kilo
€—
chef price €— minus farmer gate €— · average across our 30 commodities
What the morning costs us no matter what
€—
van rental + min driver booking + a little diesel · this is the floor for any morning, even one with 25kg in the van
Kilos needed to break even
— kg
floor ÷ per-kilo spread · this is the size a morning has to pass before any euro goes in our pocket

In plain words

Every kilo we move has the same shape: chef pays us, we pay the farmer, we keep the gap. The gap is small per kilo (a few coins) but it stacks. The morning costs us roughly the same whether we move 25 kilos or 1,000 — one van for the day, one paid driver, a bit of diesel. So the question is just: how many kilos clear the floor? Below that number we lose money. Above it, every extra kilo drops straight into gross profit.

The number moves with what's in the basket. A morning of cheap potatoes needs more kilos to clear the floor than a morning of expensive peppers. Long routes burn driver hours and diesel, which raises the floor; tight clusters lower it.

The nine mornings, scored

Each row is one scenario from the picker. The bar shows the estimated gross profit (or loss) per morning under today's anchors — Baovans van, TaskRabbit-grade hourly driver, gasolinera diesel. Click any row to load it into the simulator and see what the actual VROOM-routed numbers look like.

These are estimates based on a simple route heuristic so the report opens fast. Open a scenario and press Calculate for the exact figure with VROOM picking the route.

What this means for the next 6 months

  1. Today. Zero chefs on the route. Every morning loses money — there is nothing in the van to absorb the floor.
  2. Month 1–2. First two or three chefs. Mornings still lose roughly €100 each, but the loss is the cost of learning who orders what, when, and how picky they are about delivery windows. Founder driving keeps cash burn low while the calc still costs labour as if hired (so the model never lies to itself).
  3. Month 3–4. Six chefs in a clustered corridor → about 400 kg per morning. This is the break-even moment. Mornings stop losing money. Software starts earning its keep by batching the calls into a single route.
  4. Month 5–6. Eleven or more chefs spread across the city → about 1,400 kg in the van. Mornings throw off real gross profit. This is the point to raise. The story is no longer "we think this works" — it's "here are the routes, here are the receipts, fund the second van".

Why a wholesaler can't catch us as we scale

Wholesaler shape
  • Owns a warehouse, pays rent, payroll, refrigeration, waste, depreciation.
  • Adds capacity by adding more warehouse and more trucks.
  • Cost per order stays roughly the same — they already won the physical-handling game.
  • Their margin (~30% delivered) covers all of that, not their pocket.
Our shape
  • Owns no warehouse. Software finds the cheapest farm with the right product.
  • Picks up direct, drops off direct, same morning. No stock held.
  • Adds capacity by adding more chefs to the route — same van absorbs more orders.
  • Cost per order goes down with every chef we add. That's the only durable wedge.

We do not beat them at moving 50,000 kilos through a depot — they win that game forever. We win the opposite game: short batches of small farm-to-chef orders that a depot can't handle profitably. The simulator's job is to show, on real baskets, where the line between those two games sits.

Levers that change the break-even number

  • Average basket value. Cheap commodities (potato, onion) raise break-even toward 600 kg; expensive ones (asparagus, pepper, stone fruit) drop it under 250 kg.
  • Route shape. Tight clusters keep driver hours at the 4-hour minimum. Spread routes burn into 5–6 hour billing.
  • Vehicle phase. Today: spot-rented Baovans + hourly TaskRabbit-grade driver. Phase 2 (contracted driver-with-van living outside the city) drops the daily floor by roughly €60–100.
  • Farmer terms. If a real first-five-farm contract prices the farmer at MercaBarna × 0.65 instead of × 0.79, the per-kilo spread widens by about 40% and break-even drops in proportion.

Where the numbers come from

  • Value-chain shares (chart 1) — Vitrina column is the live, revenue-weighted average across the profitable scenarios in data/scenarios.json, computed by computeScenarioEconomics() in app.js (revenue at chef's price = vitrina_target_eur_kg; farmer cost at farm_gate_typical_eur_kg; logistics from estimateRouteCost() mirroring the simulator's van+driver+diesel charge). HORECA distributor shares from MAPA Observatorio de la Cadena de Valor (Spain, fresh produce: producer ≈ 35–45% of retail). Ocado-style B2C shares from the Ocado Group 2024 annual report + UK grocery norms (supplier share ≈ 55%, CFC fulfilment ≈ 25%, retailer margin ≈ 20%).
  • Vitrina van + driver + diesel anchors — Baovans c/Villarroel 58 daily rate (€75/day, May 2026); TaskRabbit Barcelona hourly rates (€27–36/h); MITECO live diesel feed (gasóleo A €1.71/L national avg, 2026-05-12). Phase-2 numbers (DFM frigo €95/day, autónomo TRADE €20/h, Northgate flexible renting ~€700/month) from Observatorio de Costes (MITMS Julio 2025) and Convenio Mercancías Barcelona 2025–26 tablas. Full dossier: company/notes/barcelona-fresh-logistics-2026-05/transport-economics.md.
  • HORECA distributor cost stack — Industrial cold-warehouse rent in Barcelona ~€8/m²/month (BCN logistics rental market, 2026); refrigeration energy ~€60/day base; Convenio Mercancías Barcelona conductor mecánico €175/day fully loaded; HORECA distributor margin ~30% delivered (MAPA Observatorio Cadena de Valor); waste 4% of GMV (industry typical). Distribution landscape context: company/notes/distribution-landscape-2026-05/spain.md.
  • Ocado-style B2C reference — Ocado Group 2024 annual report, Customer Fulfilment Centre economics: ~£200M capex per CFC, 150K orders/week mature throughput, ~£25/order steady-state operating cost. Used as a calibration line, not a competitor.
  • Mercabarna scale anchors — Mercabarna 2024 stats book: 1,079,100 t fruit/veg/year, 23,000 daily visitors, 14,000 daily vehicles, 600 firms, 90 ha. The wholesale-floor average price (€1.74/kg) underpins the basket math in the picker.
  • Average basket assumption — €150/order at ~55 kg per chef/morning, derived from the 9 picker scenarios and the catalog in data/products.json. Variance by basket composition is real and acknowledged in the caveats section above.
New order line

A chef called

kg
Decision breakdown

Last decision

What the chef saved
—
vs HORECA distributor on same kg
Vitrina gross profit
—
after farms, van, paid driver
Farmers vs MercaBarna gate
—
we pay parity by default; glut/DOP swings the delta
1

What we charged the chefs €—

Each line is quantity × Vitrina target price. Our target is MercaBarna wholesale × 1.15 — a 15% premium over the wholesale floor for delivery, 24–48h freshness, and traceability, still well under what a chef pays through a HORECA distributor (≈ MercaBarna × 1.30, MAPA observatorio). Each row shows the MercaBarna anchor inline so the math is auditable.

2

What we paid the farms (COGS) €—

We pay each farm the same per-kilo as MercaBarna's mayorista would — MercaBarna × 0.79 (1 − 21% mayorista margin, MAPA Observatorio Cadena de Valor). The farmer is indifferent between selling to MercaBarna or to us. Glut-clearance / pack-house drops sit at × 0.65, DOP-protected lines at × 0.88. Each row exposes the multiplier so you can audit it. The model picks the cheapest feasible farm combination that respects MOQs; VROOM 1.15 confirms the stop ordering.

3

What the morning cost us to operate €—

Three lines, all anchored to today's real-world quotes. Van is a Getaround spot in Eixample, billed hourly: €10/h with the meter capping around €60/day. We bill ceil(route hours × 1.5) hours per morning to cover van pickup, restaurant offloads and the return drop-off, capped at the daily — so a 3-hour drive bills 5h = €50, a 4-hour drive bills 6h = €60, and anything longer is still €60. The route always ends at the same address it started: the van must be dropped where it was picked up. Diesel is the variable piece, today's Spanish gasolinera average × the road distance OSRM returned (the rental absorbs tyres / wear / maintenance, so the per-km figure here is fuel-only). Driver is billed hourly at the TaskRabbit Barcelona handyman tier — €30/h, same shape as the van rental: ceil(route × 1.5) billable hours, no minimum-hours floor, so a 1-hour drive bills 2h not 4h. Buffer covers van pickup, offloads, and return drop-off. We always bill this line, even on mornings the founder is driving — otherwise the calc can't tell the difference between "this works" and "this works because someone is donating time".

Van rental €10/h hourly, ceil(drive × 1.5) billable hours, capped at €60/day —
Diesel — km × €0.13/km (≈9 L/100 km × €1.385/L gasolinera avg, 12 May 2026) —
Driver €30/h hourly, ceil(drive × 1.5) billable hours — scales with the route, no minimum floor —

Sources: van rate Getaround Barcelona (€10/h hourly, ~€60/day cap, verified May 2026 on the Eixample listings); diesel Spanish gasolinera average, 12 May 2026 (€1.385/L); driver hourly rate TaskRabbit Barcelona handyman tier (€27/h general, €33/h electrical, €36/h plumbing — €30/h used here for driver-with-load). These are starting anchors, not permanent assumptions — every lever and what would change it is documented in data/depot.json.

=

Gross profit €—

Revenue €— − COGS €— − Van+driver €— = €—

What's NOT deducted: founder salary, insurance, sales time, software amortisation — ~€2–4k/month of overhead lives above this line. The bridge to net is in stoyan-qa.md Part 10. What's anchored to today's quotes: Getaround hourly rental, Spanish gasolinera-average diesel, TaskRabbit-tier hourly hire (Peter drives the first few mornings himself; we still bill the labour line so the calc doesn't lie about what the morning takes). Levers that would move these numbers — fixed driver-with-van living outside the city, isotermo / frigo van class, volume contracts at the rental yard — are listed in data/depot.json.

The bet

Vitrina vs the chef's normal supply chain

Through their HORECA distributor (the status quo)
Chef pays distributor ≈ MercaBarna × 1.30 (MAPA observatorio)€—
Distributor margin ≈ 30% — covers fleet, staff, depot, depreciation€—
Total channel spread chef price minus farmer gate; not net profit€—
Goes to the farmer MercaBarna × 0.79 — mayorista buy price€—
With Vitrina (what this simulator just did)
Chef pays Vitrina MercaBarna × 1.15 — 15% over wholesale floor€—
Vitrina gross margin after farms + van + paid driver€—
Goes to the farmers same as mayorista — farmer is indifferent€—

—

The ~30% HORECA-distributor margin and ~21% mayorista margin are sector averages from MAPA Observatorio Cadena de Valor (Spanish vegetables). Both vary by SKU, season, and channel. We're comparing what each side captures on a delivered basket, not what each side nets after fixed costs. We do not estimate MercaBarna's warehouse rent, payroll, waste, or depreciation per order here, because those costs are not visible at basket level and would give a false precision. MercaBarna and the wholesalers almost certainly win on physical handling cost per kilo. The useful question for this simulator is different: on this exact order, how much spread exists between farmer gate and the chef's delivered price, and can Vitrina cover its own farms, van, driver, and still leave the chef better off?

→

The route VROOM picked —

    —
    ⋯

    Other combinations the model considered

    Every feasible combination of farms was evaluated in-browser (capped at 1500), then VROOM 1.15 confirmed the stop ordering for the winner. Below is the full ranked list — winner first. They render as faint grey ghost lines on the map; this list shows the full € tally per combination.

    Add / edit stock