Note: To visit our try-out link, you must be on UofM wifi (or any 35.0.0.0/8 IP address). Also, our sign-up email system limits you to 4 emails per day. If you are not able to (or do not want to) register your own account, log in with {username: johndoe@example.com, password: johndoe}.
Inspiration
As students at the University of Michigan move into their second year, >10,000 students are required to find off-campus housing. While the university provides support for first-year housing, the process of finding housing and roommates afterward is largely unorganized. Students have to rely on social media posts, word of mouth, or scattered spreadsheets to coordinate living arrangements. None of the five largest Facebook housing groups requires a UMich email to join, and 68% of roommate conflicts stem from lifestyle mismatches that nobody discussed upfront (Roomi, 2021). These approaches are inefficient and make it difficult to assess compatibility with potential roommates before committing to a lease. This lack of support creates stress during an already demanding academic schedule. Current tools offer little support for evaluating these factors meaningfully. We saw an opportunity to build a system that combines housing discovery and roommate matching into a more structured and data-driven process.
What it does
NestMate is a platform that streamlines the off-campus housing journey for students. The app first helps users discover accommodations based on personalized criteria such as budget, proximity to classes and clubs, and preferred lifestyle. Next, NestMate uses a roommate-matching system that evaluates compatibility across lifestyle and personality factors, such as cleanliness, sleep schedules, and social habits. Finally, the app incorporates locations from digital calendar events, such as classes, clubs, and one-time activities. By combining property discovery with structured roommate matching, the platform helps students build living situations that work financially, socially, and geographically.
How we built it
Data Sources
NestMate aggregates data from multiple sources to generate meaningful, accurate housing and roommate suggestions.
On the student side, NestMate analyzes a student’s Google Calendar events, including Canvas schedule, to understand their weekly routine and the locations they visit most often. The Index Matching Quiz captures lifestyle preferences to inform roommate compatibility scoring. Additionally, the University of Michigan Course Registrar data is used to enrich and correct schedule information, as calendar events may sometimes lack details such as building names, room numbers, or class sections.
By cross-referencing registrar data, NestMate automatically fills in these gaps, ensuring accurate location data without requiring additional effort from the student.
On the housing side, NestMate leverages an off-campus Ann Arbor housing database and OpenStreetMaps containing geographic information about available properties that can be accurately mapped. This dataset is combined with information from the NestMate database to match students with housing options that align with their budgets, location preferences, and daily commute patterns.
.png)
Roommate Compatibility Scoring
Manhattan distance similarity across 10 lifestyle questions (1–4 scale):
Per-question score:
$$ \text{per_question_score} = 4 - |\text{user_answer} - \text{other_answer}| $$
Compatibility percentage:
$$ \text{compatibility} = \left(\frac{\sum_{i=1}^{10} score_i}{40}\right) \times 100 $$
For a large list of candidate roommates, indexing provides the fastest and most intuitive solution for matching roommate personalities and routines. However, unlike other roommate-matching apps, we use an LLM backend to intuitively explain the match score, similarities, and differences, making the matching process more transparent.
Weighted Centroid Algorithm
Events are weighted by type to find the ideal housing location:
| Event Type | Weight |
|---|---|
| class | 3 |
| study | 2 |
| club | 1 |
| gym | 1 |
| other | 1 |
Centroid calculation:
$$ centroid_{lat} = \frac{\sum(event.lat \times weight)}{\sum(weight)} $$
$$ centroid_{lng} = \frac{\sum(event.lng \times weight)}{\sum(weight)} $$
Housing Radius (default is 67th percentile)
- Compute the distance from the centroid to every event
- Radius = 75th percentile of those distances
- Clamped to:
$$ 0.5\text{ km} \leq radius \leq 3.0\text{ km} $$
Location Fit Score
Linear decay from centroid:
$$ score = \max(0, 100 - distance_{km} \times 50) $$
Course Location Lookup
Calendar events are not standardized for all classes. The worst-case scenario is having only the course code on the calendar. This is used to further determine the specifics of the class on the calendar, which we can use to then extract the class's location from the course registrar data. The process is as follows:
Extract course code via regex
Resolve subject names
- E.x.
CS to CSE ME to MECHENG
- E.x.
Match against course registrar data by subject and catalog number
Map building code and get location coords from time & day overlaps
AI-Powered Housing Ranking
NestMate uses an LLM backend to score listings from 0–100 based on:
- user preferences
- roommate compatibility
- location weights
- listing features
- budget alignment
The system returns both:
- a numerical score
- a natural language explanation describing why the listing is a good match.
Tech Stack
NestMate is built using the following architecture:
Frontend
- Next.js
- TypeScript
- Tailwind CSS
- Leaflet for interactive housing maps and geospatial visualization
Backend
- Python FastAPI
- APIs and public databases for housing search, roommate matching, quiz processing, and calendar integration
Infrastructure
- Supabase for authentication and data storage
AI
- Google Gemma 3 27B for intelligent recommendation, reasoning, and explanation generation
The system processes Google Calendar and ICS data to understand where students spend their time and factor those locations into housing recommendations.
Challenges We Ran Into
Determining the mathematical algorithm for identifying the best housing properties was one of the biggest challenges.
Ultimately, we developed an approach that computes a weighted average of visited locations based on activity type, duration, and location. From this, we generate a circle with a radius that covers roughly 67% of the students’ activities, representing a realistic commuting zone.
Another major challenge was reliably integrating Google Calendar data. Parsing events, categorizing them, and mapping them to real campus locations required handling inconsistent event formats and incomplete metadata. Ensuring that these events could meaningfully influence housing recommendations required careful data processing and normalization.
What’s Next for NestMate
Moving forward, we plan to integrate NestMate into the Connyct platform to leverage its existing student community. By embedding NestMate within an active campus network, roommate discovery becomes more natural and trustworthy, allowing students to connect with potential roommates who share classes, clubs, or social circles.
We also aim to directly integrate with university tools such as Canvas LMS, enabling NestMate to better understand student schedules and campus activity patterns to provide more personalized housing recommendations.
At the same time, we plan to expand the platform’s housing data through integrations with services like Zillow, ensuring students have access to up-to-date listings.
Beyond Ann Arbor, our long-term vision is to scale NestMate to universities across many cities, creating a broader ecosystem where students can easily discover housing, find compatible roommates, and coordinate living arrangements within their campus communities.
Built With
- fastapi
- google-calendar-api
- google-gemini-api
- leaflet.js
- let's-encrypt-ssl
- next.js
- nginx
- openstreetmap
- pydantic
- react
- supabase
- tailwind
- typescript
- ubuntu-vps
- uvicorn
Log in or sign up for Devpost to join the conversation.