I wanted a dinner recommendation and got a research agenda instead. Using 13000+ restaurants, I rebuild its ratings with machine learning and map how algorithmic visibility actually distributes power.
The "I scraped every single restaurant in Greater London..." needs amending to "I scraped restaurants in Greater London that Google Maps has labelled with a knife and fork." Quite a few restaurants and takeaways somehow fail to make the cut.... possibly because they haven't lined Google's pockets in some way?
And something else is going on... the total absence of Chinese restaurants on Gerrard Street would indicate there is another data issue?
Vegetarian is a different field, since many "cuisines" can be vegetarian but you don't want to remove a veggie Indian restaurant from the Indian Cuisine list
Being food-obsessed in NYC, I find this project interesting and wanted to understand the logic better. If I understood correctly, your model identifies rating anomalies by predicting a baseline rating from structural characteristics: cuisine, neighborhood, price point, review volume, chain vs. independent, etc. That feels analogous to valuing stocks based on fundamentals. The difference is that fundamentals have a plausible causal relationship to stock prices, whereas I’m not convinced these structural features have much predictive power for the rating of any individual restaurant.
For example, suppose Thai restaurants in Brooklyn with ~$25 per-person prices and ~300 reviews average 3.5 stars. The model would predict that similar restaurants “should” be around 3.5. But in practice, I’ve never seen a stable correlation between those kinds of features and the actual rating outcome for a specific place. Ratings behave idiosyncratically; they don’t cluster tightly by cuisine × neighborhood × price in the way the model presumes.
A second thing I’m still unsure about is the relationship you draw between visibility and ratings. And this is where the distinction between commoditized and subjective goods matters. For commoditized services, like taxis, visibility can create a pure “fame breeds fame” loop because consumers don’t differentiate much between providers. But restaurants are highly subjective, and the more people you expose a restaurant to, the more heterogeneous the reviews get. Visibility certainly increases review counts, but I don’t see evidence that it increases ratings. In fact, ratings tend to become extremely sticky once you get into the high hundreds or thousands of reviews. A place with 1,200 reviews and a 3.0 average is effectively locked there; it won’t climb to a 4.0. And Google Maps heavily surfaces “top rated,” which tends to favor already-high-rated but low-volume places. So I’m not sure the Matthew Effect applies cleanly here.
If I did follow your methodology correctly, I have a suggestion. The same process might be far more powerful if applied to prices instead of ratings. Pricing actually does correlate with structural variables: cuisine, neighborhood, review volume, even rating. A baseline price model would let users identify underpriced or overpriced restaurants, which is incredibly useful in NYC where menus are exploding upward. It would also help restaurant owners calibrate their pricing relative to the local market.
Thank you for this feedback! this is very helpful, let me give a shot at addressing some of these.
Re, whether structural features meaningfully predict ratings. You're right that ratings are noisy, subjective, and idiosyncratic. The goal of my model isn’t to estimate “true quality,” but to approximate Google’s own rating-generation process using only platform-visible features: review volume (log-scaled), price level, chain vs. independent, cuisine, venue type, and spatial grid. (This is also mainly due to data availability, but I’m working on expanding this!). In other words, the baseline at the moment is not causal; it’s a descriptive conditional expectation. Even with all the noise, the model captures quite a bit structure to produce systematic, non-random residuals.
Re, visibility and the Matthew Effect. I fully agree: visibility increases volume, not necessarily average rating. And once a place crosses a few hundred reviews, its rating becomes extremely sticky. The cumulative-advantage loop I describe isn’t “visibility increases scores,” but: visibility → review velocity → “prominence” signals → ranking probability → more exposure. So the Matthew Effect is in attention and survival, not in raising scores.
Re, your price-model suggestion. This is an excellent idea. Prices correlate much more strongly with structural variables (cuisine, location, brand strength, rating, footfall) than ratings do. A baseline price model: would yield a useful measure of under/overpricing, and the signal-to-noise ratio would be far stronger than with ratings. I’ll look into this, if I have the data.
Overall, I’m busy making my code available, so also feel free to work on this if of interest:)
Great post! There are four effects you may be unaware of, that might affect your map:
1. Many chain restaurants game the system by offering incentives to staff to get their name in positive reviews - you can see this where a given venue's last five reviews say something like "fabulous service from Domingo tonight!!" The incentive is usually something like a monthly prize for the staff member with the most mentions.
2. Some chain restaurants offer customers an incentive to leave a positive review on-site - I'm thinking of a chain of famously gaudy pseudo-Italian restaurants who give a free dessert to customers leaving a 5-star review in front of the waiter.
3. A smaller number of restaurants pay for fake reviews - the tell is an unusually high number of 5-star reviews with no comment or photos, or absurdly over-the-top positive reviews, or reviews from people who have only left one review in their account history. A couple of quite well-known London restaurants do this.
4. There is a scam (documented in London Centric) whereby users are contacted via Telegram to leave 5-star reviews for restaurants in return for a $5 payment, in which the restaurant is not involved at all.
Separately, if you want some more data sources then Michelin Guide, the National Restaurant Awards, TimeOut, La Liste and Andy Hayler's blog should all be scrapable.
Thank you for this, that's very insightful and helpful for further revisions to the dashboard. Will also look into adding these further data sources - really helpful.
"One London Centric reader in the high-end London food business insisted "the restaurants aren't involved and never asked for it" but said everyone is baffled by what's going on. The Ritz and other affected venues either declined to speak on the record or did not reply to a request for comment. There is no suggestion that any of them are paying for positive online coverage.
But what’s intriguing is that real people genuinely are being paid real money for leaving these five-star reviews. London Centric has discovered the play behind the play – and how it’s the first stage of a fast-growing form of fraud called a “task scam”, in which London’s top-end restaurants are just the subject of unwitting collateral damage."
Elsewhere, those non-visible 'chain restaurants' encourage employees at one to review the other... TripAdvisor, for instance, likes to think it can spot that and filter them out.
Whereas, the other thing that outlets do to mitigate, the 'personal' replies from the manager of the day... it lowers the 'harm' and boosts the 'good' from reviews.
But then - all be it an actual hotel 'review' - where the guest's review complained that his room carpet was the same as last year's stay... and the hotel was literally 30 months old. Customers are often stupid. : )))))))
Super cool work! One thing I've always wondered: how do ratings across towns compare? My personal experoence has always been that a 4,5⭐ restaurant in e.g. Florence means you're in for something amazing, whereas a 4,5 rated restaurant in e.g. Cologne is merely good. Are ratings a feature of how competitive the local restaurant scene is? Are Italians just more critical? How does such an effect establish itself (if it exists)?
Good question - something I often wonder too actually! Next project:) Italians do have high standards and since they offer roughly similar products in most Florentine restaurants it is also very competitive I would say.
Something I learned when researching a holiday to Japan is that Google Maps is used by both tourists and locals. Tourists tend to rate using the "5 stars if I liked it, dock stars if there were major issues" method, and Japanese people tend to rate using the "3 stars if it met my expectations (which could be extremely high if it is an amazing restaurant), 4 stars if it was mind blowing and I expected mediocrity, 5 stars if it cured my mother's cancer" method.
In Europe if I see something has 3.6 stars I'll avoid it. In Japan if it had 3.6 stars and I saw that a lot of the reviews are translated from Japanese, I knew it would be at the very least pretty great and could be sensationally good.
So very cool. I never would have encountered this kind of analyst without the internet. Come to think of it, how -did- I encounter it? Substack is playing its own prominence game, isn't it.
It occurs to me that The algorithm at play here is close cousin of Page rank, isn't it, with some of the same self-reinforcing dynamics. It seems to me that there is a certain logic to more popular places more prominent. But it totally crushes one's ability to find something novel. And really challenges latecomer restaurants. That's why making it possible to factor out the effects of the prominence algorithm seems so useful, or at least desirable. This could be a helpful counter to the power of big tech's algorithms.
I wonder if there's a commercial opportunity here--a kind of Whole Earth Catalog for the age of AI. I'd love to see this for NYC, where I live.
I completely agree! It still needs a lot of work - but it would be absolutely great to turn this into a commercial opportunity. All feedback on how to do this is welcome:) NY could be a great next step.
You might explore a relationship with a local magazine that reviews restaurants. The New Yorker does, for instance, as does Timeout <insert city here>. If I have other ideas I'll let you know.
FYI, Matt Stoller of Substack BIG noticed your article and your project. This is good for you and for everybody in London who eats ... and hopefully good for everybody who struggles against the stacked "visibility" game that platforms play.
Hey, do you have a git repo you can share? I'd be interested in trying this for my city (with attribution). I'm most curious about your scraping strategy.
Great question - technically it's not hard, but practically a bit of pain. The pipeline is general, but the full sweep of London already took most of my free tier, so the costs would be quite high and serving multiple big maps might add up to. Would love to this though and collaborate with others to make this happen!
Of course restaurants/businesses can also pay Google for visibility - which makes the bias even worse, and if it become necessary to be seen then the capital drain from the area could be sizable - just as Google wants it.
PS. Is an LLM being used to categorize the restaurants into "Cuisines"? If so it is missing many (it is the biggest category) - clicking on a few "Unknowns", you can see Luigi's, Taj Grill, Khyber, Shezan... ones that humans can easily categorize.
What counts as American cuisine? Are we talking fast food hamburgers and such? Or are we talking traditional American cuisines — Cajun, Southern, Soul Food, New England, Californian, etc.? Also, would you include Mexican, Central American, and South American cuisines as "American"?
I kinda hate that it didn't even occur to me how much algo bias there is in using Google Maps.
Love this idea and superbly executed.... BUT...
The "I scraped every single restaurant in Greater London..." needs amending to "I scraped restaurants in Greater London that Google Maps has labelled with a knife and fork." Quite a few restaurants and takeaways somehow fail to make the cut.... possibly because they haven't lined Google's pockets in some way?
And something else is going on... the total absence of Chinese restaurants on Gerrard Street would indicate there is another data issue?
Thanks! Certainly room for improvement still - I'll be revising this based on feedback, so happy to adjust for any missing data/bugs you can find.
great work! can you add vegetarian
Vegetarian is a different field, since many "cuisines" can be vegetarian but you don't want to remove a veggie Indian restaurant from the Indian Cuisine list
Being food-obsessed in NYC, I find this project interesting and wanted to understand the logic better. If I understood correctly, your model identifies rating anomalies by predicting a baseline rating from structural characteristics: cuisine, neighborhood, price point, review volume, chain vs. independent, etc. That feels analogous to valuing stocks based on fundamentals. The difference is that fundamentals have a plausible causal relationship to stock prices, whereas I’m not convinced these structural features have much predictive power for the rating of any individual restaurant.
For example, suppose Thai restaurants in Brooklyn with ~$25 per-person prices and ~300 reviews average 3.5 stars. The model would predict that similar restaurants “should” be around 3.5. But in practice, I’ve never seen a stable correlation between those kinds of features and the actual rating outcome for a specific place. Ratings behave idiosyncratically; they don’t cluster tightly by cuisine × neighborhood × price in the way the model presumes.
A second thing I’m still unsure about is the relationship you draw between visibility and ratings. And this is where the distinction between commoditized and subjective goods matters. For commoditized services, like taxis, visibility can create a pure “fame breeds fame” loop because consumers don’t differentiate much between providers. But restaurants are highly subjective, and the more people you expose a restaurant to, the more heterogeneous the reviews get. Visibility certainly increases review counts, but I don’t see evidence that it increases ratings. In fact, ratings tend to become extremely sticky once you get into the high hundreds or thousands of reviews. A place with 1,200 reviews and a 3.0 average is effectively locked there; it won’t climb to a 4.0. And Google Maps heavily surfaces “top rated,” which tends to favor already-high-rated but low-volume places. So I’m not sure the Matthew Effect applies cleanly here.
If I did follow your methodology correctly, I have a suggestion. The same process might be far more powerful if applied to prices instead of ratings. Pricing actually does correlate with structural variables: cuisine, neighborhood, review volume, even rating. A baseline price model would let users identify underpriced or overpriced restaurants, which is incredibly useful in NYC where menus are exploding upward. It would also help restaurant owners calibrate their pricing relative to the local market.
Thank you for this feedback! this is very helpful, let me give a shot at addressing some of these.
Re, whether structural features meaningfully predict ratings. You're right that ratings are noisy, subjective, and idiosyncratic. The goal of my model isn’t to estimate “true quality,” but to approximate Google’s own rating-generation process using only platform-visible features: review volume (log-scaled), price level, chain vs. independent, cuisine, venue type, and spatial grid. (This is also mainly due to data availability, but I’m working on expanding this!). In other words, the baseline at the moment is not causal; it’s a descriptive conditional expectation. Even with all the noise, the model captures quite a bit structure to produce systematic, non-random residuals.
Re, visibility and the Matthew Effect. I fully agree: visibility increases volume, not necessarily average rating. And once a place crosses a few hundred reviews, its rating becomes extremely sticky. The cumulative-advantage loop I describe isn’t “visibility increases scores,” but: visibility → review velocity → “prominence” signals → ranking probability → more exposure. So the Matthew Effect is in attention and survival, not in raising scores.
Re, your price-model suggestion. This is an excellent idea. Prices correlate much more strongly with structural variables (cuisine, location, brand strength, rating, footfall) than ratings do. A baseline price model: would yield a useful measure of under/overpricing, and the signal-to-noise ratio would be far stronger than with ratings. I’ll look into this, if I have the data.
Overall, I’m busy making my code available, so also feel free to work on this if of interest:)
Great post! There are four effects you may be unaware of, that might affect your map:
1. Many chain restaurants game the system by offering incentives to staff to get their name in positive reviews - you can see this where a given venue's last five reviews say something like "fabulous service from Domingo tonight!!" The incentive is usually something like a monthly prize for the staff member with the most mentions.
2. Some chain restaurants offer customers an incentive to leave a positive review on-site - I'm thinking of a chain of famously gaudy pseudo-Italian restaurants who give a free dessert to customers leaving a 5-star review in front of the waiter.
3. A smaller number of restaurants pay for fake reviews - the tell is an unusually high number of 5-star reviews with no comment or photos, or absurdly over-the-top positive reviews, or reviews from people who have only left one review in their account history. A couple of quite well-known London restaurants do this.
4. There is a scam (documented in London Centric) whereby users are contacted via Telegram to leave 5-star reviews for restaurants in return for a $5 payment, in which the restaurant is not involved at all.
Separately, if you want some more data sources then Michelin Guide, the National Restaurant Awards, TimeOut, La Liste and Andy Hayler's blog should all be scrapable.
Thanks again for an interesting piece!
Thank you for this, that's very insightful and helpful for further revisions to the dashboard. Will also look into adding these further data sources - really helpful.
Link to the London Centric report mentioned above: https://www.londoncentric.media/p/whos-paying-for-fake-five-star-reviews
"One London Centric reader in the high-end London food business insisted "the restaurants aren't involved and never asked for it" but said everyone is baffled by what's going on. The Ritz and other affected venues either declined to speak on the record or did not reply to a request for comment. There is no suggestion that any of them are paying for positive online coverage.
But what’s intriguing is that real people genuinely are being paid real money for leaving these five-star reviews. London Centric has discovered the play behind the play – and how it’s the first stage of a fast-growing form of fraud called a “task scam”, in which London’s top-end restaurants are just the subject of unwitting collateral damage."
Elsewhere, those non-visible 'chain restaurants' encourage employees at one to review the other... TripAdvisor, for instance, likes to think it can spot that and filter them out.
Whereas, the other thing that outlets do to mitigate, the 'personal' replies from the manager of the day... it lowers the 'harm' and boosts the 'good' from reviews.
But then - all be it an actual hotel 'review' - where the guest's review complained that his room carpet was the same as last year's stay... and the hotel was literally 30 months old. Customers are often stupid. : )))))))
Would love to hear more about hexagons & edge effects!
Esri has a helpful explanation in their Spatial Statistics reference: https://pro.arcgis.com/en/pro-app/3.4/tool-reference/spatial-statistics/h-whyhexagons.htm
Super cool work! One thing I've always wondered: how do ratings across towns compare? My personal experoence has always been that a 4,5⭐ restaurant in e.g. Florence means you're in for something amazing, whereas a 4,5 rated restaurant in e.g. Cologne is merely good. Are ratings a feature of how competitive the local restaurant scene is? Are Italians just more critical? How does such an effect establish itself (if it exists)?
Good question - something I often wonder too actually! Next project:) Italians do have high standards and since they offer roughly similar products in most Florentine restaurants it is also very competitive I would say.
Something I learned when researching a holiday to Japan is that Google Maps is used by both tourists and locals. Tourists tend to rate using the "5 stars if I liked it, dock stars if there were major issues" method, and Japanese people tend to rate using the "3 stars if it met my expectations (which could be extremely high if it is an amazing restaurant), 4 stars if it was mind blowing and I expected mediocrity, 5 stars if it cured my mother's cancer" method.
In Europe if I see something has 3.6 stars I'll avoid it. In Japan if it had 3.6 stars and I saw that a lot of the reviews are translated from Japanese, I knew it would be at the very least pretty great and could be sensationally good.
So very cool. I never would have encountered this kind of analyst without the internet. Come to think of it, how -did- I encounter it? Substack is playing its own prominence game, isn't it.
It occurs to me that The algorithm at play here is close cousin of Page rank, isn't it, with some of the same self-reinforcing dynamics. It seems to me that there is a certain logic to more popular places more prominent. But it totally crushes one's ability to find something novel. And really challenges latecomer restaurants. That's why making it possible to factor out the effects of the prominence algorithm seems so useful, or at least desirable. This could be a helpful counter to the power of big tech's algorithms.
I wonder if there's a commercial opportunity here--a kind of Whole Earth Catalog for the age of AI. I'd love to see this for NYC, where I live.
Thanks for sharing this!
I completely agree! It still needs a lot of work - but it would be absolutely great to turn this into a commercial opportunity. All feedback on how to do this is welcome:) NY could be a great next step.
You might explore a relationship with a local magazine that reviews restaurants. The New Yorker does, for instance, as does Timeout <insert city here>. If I have other ideas I'll let you know.
Thanks a lot!
FYI, Matt Stoller of Substack BIG noticed your article and your project. This is good for you and for everybody in London who eats ... and hopefully good for everybody who struggles against the stacked "visibility" game that platforms play.
Hey, do you have a git repo you can share? I'd be interested in trying this for my city (with attribution). I'm most curious about your scraping strategy.
Hey - I'll soon when I have some time make my git repo public (hopefully in the next week or so). I'll update via Substack and GitHub!
Is it a lot of work to add new regions? Any way to leverage / enlist remote assistance for that?
Great question - technically it's not hard, but practically a bit of pain. The pipeline is general, but the full sweep of London already took most of my free tier, so the costs would be quite high and serving multiple big maps might add up to. Would love to this though and collaborate with others to make this happen!
This is amazing!
Great work! Thank you for posting.
Of course restaurants/businesses can also pay Google for visibility - which makes the bias even worse, and if it become necessary to be seen then the capital drain from the area could be sizable - just as Google wants it.
PS. Is an LLM being used to categorize the restaurants into "Cuisines"? If so it is missing many (it is the biggest category) - clicking on a few "Unknowns", you can see Luigi's, Taj Grill, Khyber, Shezan... ones that humans can easily categorize.
I agree - google earns a lot of money of this, but couldn’t find exact numbers!
Currently the classifier is very simple (just dictionary based), future improvements should include a slightly more sophisticated LLM classifier:)
Fantastic article! I'm not into ML myself but I'm going to try to share this with people who are and see if we can get one going for Houston.
This is excellent!! Also, Oi Vita is one of my favourite restaurants in London. Great find!!
What counts as American cuisine? Are we talking fast food hamburgers and such? Or are we talking traditional American cuisines — Cajun, Southern, Soul Food, New England, Californian, etc.? Also, would you include Mexican, Central American, and South American cuisines as "American"?
Good points and still to be tweaked:) I have made all code open on my GitHub and hope that someone will add this!