Product Design | Case Study

2026

Simplifying UCLA subleasing

Thumbnail image

Role


Product Designer

& Frontend

Timeline


5 Weeks


Tools


Figma

Google Stitch

Claude Code

Collaborators


1 PM

1 PMM


The Problem

UCLA students struggle with subleasing, using platforms that weren't built for it.


Entering my third year, I needed summer housing for my first time outside a dorm. 2 weeks of Reddit threads, Facebook groups, and texting friends-of-friends, I found something. I got lucky and I knew it. I asked friends if they found a place, and kept hearing the same story with different details.

Thumbnail image

left to right — Facebook, ULoop, Reddit

No standardized apartment info. Posts are inconsistent in pricing, dates, room details, forcing constant back-and-forth just to get basics.

Platform switching is common. Students juggle Facebook groups, Reddit threads, Instagram stories, and word of mouth with little reliability.

Trust is always a concern. Communicating across informal channels with no verification adds anxiety to a process of high importance.

Research Insights

We surveyed 60 UCLA students across all years and living situations, then conducted 8 interviews with seekers and renters. My subleasing story turned out to be less unique than I thought, deja vu from conversations with friends scrambling to find a last-minute spot.

75%

rated the subleasing process as highly stressful, even students who hadn't done it yet

83%

said trust and clear listing information were their top priorities

70%

reached out to listings on at least 3 different platforms before securing a sublease.

Seekers lacked confidence in listings, going through multiple points of entry. Listers had no idea why people weren't responding.

Process

With under 5 weeks to build, I owned design and prototyping end-to-end while my collaborators handled the backend. With limited capacity for user testing, I prioritized iteration and feedback rounds. Tight constraints shaped my flexible workflow.

Thumbnail image

Early layout exploration in Figma


  1. Figma: wireframes, user flows, and component structure to establish hierarchy

  2. Google Stitch: explored alternate information architectures to see what held up before moving into detail

  3. Claude Code: built interactions and prototyped in real time, allowing for iteration. I was able to focus on creating a feeling

  4. Vercel for deployment and testing on a more native iOS view

Design Decision

Condensing apartment info into a standardized format.

Based on research insights, I explored card layouts to communicate apartment details without being overwhelming. This is the first interaction with hundreds of listings, so conveying essential info without additional fluff is important.

Sample image from a project

compact format for fast-scanning

thumbnail too small for preview

more listings, less intentional scan

Alt Text

larger card provides hierarchy

more listings, less intentional scan

preview image visible + carousel

Alt Text

refined hierarchy with price separate

location on one line

verified student indicator

research insights drove key changes


  • 83% valued trust as their top priority → verified student badge on listings and messages, tied to edu email

  • price moved to top left pill, first things eyes notice when scrolling

  • students think in distance, not addresses → showing both together is intuitive

Design Decision

Reviews are sifted and displayed by default.

I added an independent layer with aggregated reviews, auto sifted on every listing to provide quick access to otherwise external information. Seekers are able to see real reviews without navigating lengthy forums.

Design Decision

The academic calendar is built-in.

The academic calendar is built-in.

Subleasing demand follows UCLA's academic calendar, not arbitrary calendar windows. One tap eliminates an initial barrier by filtering date ranges that work for you.

interactive
Move InMove Out
Jun 22, 2026
Sep 11, 2026

Selecting a quarter autofills exact move-in and move-out dates.

Design Decision

Guiding listing creation

Creating a listing requires a lot of manual selection. I landed on two listing flows that I would love to A/B test. While both have drawbacks, I landed on the stepped creation as it provides structure that reduces cognitive load by dividing sections.

single page creation

stepped creation

Solution

BruinLease is a dedicated subleasing platform built specifically for UCLA students. Digestible listings, quarter-based search, verified identities, and in-app messaging in one place.

Every listing captures the same upfront info, price, room type, distance, bathroom. Students don't need to ask for the bare minimum

Filtering by quarter, verified badges, familiar room terminology built around how UCLA students actually think

Property insights from Reddit and Bruinwalk are matched based on address, so seekers can vet a building before they reach out to a lister

Reflection

Verification works if scaled

Verified badges are meaningful callouts, filtering legitimate UCLA students. But right now, our backend only accepts ucla.edu emails. Without opening it to all, the badge adds visual and cognitive noise.

Minimalist doesn't mean boring

I prioritized information clarity. But the UI ended up flatter than I wanted, resulting in loose hierarchy. More visual texture would make the experience feel less like a prototype and more like a product, integrated seamlessly in the college student stack.

Prototyping real time closed the feedback loop

Using Claude Code, I found interaction problems quickly that would have taken longer to workaround in Figma. I could refine micro-interactions and visual details through real time code manipulation, despite a smaller background in code compared to design engineers or PMs. Not handing it off allowed me to explore more intentionally.

If I could do it differently

With a bigger time window, I would have ran usability tests to measure how long it takes listers to match with leasers, how friction is reduced or added, and feedback from a large user audience to help push iteration.