Inspiration

People walk past great spots every day, but there’s no fun reason to step in, explore side streets, or discover somewhere new. Loyalty apps feel like chores, and maps are functional but not motivating. Young people moving to new cities often opt for big chains and safer options because they don't want to risk trying out a smaller, local shop. It's difficult to gain familiarity with a city on a budget and really connect with localities. On the other side of the coin, you have small businesses who want to tap into vibrant youth, but are unable to afford effective advertisement costs. We wanted to connect these two groups through a gamified experience encouraging exploration through discounts, social status, and in-game progress.

What it does

Users enter a 3-dimensional map of their city that highlights nearby businesses, landmarks, and exploration zones in real time. Based on the user’s location and behavior, the Gemini API dynamically generates quests, some encouraging discovery of hidden or iconic landmarks while others guide users to partnered local businesses offering small, real-world discounts as incentives. As users move through the city, they capture zones and build a visible, evolving record of their exploration. Completing all quests within a zone fully unlocks it, causing the area to light up green on the map. This creates a clear sense of progress and satisfaction, transforming the city into a collectible experience rather than a static map. The platform is designed with social interaction at its core. Quest completions appear in a shared activity feed where friends can like, comment, and compare progress. Leaderboards rank users based on number of captured zones, forcing exploration and fostering friendly competition. Long-term retention is driven by tangible rewards, streaks, and social visibility. Users return not just for discounts, but to maintain momentum, outperform friends, and steadily “complete” their city. It is up to the business to keep retention by having a solid project, we just get people into the door.

How we built it

Wandr is built as a two-part monorepo with a Vite + React + TypeScript client and an Express + TypeScript API server: on the frontend we use react-map-gl (Mapbox) to render a 3D-tilted city map, pull nearby businesses/zones/landmarks via a Gemini API scraping layer, and drive the core gameplay loop (live location, business markers, check‑in panels, zone/neighborhood overlays, quests, rewards, and social feed) while auth is handled with a JWT stored in localStorage and injected by an interceptor; on the backend we boot an Express app with routes for auth, users, businesses, check‑ins, zones, quests, social, rewards, business analytics, payments, and landmarks, backed by PostgreSQL with a migration script that creates all game tables (users, businesses, check_ins, zones, zone/neighborhood progress, quests, rewards, redemptions, payments, feed, comments, etc.) and a seed script that loads demo Providence data (also scraped by Gemini), quests, promotions, rewards, and sample check‑ins. Importantly, we implemented a quest decision engine via Gemini API, where we feed tabular data about businesses (scraped via Gemini, including information about travel time, safety, peak hours) and user tendencies along with real-time data like weather, to auto-generate optimal quests in real-time. For demo purposes, we made this quest generation callable at any time with a button, but in deployment, we would auto-generate real-time quests every 30 minutes or hour.

Challenges we ran into

One of the biggest challenges was handling real-world geolocation reliably in a browser environment, where GPS accuracy can fluctuate and permissions vary by device. Designing proximity validation that felt fair without being frustrating required careful tuning. Another major challenge was working with PostGIS under time pressure, especially ensuring spatial indexes and distance queries were correct and performant. We also had to be disciplined about scope, because the idea naturally expands into a full social platform and business analytics product. Staying focused on a compelling demo meant prioritizing the core exploration loop over secondary features.

Accomplishments that we're proud of

We are proud of building a clear, intuitive core loop that users immediately understand during a demo: open the map, discover nearby places, check in, earn points, and watch zone progress increase. We are also proud of using PostGIS properly rather than relying on simplified distance hacks, which gives the platform a strong technical foundation. Our quest generation, which uses the GeminiAPI for tailored generation based on location and habits, is advanced and cutting-edge. Finally, we are proud of creating a roadmap-friendly architecture that allows future expansion into quests, social features, and business tools without requiring major rewrites.

What we learned

We learned that the success of a location-based product depends far more on how it feels than how many features it has. If exploration does not feel rewarding on its own, no amount of rewards or social features can save it. We also learned that real-world validation is one of the hardest problems to solve gracefully, especially when balancing anti-abuse measures with user experience. From a technical standpoint, we learned that investing early in proper geospatial tooling pays off significantly as complexity grows.

What's next for Wandr

Currently, small businesses have to contact Wandr for their shops to be shown on the map and promoted by the application. We plan to create a separate log-in for businesses, different from the one for users, that allows them to apply to have their businesses promoted and a comprehensive dashboard that will allow them to create promotions, challenges, and view engagement analytics. On the consumer side, we want to add social sharing features that generate exploration recap visuals people actually want to post. Once the core experience is stable, we would like to perform A/B testing to optimize our Gemini-produced quests to maximize the likelihood a user will complete them and also purchase something at the relevant location.

Share this project:

Updates