How does this list get its order?
Every Spinach list is computed daily, not hand-curated. The same code that powers the mobile app generates these pages — one source of truth, same order on both surfaces. Here's what gets measured and how the order falls out.
What kinds of lists you'll see
- The 15 EssentialA city's flagship list. The places you should know about before you book a flight.
- Signature dishesWhat this city does better than other cities. Top three dishes per hub, picked by relative strength across the network of 158 cities.
- 14 themed categoriesHidden Gems, Coffee Masters, Worth the Occasion, and more. Each list has its own filter and weighting; click "How we rank" on any list page for the per-category breakdown.
- Best-of-dish listsFor each dish — pizza, ramen, pierogi, francesinha — the venues across a city ranked by how well they make that one dish, regardless of the rest of the menu.
What signals go into the rank
Each list combines these in different proportions — the 15 Essential leans on overall rating, signature dishes lean on dish quality, Hidden Gems penalise high review volume on purpose. The list-level weighting is on each list page; the inputs below are universal.
- Spinach ratingWilson-confidence-bounded average of food-quality reviews. Penalises low-volume venues so a single 5-star rating doesn't outrank a 4.6 with 200 reviews.
- Signature dish strengthPer-venue, per-dish quality derived from review language. Lets a place with a mediocre menu but incredible vegan ramen rank where it should.
- Vegan FriendlinessA → E grade computed server-side from menu labelling, vegan options, staff knowledge, and warnings. Used as a friction signal, not a quality signal.
- Review depthRecency and volume. A venue rated three years ago doesn't carry the same weight as one rated last week.
Three things we don't do
Ranks are not for sale. No promoted slot, no "featured" toggle, no quiet boost for partners. If a venue is on a list, it earned the spot.
We don't pin restaurants to the top because we like them, and we don't bury places we don't. The formula runs daily; whatever it says, ships.
Mobile and web read the same calculated columns. If you see a venue at #1 on the app, that's the same #1 you'll see here. No A/B test on the order.
Where the data comes from
Raw signals: Google Maps and HappyCow reviews, OCR'd menus, and structured venue metadata (hours, cuisine tags, price). Our pipeline extracts vegan-specific signals — vegan options, protein sources, staff knowledge, labelling — and writes them to Postgres. Score and grade are computed by a Postgres trigger; clients read the stored columns.
Refreshed daily at 4 AM UTC. The same data drives mobile, web, and any future surface — see the Vegan Friendliness page for how the A–E grade is built.