KaleMap

How it works

The premise: the vegan food problem is not scarcity, it is labelling. Most cities have hundreds of restaurants where a vegan can eat well, and almost none of them advertise it.

1. The map

Every place starts as an OpenStreetMap entry. OSM carries explicit diet:vegan and diet:vegetarian tags contributed by people on the ground, which is the best open vegan dataset that exists. We import restaurants, cafes, fast food, bakeries and juice bars, and we keep the OSM id, so an update upstream updates here.

2. The menu

If the restaurant publishes a menu, we fetch it, respecting robots.txt and at a polite rate. The text is then read by a language model that classifies every dish as vegan, vegan if you ask, not vegan, or unclear, and says why in one line.

That verdict is a reading of a menu, and we never present it as more than that. It says "read from the menu, not confirmed" until a human touches it.

3. The people

Members confirm or reject each dish, add dishes the menu never listed, rate places as vegans rather than as food critics, save places, and add restaurants the map is missing. Human confirmation always outranks the model in both the label and the ranking.

4. Chains

A Chipotle's website is a store locator and Starbucks blocks crawlers, so the menu reader gets nothing from them, yet they are where a travelling vegan most often ends up. For a short list of big chains we carry the chain's own published vegan options and apply them to every location, labelled "from the chain's standard menu, check this location". The list is deliberately conservative: anything that needs a modification is "vegan if you ask", each chain is limited to the countries where the entry holds (the McPlant is vegan in the UK and not in the US), and a location whose own menu we managed to read keeps that reading instead.

Opening hours

"Open until 10pm" and the week table come from OpenStreetMap's opening hours. Local time is estimated from the map position, not from a timezone database, so it is approximate and the page says so. When the hours use a rule we cannot read, we show what we could parse and say the rest was not readable, rather than guess.

What the labels mean

What this is not

It is not an allergy tool. Cross contamination does not appear on a menu, and no model can see a shared fryer. Use this to find candidates and then ask the kitchen.