01 · The problem
A $4 day that didn’t add up.
WealthVentures is a luxury travel club with member rates on hotels and curated trips, with villas in progress and more to come. It’s built around a map full of places, and that map runs on Google.
One day I looked at the Google bill. I was the only developer on the page, and one working day had cost $4. $4 is small, but that was one person clicking around, and real members would use it far more.
02 · The numbers
I worked out the bill before it arrived.
I used Claude to run three kinds of visit through the places feature: a normal deep visit, a highly active one and a low one. Then I worked out what each one cost and scaled it to 10,000 users coming in twice a month.
My first count came to about $16–20k a month. Recounted against the real database, it was $22k or more. That put it at over $20k a month, for this one feature. Most of it came from two things:
- Google Places pricing tiers. Asking for a single field from a higher tier bills the whole call at that higher price, and the most expensive API cost $25 per 1,000 calls.
- Searches and photos. Each page ran 10 searches, and every card fetched a Google photo on the server, at $7 per 1,000.
03 · The fix
Same experience, far fewer calls.
We wanted to stay on Google, so I looked at what else it offers and found its Places UI Kit. It’s much cheaper, but harder to style and comes with the attribution text Google’s terms require. So I used it where it made sense, and changed how everything around it loads.
- One search on load. When the map opened, it ran a separate search for each of three categories, and Google billed every one of them. I combined them into one search that loads a bit of everything nearby. It brings back less data, which is enough for a first look, and people get more as they use the map.
- Fetch more only when asked. Clicking through the map or categories loads more, and that data is kept on the client for the rest of the visit.
- One photo per place, on demand. A card asks Google for one photo, and only when it’s drawn on screen. Focusing on an item shows more through the much cheaper UI Kit drawer.
- Our own places, on our own storage. I built an admin dashboard for the places shown on the platform. The team controls each place’s categories, benefits and content. Google’s terms limit what can be stored, so these places use our own content and copyright-free images on S3, which cost almost nothing.
04 · The decision
I took the numbers to the board.
Some of these savings meant small changes to the design, so it wasn’t only my call. I laid out both options: build exactly what they wanted at the full price, or strip some of it back, stay as close to the design as possible and save about $15k a month.
They chose the savings straight away, backed the plan and thanked me for catching it. The cuts brought the projection down to about $5–6.5k a month.
Later, every card got one Google photo back, loaded on demand. That puts the bill at about $7k a month at most for 10,000 users today, or about $5k at low use.
05 · Map search
Search that follows the map, without the lag.
Move the map and the results update. The hard part was the lag: every new search added its results to the ones already on the map, with sorting and filters applied, and each new price pill made the map slower.
So the number of pills now depends on the zoom. As you zoom out you see fewer of them, but they’re the best offers for your filters and sorting. The map stays smooth, and the view gets more useful the wider you look.
06 · Compare prices
Making the savings a little dramatic.
One of the platform’s biggest selling points is how good its prices are, so that has to be impossible to miss. Results are always sorted by the biggest percentage off, and each shows how much you save compared to other booking apps.
On mobile that comparison lives in an animated drawer. For the same hotel, dates and guests, the other prices rise as grey bars, then the gold WealthVentures bar lands with the saving above it. It’s a small thing, and a little dramatic on purpose: the saving should feel like a moment.




