If you open Google, you’re probably seeing the same restaurants over and over—not because they’re the best, but because the algorithm already decided they’re “important.”
This map does something different. It looks at how restaurants typically perform given their location, cuisine, price, and review count, then highlights the ones doing way better than you'd normally expect.
Basically, it's showing you restaurants that deserve more attention than they're getting right now.
When you search for restaurants on Google Maps, what you see isn't neutral. Google ranks places using a mix of factors:
That last factor, prominence, is where things get tricky.
Prominence is influenced by how many reviews a place has, how often people click on it, whether it's part of a well-known brand, how long it's been around, and, in some cases, paid promotion. Once a restaurant becomes prominent, it gets more exposure. More exposure leads to more clicks and reviews, which makes it even more prominent.
It's a self-reinforcing loop.
That loop works well for already-popular restaurants. But it makes discovery harder, and often unfair, for newer, independent, or quietly excellent places that haven't had time to accumulate momentum.
This project does not try to answer:
"What are the best restaurants?"
Instead, it asks: "Which restaurants are doing unusually well given how visibility normally works?"
Let's use an example.
Imagine Google Maps only had 10 Thai restaurants, and they are all basically the same kind of place:
| Restaurant | Cuisine | Price | Reviews | Rating |
|---|---|---|---|---|
| A | Thai | $$ | 300 | 3.6 |
| B | Thai | $$ | 280 | 3.7 |
| C | Thai | $$ | 310 | 3.5 |
| D | Thai | $$ | 290 | 3.6 |
| E | Thai | $$ | 305 | 3.7 |
| F | Thai | $$ | 295 | 3.6 |
| G | Thai | $$ | 320 | 3.6 |
| H | Thai | $$ | 270 | 3.5 |
| I | Thai | $$ | 340 | 3.7 |
| J | Thai | $$ | 260 | 3.6 |
If you look at this, you'd naturally think:
"Okay... Thai restaurants with ~$25 prices and ~300 reviews usually sit around 3.6 stars."
That 3.6 is the thing the model later calls the expected rating.
No one is making a judgment. It's just the pattern from the data.
Now imagine another place:
| Restaurant | Cuisine | Price | Reviews | Rating |
|---|---|---|---|---|
| K | Thai | $$ | 290 | 4.4 |
Everything about K looks the same as A-J... except the rating.
Your brain immediately says:
"Whoa — this place is unusually good relative to similar places."
That "whoa" is the entire point. That intuition is the residual.
A +0.8 gap is huge in restaurant ratings.
"This place is +0.8 better than similar restaurants."
That's underrated in one line.
If you're like me, you want to continue reading and learning more, so don't worry, there's more for you:
Now scale that 10-restaurant example up to 500+ restaurants in Naperville. You can't eyeball it anymore.
We need something more advanced, and there's this thing called machine learning (ML) that could help us out with that. Here’s what the machine learning model does instead:
“Given everything I know about similar restaurants, I would have expected a rating around 3.6.”
But the actual rating is 4.4.
Residual = 4.4 − 3.6 = +0.8
That’s a large residual—meaning the restaurant is performing far better than the model would predict. It’s likely underrated!!!
Here is where it gets really interesting. The model does not look at only Thai restaurants or only reviews.
It looks at a bunch of things no human can simultaneously account for at the same time:
So the model does the averaging for you. In simple terms, the machine learning model automates this process by doing the following:
It then asks: "For places like this, what rating usually shows up?" That learned pattern becomes the expected outcome.
ML compresses millions of comparisons across many dimensions into a single "what's typical here" signal that humans can't compute reliably.
It is like comparing students fairly. A B+ in an advanced class might be more impressive than an A in an easier one. I am not ranking "best" — I am spotting who is doing surprisingly well given their context.
Raw review counts are misleading.
Humans behave this way. Google behaves this way.
If you use raw review count, 5 reviews vs. 500 reviews looks like a 100x difference. Chains dominate everything, and the model learns "more reviews = higher rating." That's wrong.
Log(review count) means:
So log-scaling prevents review volume from overwhelming all other dimensions. It keeps cuisine, location, type, and chain status relevant in the model.
Log-scaling review count prevents large, established restaurants from dominating by making early reviews matter more than late ones, which matches how credibility and attention actually work.
Without this step, chains overwhelm the model, "more reviews = better" becomes the only lesson, and the signal you actually care about disappears.
Normal ratings just show you where a restaurant ended up.
Residuals (the number we calculate) show you where a restaurant ended up compared to how similar places typically end up.
When you subtract the “what usually happens” number, random stuff cancels out:
But the things that remain visible are structural—like neighborhoods or restaurant categories that tend to get overlooked or overexposed.
Instead of seeing ratings alone, you start seeing patterns of visibility and attention.
Restaurants are fragile businesses. Many don’t last more than a few years. When discovery is dominated by algorithms that reward past success, it becomes harder for new or independent spots to survive long enough to be discovered at all.
Today, discovery is increasingly mediated by platforms whose incentives are not local. Algorithms tend to reward:
Once a restaurant falls behind in that system, it can be effectively invisible, even to people who live just a few blocks away.
That has broader implications than where we eat dinner. It affects:
These are questions city leaders, planners, and economic development teams should care about. Supporting small businesses isn’t just about permits or tax incentives, it’s also about how people discover what already exists.
This map isn’t meant to replace reviews, critics, or local word-of-mouth. It complements them by making discovery feel curious again instead of repetitive, and by giving good, under-the-radar places a better shot at being seen.
If it helps someone try a place they wouldn’t have otherwise found, and helps a good restaurant stay open a little longer, it’s doing its job.
I thought I would share this letter because I previously served on the Planning & Zoning Commission and remain grateful for that experience. Having been part of the process, I felt this was something worth pointing out. Not as criticism, but as "this is something you might want be aware of" as well as appreciation for the work the Commission does and the opportunity I was given to be involved.
It was a perspective I thought might be useful to share. And also, let's be honest. Most people email or talk to them to complain, so I also thought it would be nice to send a thank-you letter as well as perhaps, a few interesting thoughts to consider and keep in mind as they continue to help our city.
Dear Planning & Zoning Commission,
I hope you're all doing well.
I'm sharing this as a written comment for general awareness, not connected to any specific agenda item. I served on the Planning & Zoning Commission in 2019–2020 as a student representative, and I've found myself reflecting on that time more recently.
Serving on the Commission was genuinely formative for me. It was one of the first times I saw, up close, how much care and intention go into shaping the physical structure of a city—land use, zoning, traffic, density, and long-term patterns that most residents never think about day to day, but that quietly influence everything.
As I've gotten a little older, one thing I've started to notice more is how businesses can still struggle even when the physical framework is solid. One reason, I think, is something we don't often talk about explicitly: how people discover local businesses in the first place.
More and more, the way residents find restaurants and other small businesses is mediated by large platforms and algorithms. These systems tend to reward past success: places with more reviews, more clicks, more brand recognition get shown more often. Over time, this creates a feedback loop where attention concentrates on the same familiar businesses, while newer or independent ones—even when they're excellent—struggle to ever be seen.
Restaurants are just one slice of the local economy, but they're an important one. They drive foot traffic, shape the feel of commercial corridors, and often determine whether an area feels alive or hollow. And they're fragile. Many don't last more than a few years. When discovery quietly favors the already-visible, it becomes much harder for new efforts to survive long enough to be discovered at all, sometimes even by people who live a few blocks away.
Out of curiosity (and honestly, some concern), I created a project called the Naperville Underrated Food Map. The idea was simple: instead of asking "what's already popular?", I wanted to ask which places seem to be quietly doing better than you'd expect given how little attention they get.
I used machine learning, which is essentially teaching a computer what a "typical" restaurant looks like based on things like reviews, ratings, and location, then surfacing the places quietly outperforming that baseline. In practice, it also makes discovery feel curious again instead of repetitive.
Here's the link, in case it's helpful context: https://www.juandavidcampolargo.com/projects/naperville-food-map
I wanted to share this because it made me realize something I didn't fully appreciate when I was serving: even when we get the physical environment right, businesses still live or die based on whether people can find them.
Discovery is becoming a structural issue, and it has started to feel like a kind of soft infrastructure, not something governed locally, but something that has very real local consequences.
For example, restaurants are fragile. Many open with everything on the line and quietly close a few years later, often without most residents ever knowing they existed. When discovery increasingly rewards past success and visibility over effort and quality, it becomes harder for new businesses to survive long enough to become part of the fabric of a place.
That matters beyond food. It affects which storefronts stay filled, whether commercial corridors feel alive or hollow, and whether people with new ideas believe there's room for them here. Over time, those small outcomes add up to the character, resilience, and openness of a city.
I think it's something worth being aware of as we plan for the future. Supporting local businesses isn't only about permits, zoning, or incentives; it's also about whether people can actually find and support what already exists.
I do think this is one of the next big planning challenges that doesn't look like a planning challenge: whether new local businesses still get a fair shot in a world where discovery is increasingly controlled by algorithms that reward whoever already won yesterday, regardless of how well we plan on paper.
Ten years from now, we'll still be debating setbacks and zoning categories, but we'll also be living with the outcome of whether local entrepreneurs had a real chance to be found in an algorithmic world. If we want a resilient city that keeps renewing itself, we may need to start thinking about discovery the way we think about other forms of infrastructure: something that either supports the local ecosystem, or slowly erodes it.
Supporting small businesses may require new forms of civic awareness and experimentation alongside traditional planning tools. That could mean paying closer attention to visibility and turnover patterns, supporting local discovery efforts, encouraging tools that spread attention more evenly, or partnering with organizations that help residents find what already exists before it disappears.
In other words, we may need to think not only about where businesses are allowed to exist, but about whether the ecosystem around them gives new efforts enough oxygen to survive long enough to take root.
I wanted to share this perspective simply because I care about Naperville and the long-term health of its neighborhoods and commercial areas. My time on the Commission helped shape how I think about that responsibility, and I remain grateful for the care and thoughtfulness you all bring to it.
Thank you for your time and for the work you continue to do for our community.
Warm regards,
Juan David Campolargo
I started thinking about this because restaurants are hard, really hard, and it felt like there had to be something that could be done to help them out.
That curiosity grew after attending an event at the Google HQ in Chicago about how restaurants can use AI to help their business. It was cool to learn more about how these systems work and to see how restaurant owners reacted to them.
Around the same time I noticed a few articles about Nature's Best Cafe closing down when a lot of people actually loved the place and at the same time a lot of people did not know it existed.
Then I read an essay by data scientist Lauren Leek that put language to what I was noticing: Google as a market maker and allocator of attention among small businesses such as restaurants. That framing made the problem click.
This project is my attempt to apply that way of thinking locally, for Naperville, in a form people can actually use.
If you want to explore more of my food and restaurant work, here are a few other projects:
Thanks to Carolyn Stein for thoughtful questions that helped me clarify how this map should be explained.
If you have thoughts, critiques, or ideas, or if you're curious how this could be used by local media, the city, or the community, I'd genuinely love to hear from you.
Sorry to break it to you, but I won't become Anton Ego (the review guy from Ratatouille) any time soon. This map isn't built from my taste. It's built from patterns across lots of restaurants.
If you want to read reviews, check menus, or ask your friends, do it. Trust your own preferences and keep your own opinion even if the reviews, your friends, and this map say otherwise.
This map is just another signal: a way to surface places that look unusually strong relative to similar spots. Another signal that says, "this one might be worth a closer look."
Food is personal. I'm not pretending ratings are perfect. The value here is comparison: instead of staring at a star number alone, I'm asking, "Compared to similar places, is this doing unusually well?"
That doesn't make it universal truth. It just helps you compare apples to apples.
Underrated here doesn't mean "the best." It means "better than you'd expect given how similar places usually perform online."
If two restaurants look similar on paper—same general price range, same kind of food, similar number of reviews—but one has a much stronger rating, that's a signal people should at least look at it.
Once the model has an expected rating, it compares it to reality. If expected is about 3.6 and actual is 4.4, the difference is large. That difference is called a residual.
Big positive residuals mean: "This restaurant is doing much better than the system expects." That's what underrated means in this map—just unusually strong given how visibility normally works.
I hope owners see it as one more way new customers can find them, especially if they're doing great work but don't have a giant marketing budget. I also understand owners might be skeptical. I'm open to feedback—reach out anytime.
Don't. You shouldn't trust it blindly—and I don't want you to.
Treat it like a neighbor's tip. Use it as a suggestion, then make your own call.
I'll explain it simply. The model looks at lots of restaurants that are similar in broad ways—like price range, type of place, and how many reviews they have—and learns what rating is typical for places like that.
Then it flags the ones that are doing unusually well compared to their peers. That difference—the "surprise factor"—is what gets called underrated.
This isn't "Google is bad." It's "one tool can't serve every kind of discovery." My map is for the person who's tired of seeing the same few names.
Even Google says prominence matters. This is simply another tool that doesn't let prominence dominate the whole experience.
I hope people try one new Naperville place they wouldn't have found otherwise. I also hope it helps people fall back in love with exploring locally.
If a reader finds a new favorite spot that becomes part of their weekly routine, that matters. And if it gives even a few great, lesser-known restaurants a steadier stream of customers, that's real impact—restaurants are fragile, and any help they can get is important.
Toggle "Show Underrated" to see spots where the machine learning model thinks the rating should be higher than it is.
Use Search, Area, Cuisine, Price, and Min rating/reviews to find something that fits tonight.
Tap items in the Cuisine Legend to filter instantly.
Toggle "Show Underrated" to see spots where the machine learning model thinks the rating should be higher than it is.
Use Search, Area, Cuisine, Price, and Min rating/reviews to find something that fits tonight.
Tap items in the Cuisine Legend to filter instantly.