How I Designed a Roommate Matching Tool on a 20KB Budget

This summer, I had the privilege of working with a nonprofit that helps people with mental illness or intellectual and developmental disabilities find housing. A lot of them can’t afford rent on their own, but splitting it with someone creates options. We created a tool that helps them find that someone.

Finding a roommate is stressful for anybody. You’re trying to figure out who you’ll share a kitchen with, whether they’re a night owl, and whether their pets are going to be a problem. (We ended up asking people what kind of pet they have, because one goldfish is *very* different than five dogs.) The folks we designed for are doing all of that on a fixed income, often on a government-issued phone with a tiny data plan, and through a matching process they didn’t have much say in.

Before this tool, matching happened mostly behind the scenes, through a very manual process. Participants filled out a long (paper!) intake form. Then staff typed those responses into their existing record system, an algorithm suggested matches, and a staff member called both people by hand to see if they were interested. (A lot of those phone calls went unanswered.) Terms of service were also on paper, went out by mail, and a lot of them never came back. This process predated self-service tools and put extra work on staff. From the participant’s side, it was a black hole: you signed up, and then waited to be matched.

Letting people pick

Our client was clear that the most important goal of this tool was autonomy. For a lot of people this organization serves, someone else has been making the big decisions for a long time. Some live with parents or guardians, or have a service provider coming into their home. Some were signed up for this program by someone else, and didn’t even know it. The people in roommate matching wanted to control their own destiny, and the old process was just one more place where someone else was calling the shots.

So, we designed it so people do the looking and evaluating themselves, whenever they want. You browse everyone in the pool, not a short list someone (or an algorithm) picked for you. Filters narrow it down, and you can turn any of them off or change them, or your own answers, entirely. The pool is small (about a dozen people right now), so filters alone run the risk of turning up just one person — or nobody.

We added a match percentage that shows how many of your answers align with someone else’s. This sorts the list rather than cutting it down, so everybody’s still there. One of our client contacts put it best: she’d see a 96% match and think it was so cool, then go look at everyone else anyway just in case. Profiles show where your answers line up and where they don’t. The main tab is called “People,” not “Matches,” because deciding who’s a good fit or not is up to you. We created a function to let people block others from messaging them, and to hide their profile if they just want to look without anyone new reaching out.

Making it work for everybody

It’s not flashy, and that’s by design (pun intended). Everyone in this program has a disability. We don’t know the specifics (on purpose, since we don’t collect health details), so we set the bar high. Everything passes Web Content Accessibility Guidelines (WCAG) AAA contrast. We used Atkinson Hyperlegible (a typeface made for people with low vision), text scales with the phone’s settings, focus states show up for keyboard navigation, and there’s no animation anywhere. Profile setup is broken into three short steps, and text boxes list examples (“e.g. 1 cat, 1 dog, 2 snakes”).

Most participants will use this on a phone, and including government-issued phones with very limited data. Some folks might use a library computer, but we couldn’t count on that. So this isn’t an actual app to download — it’s a website that opens in the phone’s browser, so it doesn’t take up storage or burn data on updates. The pages are itsy bitsy — about 20 kilobytes each. There are no photos for safety reasons, which also keeps data costs low. Everyone gets a roommate number (like Roommate #4821) and a small illustrated avatar so the screens don’t feel totally cold.

We used the nonprofit’s colors and their logo so that people recognize it as a service they already know, and can tell it’s legit. A parent, guardian, or case manager can fill out a profile on someone’s behalf if they need help. And since many people don’t know who their case manager is (we learned this in testing), that’s not a barrier to signing up.

Taking care wherever possible

Our client’s whole job is caring for people, so the tool needed to care for them too. We held ourselves to that, even when it was just us talking. We never called people “users,” even though it’s the go-to word in software. Many folks in this population are in recovery programs, where that word means something else. Internally we said “participants,” and in the product, people are “roommates.”

We ask about preferences instead of habits. We don’t ask if you drink (not something everyone wants to or can live around, especially folks in recovery), we ask if you’re okay living with someone who does. A question that started out about sensory issues became “What kind of home atmosphere do you prefer?”, which gets at the same thing without sounding like a medical form.

This data is close to health information, so we collected as little as we could. There are no open text boxes for health details. The program someone is in is only used behind the scenes to keep matches within the right group. It’s never shown to anyone else, and we tell people that when they sign up.

Then there’s the waiting. Staff still have to confirm with each person’s case manager that they’re eligible, which can take a few business days. Our first version stopped right after signup with a “thanks, we’ll be in touch.” However, people in testing wanted to get further than that. Now you can set up your profile while you wait, and we explain what’s happening, why, and that you’ll get a text and an email when you’re in. We remind people twice (which is a little extra), but it’s a kind way to make sure nobody’s confused about why they can’t see anyone yet.

Final Thoughts

None of this is new for design. Respecting people’s choices and being kind to them is supposed to be the job (in addition to making useful, usable products, of course). But this project made me do it more deliberately, and not only in the software. It showed me how much further empathy can go, from the wording on a single button to the words we use with each other when nobody else is listening.

Conversation

Join the conversation

Your email address will not be published. Required fields are marked *