A travel app for genuinely local experiences, and for meeting the local who hosts them.
58% of 26 travellers said their biggest frustration is not knowing if an experience is really local.
Every time I travel, TripAdvisor and Google Maps show me the same places: the restaurant with 5,000 reviews, the shop everyone finds the same way. The neighbourhood spots only a local would recommend stay invisible, buried under sponsored content.
What the survey showed: before locking the MVP, I asked 26 travellers how they find experiences today. 73% use Instagram and TikTok rather than booking platforms. Only 1 of the 26 rated the authenticity of current platforms 5 out of 5. And 77% search and book on their phone, which is why the app is mobile-first.
At onboarding, people choose between 5 free searches and an annual subscription. Search is by city with a few simple filters, so you get from "I just landed" to "here's something local" as fast as possible.
Why: the value is finding one genuinely local place. People should feel it before they're asked to pay.
The experience page brings together duration, what to bring, what's included, a map and the price. Booking supports several payment methods, because travellers don't always have the same ones as locals.
Why: when the host speaks another language, every unclear detail becomes a back-and-forth. And 27% of the people I surveyed named hidden fees or unclear pricing as their biggest frustration.
Once a booking is confirmed, the app takes you straight into a chat with the local host. I also drew a line on automation: nothing heavy that stands in for the human contact between traveller and host.
Why: the product is the connection with a real local person, not another list of places.
I built the UI kit with Claude Code, starting from the real screens instead of components in isolation. The first palette was too short for a flow with this many states, so I extended it to a full 100–900 scale and added status and gradient colours. Every input got default, focus, error and filled states, and I added an icon set afterwards.
Why: components should serve the screens they're for, not a generic library.
Usability test still to run