CASE STUDY · CONSUMER

Local Haunts

No chains. Just good local food.

A discovery app for independent restaurants: map and list, chains filtered out, ranked to surface the place around the corner rather than the famous place downtown. Every search runs twice against Google Places, once by distance and once by prominence, and merges the two; in testing that turned twenty landmarks into thirty-odd neighborhood places. Designed, built, secured, and taken through store testing end to end by this practice.

Visit localhaunts.app →
6
countries, chosen on legal exposure
0
chains, filtered by name and by count
2
passes per search, distance and prominence
1
person, entire product
01

Why it's here

This is the Build pillar again, and the cost problem is the same one a cloud bill has: a metered API where every request is money. Google Places is billed per call, so the search fan-out grows with the area chosen, results are cached per geohash cell and shared across users, and the photo proxy signs its URLs so nobody can loop one and bill the project. Human signal is two one-tap primitives, Vouch and Crown, with no free text, so there is no moderation burden and no legal exposure. The paid flag is written only by the billing webhook and fails closed to free, a lesson carried over from the first app.

02

The stack

React NativeExpoTypeScriptSupabase PostgreSQL + PostGISGoogle Places APIRevenueCatSentry App StoreGoogle Play