Inspiration

We kept noticing the same thing: our neighbours are incredible at things we've always wanted to learn, and we're sitting on skills they'd love to pick up — but we never actually talk to each other. The guy upstairs plays jazz guitar. The woman next door speaks four languages. The student down the hall is a Python wizard. All of that knowledge just… sits there, untapped, because there's no reason to knock on someone's door and say "hey, want to trade?"

The loneliness epidemic is real. So is the cost of living. We wanted to solve both at once — without an app that turns every interaction into a transaction.

What it does

SkillSwap is a gamified neighbourhood skill-trading platform. You list what you can teach and what you want to learn. The app shows you neighbours on a live map, colour-coded by skill category, so you can find people who want exactly what you offer, and offer exactly what you want.

From the map you can tap any neighbour, see their skills and rating, and send a swap request. Once both people accept, a chat unlocks. When the trade is done, you both leave reviews, earn XP, and your panda mascot gets happier!

Key features:

Gamified map — interactive Mapbox map with live neighbour pins, mutual match animations, and smart filters (skill category, proximity, rating)

Swap requests — a structured pre-chat request flow so nothing feels cold or random

Smart Match AI — Gemini analyses skill compatibility, teaching level complementarity, and shared interests to surface your top 3 matches

Biscuit the panda chatbot — a Gemini-powered AI companion that gives personalised tips on how to break the ice, suggest meetups, and grow your skills

Meetup scheduling — weekly availability calendars with one-click meeting booking

Safe meetup mode — share a live location link with a trusted contact during in-person meetups, powered by Firestore real-time sessions

Neighbourhood leaderboard — dynamic rankings based on completed trades, connections, and weekly streaks, filtered by proximity radius

The pet — Biscuit the panda, whose mood and bamboo stash grow with every trade and connection you make

How we built it

We used Next.js 16 (App Router) with TypeScript and Tailwind CSS on the frontend, and Firebase (Firestore for the database and realtime chat, Firebase Auth for authentication, Firebase Storage for media) on the backend. Maps and venue search run on Mapbox GL JS. The Smart Match engine is a two-stage pipeline: a client-side Haversine filter narrows candidates by skill overlap and proximity, then the Gemini API scores compatibility across skill level, category diversity, and shared interests. Biscuit the chatbot also runs on Gemini with a persistent conversation context managed server-side via a Next.js API route to keep the key secure.

Challenges we ran into

Getting Mapbox GL JS to play nicely with Next.js SSR was the first wall — it has to be dynamically imported as a client-only component or it throws on the server. Rendering custom React components inside Mapbox popups required using createRoot to mount React trees into vanilla DOM nodes outside the Next.js router context — which meant hooks like useRouter and crash inside popups and had to be replaced with plain navigation. Implementing bidirectional skill matching in Firestore — checking whether two users mutually cover each other's wanting/offering lists — required careful client-side logic to avoid redundant reads. Designing safe meetup live location sharing without a dedicated push infrastructure led us to a Firestore real-time subscription approach where both the sharer and the watcher poll the same document.

What we learned

Gemini's structured JSON output is reliable enough to use as a scoring engine if you're explicit about the schema in the prompt and strip markdown fences before parsing. Firestore real-time listeners are easy to wire up for chat — the hardest part is unsubscribing correctly on component unmount. And honestly: Biscuit was the feature people reacted to most in testing. Gamification that feels emotional lands differently than gamification that just gives you points.

What's next

Skill verification badges (short video proof or vouching from existing connections), a group skill circles feature for 3-way barter chains, and a mobile app. We also want to explore vector embeddings to replace the Gemini pre-filter with semantic similarity search — faster, cheaper, and more nuanced than keyword matching across skill names.

Built With

Share this project:

Updates