The rating system
The site shows sentiment at three levels — a whole restaurant, one dish at one restaurant, and a single Reddit comment — and each level rests on a very different amount of evidence. The design principle that ties the system together: display precision should scale with evidence. A restaurant score aggregates hundreds of rated mentions, so it earns a number. A dish group often rests on a handful of ratings, so it gets a coarse tier. A single mention is one person's (usually implied) opinion, so it gets a sentiment glyph. Three vocabularies, deliberately distinct so they can't be mistaken for each other:
- Restaurants: a score out of 10 ("8.7/10")
- Dishes: a tier word — Adored, Praised, Liked, or Mixed
- Individual mentions: an upvote-arrow glyph — ▲▲ rave, ▲ positive, ~ mixed, ▼ negative
Where ratings come from — and why they bunch
Almost no Reddit comment contains an explicit score. The extraction pipeline reads each comment and infers a 1–5 rating from its language — "the pastrami was incredible, worth every penny" becomes a 4.5; "it's fine I guess" becomes a 3. Every rating ships with a verbatim quote from the source comment as its receipt, so the inference is always checkable.
The single most consequential fact about this data: 82% of all inferred ratings are a 4. Reddit says "this place is good" constantly and grades on a curve rarely. The honest signal therefore lives mostly in the ranking — which places earn slightly more enthusiasm, slightly more often, from slightly more people — not in the absolute numbers, which compress into a narrow band. Nearly every display decision below follows from this fact.
Restaurant scores — hierarchical voices, then a curve
A restaurant's score is not a plain average. It's built in three stages:
- Voices, not mentions. All rated mentions of a restaurant within one comment chain collapse into a single "voice" (a viral thread praising a place fifteen times is one conversation, not fifteen independent endorsements). Voices are weighted by log-scaled upvotes, merged per post, and posts aggregate additively — so breadth across many discussions counts for more than depth within one.
- Bayesian shrinkage toward the global mean. Every restaurant's weighted average is pulled toward the site-wide average, with the pull strength set at three times the median evidence weight. This is what makes volume matter: before this prior was strengthened, a restaurant with 16 uniformly-positive mentions could outrank one with 359. Now the top of the "best" sort is populated by places with deep, repeated consensus.
- A percentile-anchored display curve. Because of the 82%-are-4s compression, raw shrunk scores land in a 3.9–4.2 sliver. The displayed /10 value maps the raw score through anchors on the live distribution: the median restaurant is always exactly 7.0, the 90th percentile ~8.3, the best ~9.8, the low tail down to 2. The mapping is monotone — it never changes any ranking, only spreads the display — and it recalibrates automatically whenever scores are recomputed.
A consequence worth owning: the scale reflects Reddit's actual consensus, not reputation. Beloved institutions the subreddit genuinely argues about land in the 6s — which is the point of the site.
Dish tiers — coarse on purpose
A (restaurant, dish) group is sparse: most have zero or one rating, and even popular dishes rarely break 50. Displaying "8.3 vs 7.9" on that evidence would be false precision — the difference is one enthusiastic commenter. So dishes get four tiers, assigned from a lower confidence bound of the shrunk average: the group's mean is blended with five phantom ratings at the global mean, then an uncertainty penalty (which shrinks as evidence grows) is subtracted. Tiers also carry minimum-evidence gates — Adored requires at least five ratings, Praised three, Liked two. A two-mention dish cannot reach the top tier no matter how glowing the two mentions are.
- Adored (~2% of rated groups) — high average and real volume: Katz's pastrami, 4 Charles' french dip, Minetta Tavern's chocolate soufflé.
- Praised (~5%) — strongly positive but thinner evidence, often a handful of unanimous raves.
- Liked (~12%) — solidly positive.
- Mixed (~5%) — the community genuinely disagrees. This tier surfaces Reddit's running controversies automatically: Ichiran's ramen, Corner Bistro's burger.
Groups below the evidence gates show no tier at all — just their mention count and quotes. Data shown, judgment withheld. Ranking on the dishes page uses the same confidence bound, so more evidence means a higher floor: a dish with forty 4.4-average ratings outranks three unanimous 5s.
Mention glyphs — sentiment, not fake numbers
Individual mention cards used to show the inferred rating as a number ("4.5"), which dressed an inference up as a fact the commenter never stated. They now show an upvote-arrow sentiment band — ▲▲ rave (4.5+), ▲ positive, ~ mixed, ▼ negative — with the exact inferred value kept in the tooltip for transparency. The arrow vocabulary is native to Reddit-sourced content, and the quote below each glyph remains the real evidence.
Helpfulness — what orders the mentions
Separate from sentiment, every rated mention carries a 0–3 helpfulness score answering one question: does this comment explain why the place deserved its rating? 0 = off-topic, 1 = bare endorsement ("it's great", a name in a list), 2 = names something concrete, 3 = genuinely explains — texture, comparisons, service details a reader learns from.
Scoring 313,000 mentions ran as a two-tier campaign: quotes under 16 words can't contain a detailed "why," so they were scored mechanically (2 if they name a dish or carry evaluative language, else 1), while the 76,000 longer quotes were each judged by an LLM against the rubric. Only ~2% of all rated mentions earn a 3 — and those lead every restaurant page.
The "Most helpful" ordering is then deliberately simple: helpfulness bucket first, upvotes within a bucket — both signals a reader can see. Sentiment plays no role, so a detailed pan outranks a contentless rave; the mention list is an honest picture, not a highlight reel. Restaurant pages additionally apply a quality floor: helpfulness-0 mentions never show, and the curated cut prefers mentions scoring 2+.