How Food Listers documents global cuisine and ranks dishes on the map.
Mission
Food Listers is built to promote and share global cuisine. We believe
food can bring people together, create cultural understanding, and
highlight the beauty of traditions outside our own. Our goal is to
document the world’s dishes in one place and make discovery easy
through a map-first experience.
Data Sources
The base dish catalog was built by extracting and consolidating
cuisine lists from Wikipedia at scale, including pages like
https://en.wikipedia.org/wiki/List_of_Spanish_dishes
. Records were deduplicated and cross-verified across sources
to reduce errors, with internal manual QA checks reporting error rates
below 1% on sampled records.
After building the canonical list, we enriched rows by scraping
structured and semi-structured food metadata from public food
references, including AtoZ World Food, TasteAtlas, and other
comparable sites, then normalized these fields into a single schema
for ranking and mapping.
How Dishes Are Ranked
Each dish is ranked from a vote profile containing likes, neutral
votes, and dislikes. These aggregates are seeded from the initial
dataset and continue to update as community voting data is
incorporated.
Step 1: We convert vote sentiment to an NPS-style base score out of
10.
NPS = Like% - Dislike% Score = (NPS + 100) / 20
Step 2: We apply Bayesian averaging with vote count to reduce
low-sample bias.
weighted = (v / (v + m)) * R + (m / (v + m)) * C
Where R is the dish score, v is vote count, C is the global mean score, and m is the Bayesian prior weight.
This prevents dishes with very high scores but very low vote counts
from dominating the ranking.
Step 3: We scale the Bayesian score to the production range and store
it as
ranked_score (out of 10), then convert it to a 5-star value.
star_rating = ranked_score / 2
Final ordering is deterministic and sorts by higher ranked_score, then higher
TotalCount on ties.
What We Show on the Map
To create the interactive map, we process the full dataset into both a
sidebar dataset and a map tileset.
| Step | Result |
| 1. Consolidated source records | 10,833 total dish records |
| 2. Deduplicate by location |
Many dishes share the same coordinates (often country-level
origins). We keep the highest-ranked dish as the primary map
point and attach a count of additional dishes at that
location.
|
| 3. Final map layer |
2,055 unique map points render on the map; all 10,833 dishes
remain available in the sidebar and filters.
|
Dish Categories
We group raw dish types into higher-level categories used in map
filters. This keeps navigation readable while preserving detail in the
underlying taxonomy.
| Category Group | Sample Subcategories |
| Meat Dishes | Beef Dish, Chicken Dish, Lamb Dish, Sausage, Barbecue |
| Seafood | Fish Dish, Crab Dish, Oyster Dish, Shrimp/Prawn Dish, Seafood |
| Noodles & Pasta | Rice Dish, Noodle Dish, Pasta |
| Sandwiches & Burgers | Sandwich, Burger, Wrap, Hot Dog |
| Soups & Stews | Soup, Stew, Noodle Soup, Seafood Soup |
| Desserts & Sweets | Cake, Cookie, Pastry, Sweet Pie, Ice Cream |
| Breads | Bread, Flatbread, Rye Bread, Corn Bread |
| Appetizers | Appetizer, Side Dish, Cheese Dish |
| Dumplings & Pastries | Dumplings, Savory Pie, Savory Pastry, Phyllo Pastry |
| Salads & Vegetables | Salad, Vegetable Dish, Vegan Dish, Bean Dish |
| Sauces, Dips & Condiments | Sauce, Dip, Salsa, Dressing, Relish |
| Street Food & Snacks | Street Food, Snack, Deep-fried Dish, Pizza |
| Breakfast Dishes | Breakfast, Pancake, Egg Dish |
| Comfort Foods | Casserole, Porridge |
| Specialty & Traditional Foods | Technique, Beef Cut, Insect Dish, Snail Dish |
Dish Origin Assignment
Country origin is assigned by cross-verifying structured origin data
across Wikipedia and Wikidata. Historical entities (for example,
“Russian Empire” or “Ming Dynasty”) are mapped to modern equivalent
countries for consistent filtering and map behavior.
When sources conflict, priority is given to structured Infobox-style
data. In approximately 95% of records, source agreement is direct.
Voting Integrity
As of February 18, 2026, the active corpus contains 366,364 validated
votes across all 10,833 dishes in the dataset. Total raw vote events
logged across ingestion and community activity exceed 2 million.
The integrity layer uses rule-based filtering to identify and exclude
invalid voting patterns, including bot behavior, nationalist
brigading, and statistically unreasonable rating activity. Rating
impact can be weighted by user trust signals so contributions from
more reliable, knowledgeable profiles carry greater influence.