Inspiration
Ask any New Yorker about roommates and you'll hear a horror story. What bugged us is that the stories are rarely surprising after the fact. It was the 6 a.m. alarm nobody mentioned, the dishes that never got washed, the "partner" who quietly moved in. Most roommate searches still come down to one DM, a gut feeling, and a 12-month lease. With NYC vacancy at 1.41%, the lowest it's been since 1968, nobody can afford to learn this the hard way. We wanted people to answer "will this person drive me crazy?" before they sign the lease, not after.
What it does
RoomMe matches renters on the habits that start fights: when you go to bed, when you wake up, how often you clean, whether the dishes get done, how often guests come over (and stay over), how loud things get, and a few more. It all comes from a quick 10-question habit check.
Dealbreakers like smoking indoors or pet allergies get filtered out first, before we score anything. Every match shows a percentage plus a breakdown of which answers lined up and which didn't, so you can see where the number came from.
From there you can browse real listings across 24 NYC neighborhoods (each linked back to its public source), shortlist up to 5 people, and meet only when both of you say yes. Once two people are compatible, RoomMe helps them write a House Agreement covering quiet hours, guests, chores, and bills before either of them signs anything.
How we built it
The frontend is a Next.js app, but the heart of the project is the matching engine.
Every habit answer gets converted into a real quantity. Bedtimes become clock hours, guest frequency becomes guests per month, and noise becomes decibels. Each question is then scored on its own:
$$\text{agreement} = \max\left(0,\ 1 - \frac{\text{gap}}{\text{full-clash gap}}\right)$$
Those per-question scores are averaged into one match percentage.
We kept this as plain, deterministic math on purpose. A model never produces the score, so the same formula runs whether the AI features are on or off.
For listings, we pull from public sources and link back to the original instead of letting users post their own. For this version, that rules out a whole category of fake-listing problems.
Challenges we ran into
Our hardest problem was about definitions, not code: who is being matched with whom? We went back and forth for a while. Maybe it's a landlord screening applicants for a unit. Maybe two strangers match first and then go apartment hunting together. Maybe a listing comes with a person already living there. Each version needed its own data model and was really a different app. We settled on matching renters to each other on habits first, backed by real listing data. A two-sided marketplace with group decision-making wasn't going to happen in one weekend.
The second challenge was trust. Our first instinct was to have an AI model generate the compatibility score. The longer we thought about it, the less we liked giving someone a number we couldn't explain. So we rebuilt scoring around a formula you can audit line by line. Designing it well took longer than an AI call would have, but for a decision this personal, it mattered more.
We also made a deliberate fair-housing call: there are no photos of potential roommates anywhere in the matching flow. We didn't want someone's looks to shape a match before their habits did.
Accomplishments that we're proud of
Anyone can check RoomMe's match score. The exact formula is right there, along with a worked example, so you can do the math yourself. Most matching products don't work that way, and we're glad we took that bet.
We also shipped with real data: 1,380 listings across 24 NYC neighborhoods, each one credited to its public source. None of it was made up for the demo.
And RoomMe doesn't stop at "you're compatible." It pushes two matched people toward a House Agreement before move-in. Most roommates skip that conversation until something has already gone wrong.
What we learned
When a decision is this personal, being explainable beats being sophisticated. Everyone we showed the transparent formula to trusted it more than they would have trusted a fancier black-box score.
We also learned that a housing product lives or dies on whether its data is real. A slick matching algorithm on top of fake listings would have been worse than a simpler one on top of real listings.
And we learned to scope hard. We started out wanting a lot more, including fraud detection for user-submitted listings and cross-border payment rails for international renters. Shipping one thing that works end to end taught us more than three half-finished ones would have.
What's next for Roomme.tech
We want to bring RoomMe to rental markets outside NYC that are just as tight. We'd also like the House Agreement to be something people keep using after move-in, with check-ins and lightweight help resolving conflicts, not a document they sign once and forget. And we want to let people submit their own listings. That means building the fraud and scam detection we cut from this version, so RoomMe isn't limited to listings that are already public.



Log in or sign up for Devpost to join the conversation.