Work WealthVentures

WealthVentures

WealthVentures is a members-only luxury travel club. I worked out that its places feature alone would cost over $20k a month in Google fees at 10,000 users, then brought that down to about $7k. I also built the map search and booking details, and made them feel smooth.

Product
WealthVenturesMembers-only luxury travel club
My role
DevelopmentBuilt from the design team’s designs
Timeline
2+ monthsOngoing
Built with
React, AdonisJSGoogle Places, S3
Live
wealthventures.com
app.wealthventures.com
The WealthVentures hotel search in Rome, with filters and results beside a map of price pills.
$20k+projected Google bill per month for places at 10,000 users, as first built
~$7kthe same bill per month today at most, and about $5k at low use

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:

  1. 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.
  2. 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
Fig. 1The places map in Mexico City. The first load shows a bit of everything, and choosing a category fetches more.

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.

Fig. 2Moving the map on hotels in Italy. The list reloads for the new area and the prices appear as pills.

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.

Fig. 3The compare prices drawer on a phone.
Rome hotels on a map above a card showing 89% off
Hotel cards with member savings and a floating map button
More hotel cards, sorted by highest percentage off
Fig. 4Results on a phone, always led by the biggest percentage off, with the member saving on every card.

Similar project?

Is an API bill growing faster than your product?

Tell me where the cost or the lag comes from, and I’ll tell you how I’d approach it.

What carries over

Three things that would work for your product too.

  1. Check the bill early. A $4 day with one developer on the account looked small. Scaled to 10,000 users, it was a five-figure monthly problem.
  2. Bring options with prices attached. Two clear options and what each one costs made this an easy decision for the board.
  3. Store only what you’re allowed to. Google’s terms limit what you can keep, so anything you store and show yourself should be your own or copyright free. On busy pages that saves a lot, and you decide what people see.

Contact

Let’s make something people enjoy using.

Pick a time that suits you, or just send me an email.

About: A new websitechange