Inspiration
We built Bored to be an anti-scrolling action engine. It ranks experiences by how well they match your mathematical interest vector, rather than how many reviews a place has.
What it does
Bored turns your current vibe into a few personalized recommendations nearby. Users simply enter their interests in natural language, and we instantly convert that into vector embeddings to retrieve highly relevant activities. They can also filter by distance depending on how far they want to travel.
How we built it
We built the frontend in React Native (Expo) for a zero-friction mobile experience. Our backend data pipeline includes a Flask API hooked into PostgreSQL and a Qdrant vector database. We dynamically generate Gemini embeddings from user queries and cross-reference them with live location data via Approximate Nearest Neighbor (ANN) search.
To ensure the best match, we evaluate the proximity of user vibes to location data using cosine similarity. Finally, a post-filtering layer reranks these nearest neighbors for distance, open-now status, and contextual relevance.
Challenges we ran into
Tuning the Gemini embeddings to consistently produce meaningful results rather than overly literal matches was our biggest data science challenge. On the engineering side, we fought through Expo routing bugs to get the mobile app communicating flawlessly with our local Flask server. Defining a tightly focused MVP while expanding the scope was also a major hurdle.
Accomplishments that we're proud of
We successfully built and deployed a full vector search architecture. We ingested large amounts of Google Maps and PredictHQ data into a searchable system. Most importantly, we shipped a complex ANN-based recommendation engine that works in real time and hid the complexity behind a clean, user-friendly interface.
What we learned
We learned the absolute necessity of prioritizing MVP features early in a datathon. Working with embeddings and vector databases taught us how powerful yet sensitive semantic search systems can be. We also gained experience optimizing system performance when relying on external AI APIs.
What's next for Bored
Our immediate next step is expanding our multiplayer "Groups" feature to recommend events that satisfy shared and conflicting interests. We also want to introduce a user rating system so the app can recommend progressively higher-quality experiences over time. Down the line we see highly lucrative opportunities for partnerships with local businesses to promote their events and venues.
Built With
- flask
- gemini
- postgresql
- predicthq
- python
- qdrant
- react-native
Log in or sign up for Devpost to join the conversation.