Scoring
How the number works.
Every check-in produces a WingScore. Every WingScore contributes to a restaurant's aggregate. Here's the math — no mystery, no algorithm you can't read.
The WingScore
WingScore is a weighted average of the five criteria. The weights are fixed and opinionated — they reflect what actually makes wings good or bad:
| Criterion | Weight | Why |
|---|---|---|
| Sauce | 29% | Flavor quality and execution — the most diagnostic criterion. |
| Crispiness | 29% | The skin. Tied with sauce; bad crispiness ruins good sauce. |
| Meat | 22% | Density, moisture, and pull. Less variable than the outside, but it counts. |
| Blue Cheese | 10% | Optional. If you order it and it's wrong, it matters. |
| Celery | 10% | Optional. A small signal, but a committed one. |
Blue cheese and celery are optional. If you mark either N/A, their weights (10% each) are redistributed proportionally across the remaining criteria. A bone-in basket without celery re-normalizes to sauce 32.2%, crispiness 32.2%, meat 24.4%, blue cheese 11.1%.
The restaurant aggregate
One person's WingScore doesn't make a restaurant's ranking. CAFO uses a Bayesian average to produce the aggregate shown on the map and leaderboard.
aggregate = (n × avg + m × C) / (n + m)
n = number of ratings for this restaurant
avg= restaurant's raw average WingScore
m = minimum ratings threshold (5)
C = global mean across all restaurants (7.2)
In plain English: a new restaurant starts near 7.2 and earns its way to its true average as more people check in. This prevents one person from putting a place at the top of the map by logging a 10/10 on day one.
Example
A spot with 2 ratings averaging 9.5 gets: (2 × 9.5 + 5 × 7.2) / (2 + 5) = 7.7
A spot with 40 ratings averaging 8.8 gets: (40 × 8.8 + 5 × 7.2) / (40 + 5) = 8.6
The established spot ranks higher despite a lower raw average — because 40 opinions mean more than 2.
The heat color
Score pins and badge colors follow a five-stop gradient interpolated across the 1–10 range:
Color is strictly a visual aid — it maps the same score to the same color everywhere in the app, including map pins, score badges, and breakdown bars.