The Map That Argues With Google - by Yair Titelboim
The Map That Argues With Google
4,717 photos, a toddler, and the gap between "popular" and "worth it."
Yair Titelboim
Jun 17, 2026
Came back from four weeks in Japan and South Korea with a two-year-old and 4,717 photos. It took about a week for the details to start blurring. Which ramen was worth the wait? which was a 90-minute tourist trap? all the different spots we found at midnight and never made it back to.
This is really a data problem. Memory fades fast, and the version of a place the photo shows you isn’t the version you actually liked. You may just have a lot of photos, which would be a selection bias. So I did the thing I do with data and fab sites. Put it all on a map. Then stream the layers on a timeline.
Here’s the finding first, then how it got built — including the parts that didn’t.
The gap between “popular” and “worth it” is wider than I expected. Google and IG’s algorithms optimize for popular — volume, foot traffic, the spots everyone already knows. What I wanted was worth it.
Put the local signal next to the algorithm’s signal and two different cities appear in the same place. Packed with tourists, thin on local ratings: trap. Quietly rated by locals, nearly invisible in search: the one you walk twenty minutes for. The map’s whole job is making that gap visible.
Now the build.
There are five layers, and each one answers a different question.
The route — where we actually were. Every photo carries metadata, and 4,543 of the 4,717 had a usable timestamp and GPS coordinate — about 96%. I pulled those straight from the file (lat, long, creation date). GPS-derived, not guessed. The other 174 were missing data and got dropped. Order everything by when it was taken and the route draws itself: four weeks of movement, in sequence, as lines and markers.
What we ate — going from “I was here” to “what was here.
A GPS point says we stood on a corner in Osaka at 9pm. It doesn’t name the yakitori place. So I clustered the photos into stops — anything within 90 meters and 90 minutes collapses into one place we lingered. Then search Google Places within 200 meters of each cluster, keeping matches inside 160.
The first pass resolved 196 visited or likely-visited food and drink stops:
74 in Korea, 122 in Japan.
In retrospect this is suboptimal of course. And limited by Google Places API quota at 200 per day, which I had to batch. So the map is partial because I ran out of API calls. and time.
What locals think — the layer that’s the point.
Local-platform ratings, Tabelog in Japan and Naver in Korea, matched against the places we’d been: 50 local records, 35 that matched cleanly to a stop. This is the layer that turns a travel diary into the popular-vs-worth-it comparison — and it’s where the gap between the two shows up.
The roads not taken. Around the dense areas — Tokyo, Kyoto, Osaka — I ran a separate Japan-only search for places near where we’d spent time but never actually went, excluding everywhere we’d been. That added 184 candidates: 76 in Tokyo, 68 in Kyoto, 40 in Osaka. The midnight spots we’d clocked and missed, geocoded for next time.
The conversation layer — and this is the one I didn’t expect. Before and during the trip, a lot of the planning happened in long conversations with Claude — where to eat, what to skip, what was worth the detour.
I pulled the places out of those conversations by hand — 16 of them, 13 in Japan, 3 in Korea — each with the excerpt in JSON format and the date, and dropped them onto the map as their own layer. Matched to the photos from the same day.
So the planning shows up right where the decision was live.
The place we talked about standing next to the place we went. It’s small and hand-built, not an automated “platform”. But seeing the conversation plotted against the route is the part of this map I keep going back to.
I did not build a magic “best ramen” algorithm. That is a future post.
There’s no “single score” ranking every place on the map. I built a layered system — my path, what Google could see near it, what locals actually rate, the roads not taken, and the planning conversation underneath.
The value is in comparing the layers, not pretending one number replaces judgment. The map makes the gap visible. The call (and memory) is still mine.
It's the same method underneath the data-center work. Geocode messy sources, fuse the layers that usually live in different sources. Surface the signal sitting under the obvious metric and with limited bias — with AI in the loop doing boring extraction work.
Ramen shops or HBM fabs, planning conversations or interconnection queues.
Same move.
This is just the version where the dataset is delicious.
Build your own. If you’ve got a trip’s worth of geotagged photos, you can run this: pull GPS + timestamp from the metadata, cluster into stops, match against Google Places, layer a local-rating source the algorithm under-weights (Tabelog, Naver, your region’s equivalent), and — if you planned the trip with an AI — pull those places into a layer of their own. The recipe matters more than my specific spots.
Going to Japan and want a similar map? let me know.
— Yair