Methodology

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 & Poultry Dishes Beef Dish, Chicken Dish, Lamb Dish, Sausage, Barbecue
Seafood Dishes Fish Dish, Crab Dish, Oyster Dish, Shrimp/Prawn Dish, Seafood
Rice, Noodles & Pasta Rice Dish, Noodle Dish, Pasta
Pizza Pizza
Sandwiches, Burgers & Wraps Sandwich, Burger, Wrap, Hot Dog
Soups & Stews Soup, Stew, Noodle Soup, Seafood Soup
Desserts & Sweets Cake, Cookie, Pastry, Sweet Pie, Ice Cream
Bread & Flatbreads Bread, Flatbread, Rye Bread, Corn Bread
Appetizers & Side Dishes Appetizer, Side Dish, Cheese Dish
Dumplings & Savory Pastries Dumplings, Savory Pie, Savory Pastry, Phyllo Pastry
Salads & Vegetable Dishes Salad, Vegetable Dish, Vegan Dish, Bean Dish
Sauces, Dips & Condiments Sauce, Dip, Salsa, Dressing, Relish
Street Food & Snacks Street Food, Snack, Deep-fried Dish
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.