Design Engineer

DoorList

You needed the right crowd to get into college parties. I made one friend enough to knock.

role
Lead Product Designer
team
Sole designer, 3 engineers, 3 on growth
timeline
19 months, 2024–2025
build
Designed the system in Figma, shipped it in Flutter
Five friends' faces beside the line: Maya, Jordan and +164 others are going.

A guest's whole product was a QR code

I joined DoorList as its first hire. The product ran the door for college parties. A host made the event, built the list, and scanned people in.

The company believed that closed door was the whole reason students trusted it. Hosts kept the door and brought the guests, so release after release gave them another tool. Guests got only a QR code. It appeared the night of the party, got them in, and went quiet.

The guest side of DoorList when I joined in April 2024.
at our University, DoorList has infinitely heightened exclusivity
The Cavalier Daily, September 2024.

They knew about the parties and never got invited

I interviewed ten guests around UVA, from deep in Greek life to no group at all. Even when they knew a party was happening and who would be there, they had no way to ask that cost them nothing.

I'd see a story from a party and have no idea how to get in.
From 10 UVA-area user interviews.

The app was keeping some of them from knowing, and all of them from asking.

They could see it happening. There was no acceptable way to ask in.

I proposed a map, and only the map was wrong

I argued the premise was wrong, and wanted to prove it with a map, which opens the door by default.

A map of every party on campus, placed by the people going

DoorList team opposed

  • Students only got invited to their own chapter’s events. There was no point seeing events you couldn’t get into.
  • Flutter couldn’t handle maps in the app.
I proposed it as a wireframe, but it was never built.

The chapter point was true for fraternities. I had no answer to Flutter, a constraint no better pitch could move. I let the map go and looked for another way to prove the idea.

that's just how it is, it'd be exclusive without an app
A coworker, during the map argument.

The fear was fair, so I shrank the bet to a tab and a button

I understood what the hosts stood to lose. Everyone on the app came in through a host. An open feed threatened the one thing hosts came for, a door they controlled.

To get it built, I made the public tab opt-in, showing only events a host chose to post. Next to it I put an Add Friends button that led nowhere on purpose. A press got you nothing, so each one was a student asking.

Host. Had to turn the switch on to show an event on the new public tab.

Guest. Added a friend. The profile opened, but there was nothing to do with a friend.

Neither one could break the app, and each could show whether students wanted more.

The empty tab drew twelve times the taps of any other

I watched the tab stay empty, and within two days people at the company were asking me to take it down. I opened PostHog to see how bad it was.

We should probably remove the tab now that we know no events are getting added
A coworker.

People were adding friends, even though it led nowhere.

The demand was real, so the tab was not the failure. My argument was. I had been trying to open the door wider, which still accepts that access is a question of how far it swings. Students were not asking for a feed of strangers. They were asking about the people they already knew.

The way in was the friends they already had

I had nothing in the event category to copy, so I took the model from Instagram. You open the door with your friends, and that is what keeps it safe.

I rebuilt discovery as your friends' events. Asking got a shape of its own. Both sides ended up with more control.

Request to join

Opens the door for people who weren’t invited, and brings them back to the app.

Request a +1

Guests bring their friends in, and those friends come back to the app too.

Request to add someone not yet on the app

Brings in people who aren’t on DoorList yet. This is how the app grows.

Three ways to ask for a way in, and each one waits on the host’s Approve or Deny. The first two bring people back to the app. The third brings in people who were never on it.

I ranked the feed by who you knew was going

The better you know who will be there, the more likely you are to go. I built the ranking for attendance, not for time in the app. Every feed is an opinion about whose events you see first, and I decided DoorList's.

Who’s going and what each one adds, beside one home feed. Jo is going, not added yet: plus 1, a friend in common, and Masquerade Ball, marked Suggested event, sits in the bottom slot of four. Maya is going: plus 2, a friend, one slot higher. Theo is going: plus 2, a friend, plus 1, you’ve been to the same events, second from the top. Maya and Theo are going: plus 2 for Maya and plus 3 for Theo, the top slot.

The more of your network was going, the higher the event sat in your home feed.

What the ranking was never allowed to do

  • Never from a private event unless both were confirmed guests

  • Never more than a suggestion or two a week

  • Always a way to say not this person

Before the ranking, more friends meant a longer list. After it, more friends meant more of the feed was about you. In our own analytics, students with three or more connections came back four times as often.

Students with 3 or more friends came back 4× as often.

012345+Friends on DoorList

It stopped being the app I was hired into

I stopped treating the friend graph as a feature and made it the main surface. By the end DoorList was where you found out what your friends were doing.

Downloads

45K to 800K

Monthly retention

4% to 68%

Feb 2024 – Sep 2025 · From Google Analytics

Nov 2024

You could see your friends' events, once you scrolled past Featured.

Early 2025

Who was going got the most views, so friends' events became Home.

Before Sep 2025

Your friends decided which event you saw first.

The lit part of each screen is the first event from your friends.
  • A product's constraints are not what it is. They are one way of getting what it is for.

    DoorList treated being closed as its definition, and everyone took closed and trusted for the same thing.

    I rebuilt discovery on the friend graph instead of the gate, and it came out more open and more safe at once.

  • Every piece you play moves another. A piece that will hit a wall was never a move.

    I argued for a map, the right idea on an interface the app could not build and hosts could not accept.

    I stopped arguing the merits and argued the size of the bet: a tab a host could refuse, and a button with nothing behind it.

  • Events only matter because of the people you share them with.

    I ranked the feed on relationships rather than on events.