Inspiration

When trying to decide where to go from my saved places, I realized most maps help you save locations but don’t actually help you choose between them. Whether it’s picking a place to eat, meet friends, or explore, scrolling through long saved lists quickly becomes frustrating and overwhelming. I wanted a tool that helps people interact with their saved spots in a smarter way by filtering, asking questions, and getting recommendations instead of guessing. Map Whisperer was built with a simple goal: help people make better decisions from the places they’ve already saved.

What it does

Map Whisperer helps you actually use your saved Google Maps places. Instead of endlessly scrolling through saved lists, you can filter them or simply ask what you’re in the mood for and get smart, ranked recommendations that make sense. The app transforms your saved spots into a conversational, decision-making experience. By combining Google Maps & Places APIs for place enrichment with Google Gemini AI for natural language understanding, Map Whisperer delivers context-aware recommendations that help you quickly choose the right place.

How I built it

I built the frontend using React and the backend with Node.js. For the chat and recommendation system, I integrated Gemini and Google Cloud. Since the raw saved places data from Google Maps is pretty basic, we used Google Maps APIs to enrich the data with more context like ratings, opening hours, and reviews. Gemini handles interpreting user requests, narrowing down options, and explaining why certain places are recommended.

Challenges I ran into

One of the biggest challenges was getting Gemini to give good recommendations from very dynamic and incomplete saved places data. The raw Google Maps export doesn’t include much context, and many places don’t have clear categories, tags, or pricing, which made filtering difficult and often unreliable. I had to move away from strict filtering and instead narrow down rough candidate sets, then enrich only the top results with extra data like ratings, hours, and review summaries before sending them to Gemini. On top of that, my Google Maps API tokens ran out mid-build, so I had to scramble (and pay 😭) to keep things running.

Accomplishments that I am proud of

I am really proud of how the UI turned out. It was hard to get everything to work smoothly since the app has a lot of dynamic elements; chat, map updates, loading states, and real-time data changes. Getting all of that to feel clean and responsive was a big win for me.

What I learned

I learned a lot about prompt engineering for recommendations, especially when the underlying data is inconsistent and user-specific. I also learned how important it is to batch AI calls efficiently, enrich data only when needed, and design UX that feels helpful without overwhelming the user.

What's next for Map Whisperer

Next, I’d love to expand recommendations beyond just saved places. If a user doesn’t already have what they’re looking for saved, Map Whisperer could suggest new nearby places based on their preferences and context. The goal is to make the app not just a decision helper, but a true discovery companion.

Share this project:

Updates