Inspiration
Finding a roommate shouldn’t feel like rolling the dice. Most platforms focus on surface-level filters with countless tabs and forms to fill out. Real roommate issues come from everyday habits - sleep schedules, cleanliness, work routines, and social preferences. We built Homieu to help people find roommates with ease that they can actually live well with.
What it does
Homieu is a roommate-matching platform that focuses on lifestyle compatibility. Beside a few basic tabs (age, gender, location, etc), users share how they live and what they want from their ideal roommates via free-form prompts. The platform then find top people that has mutual preferences matched (A wants B and B also wants A).
Each potential match (on For You Page) has 2 scores: Roommate Fit and Similarity. Roommate Fit means mutual preferences matched. Similarity means lifestyle similarity. The reason we could have high Roommate Fit score but low Similarity score is because there are people with different lifestyle actually wants to live together as long as their preferences matched. For example, shy quiet person may want to pair with an outgoing party person.
The scores are continuously updated as preferences and profiles change constantly. Instead of static profiles, Homieu adapts in real time as people do. Users get matched by sending likes on For You Page and get likes back.
How we built it
We built Homieu with a Spring Boot backend and a React frontend, using MongoDB to store flexible user profiles. Confluent Kafka handles real-time updates whenever users change their preferences, and Google Vertex AI (Vector Search) helps analyze compatibility patterns to generate smarter match suggestions.
Details on Vertex AI: Each user data (age, gender, lifestyle, preferences, etc) are translated to vectors (arrays of numbers) powered by Vertex AI. Each user has 2 vector indexes: 1 for profile (how they live) and 1 for preferences (what they want in a roommate). All vector indexes are stored on GCP whenever a new user profile is created. When a user A starts matching, Vertex AI Vector Search returns top k users whose profile vectors are matched with A's preferences and vice versa. Combined with basic hard requirements (gender, location, etc), the platform outputs 2 scores: Roommate Fit and Similarity for each suggestion on For You Page
Details on Confluent Kafka: We use Confluent Kafka to facilitate users profile and preferences updates. Combined with Server-Sent Events (SSE), every time users change their profile, new data will get pushed to kafka topics then we populate new info and recalculate the scores immediately.
Challenges we ran into
- Keeping the app fast while updating matches in real time: we wanted matches to update as users changed their preferences, but doing this without slowing down the app was tricky. We had to rethink how and when updates happened so everything felt smooth to users.
- Figuring out how data should flow through Kafka: using Confluent Kafka was powerful, but not straightforward at first. We had to experiment with how to structure topics and events so preference updates and match recalculations stayed consistent and didn’t break other parts of the system.
- Making AI recommendations understandable and reliable: we didn’t want AI-generated matches to feel random or confusing. It took several iterations to make sure the AI insights worked well with our backend logic and produced results we could explain and trust.
- Building chat without overcomplicating things: we originally planned to use Socket.IO for real-time chat, but it quickly became too complex for our timeline. We decided to switch to a simpler server-sent events combined with kafka approach, which let us deliver a working chat feature without unnecessary complexity.
Accomplishments that we're proud of
We’re proud of building a scalable, real-time matching system, integrating AI in a meaningful way (not like agent bots or stock predictions), and creating a platform that reflects how people actually live - not just what they check off in a form.
What we learned
This project taught us how to design event-driven systems, work with real-time data, and think critically about where AI adds real value.
What's next for Homieu
Next, we want to implement group matching for multiple people staying together. We also want to integrate users social media like Facebook, Instagram to help them setup their profile faster (instead of manually adding data). We also want to integrate AI to 1 on 1 chat to help users send efficient and smart messages that lead to in person meet up
Built With
- apache-kafka
- google-vertex-ai
- javascript
- mongodb
- react
- restful-api
- spring-boot
Log in or sign up for Devpost to join the conversation.