Inspiration
We kept noticing the same thing. The people we'd actually click with are often just a few feet away. They're in a lecture hall, a coffee shop, or a conference. There's no way to know it. Every social app connects you across distance. None of them help you notice the person standing right next to you. We wanted to build that missing layer. We wanted real compatibility with people already nearby. We wanted to get people talking face to face instead of through another feed.
What it does
Proximity learns who you are through a short conversation with an AI onboarding agent called Muse. Muse compiles your responses into a personality embedding. This embedding is a vector representation of your interests and values. Your phone runs Bluetooth Low Energy scanning in the background. When another Proximity user is nearby, an LLM-driven vector match compares your embeddings. This finds real compatibility instead of keyword overlap. Strong matches trigger an anonymous card. The card shows a first name, a photo, and your shared interests. Nothing more gets shared. No location gets shared either. Both people have to accept. Only then does the app open a live GPS and compass dial. The dial points you toward each other so you can meet in person. After you meet, Muse suggests real events based on your shared interests. Muse also helps plan the hangout.
How we built it
The client runs on React Native with Expo. Supabase handles auth, the Postgres backend, and realtime channels. These channels carry the temporary location stream during an accepted meetup. Proximity detection runs on native BLE advertising and scanning. Claude powers the onboarding conversation and the embedding extraction. The matching layer runs vector similarity between users' interest embeddings. The dial view fuses GPS coordinates and compass heading. This computes live bearing and distance between two accepted users.
Challenges we ran into
Getting BLE background scanning reliable across iOS and Android without draining battery. Tuning the similarity threshold so matches felt meaningful. Designing the consent flow so nothing leaks before mutual accept. Getting GPS and compass fusion smooth enough that the dial didn't feel jittery.
Accomplishments that we're proud of
We got the full pipeline working end to end during the hackathon window. Chat, embedding, BLE match, and live dial all connected smoothly. We designed a privacy model where no location or identity leaks before both sides opt in. The "walk toward the arrow" moment felt genuinely magical in testing.
What we learned
We learned how embedding-based matching compares to simple keyword matching. We learned BLE's real-world range and reliability limits. We learned how to design consent-first UX for a proximity feature.
What's next for Proximity
We want to broaden interest categories beyond the initial embedding model. We want to add group discovery for meeting more than one person at once. We want to refine the event-suggestion engine so post-meetup plans feel more personalized. We want to harden the BLE range and battery tradeoffs for real-world daily use instead of a demo environment.
Log in or sign up for Devpost to join the conversation.