Apartment List~3 min read
Three analysts with the same title needed different access.
Three weeks, one PM, one engineer, and a backend that ruled one access model out.
- Role: Product design and research
- Timeline: 3 weeks
- Team: 1 PM, 1 engineer, me
- Impact: Permission tickets down 47%
- Platform: Web
Permission tickets per month
45% of partners, down to 24%
All access tickets per month
75% down to 54%, including password resets
From the support tool, where access and billing were tagged separately, against the roughly 1,000 property management companies on the platform. They cover a separate project from the Better Billing study. Read at three weeks, ahead of the three months Apartment List normally took to report, and still at this level when I left in 2024. Password resets, which this project did not touch, were 30 points of the 75%, so permission tickets were the other 45, falling to 24. That is a 47% reduction in the category this work targeted. The 47% assumes password-reset volume stayed steady, which I did not confirm. A partner raising both ticket types is counted approximately. A heuristic evaluation also scored the new permissions feature 92%. That is an expert review against usability principles, not a measure of anything an administrator did, so it is not reported as an outcome.
Overview
Access followed job titles, and the people administering it every day were first to see that no longer worked.
In a given month, 75% of partners raised an access ticket. Routine work stalled, people assumed the wrong colleagues could see sensitive data, and approvals ate time.
Worked with: 1 PM and 1 engineer; 20 subject matter experts in research and 10 marketers in testing.
What I owned
I owned
- Research with 20 subject matter experts through surveys, interviews, and journey maps
- Both prototypes and usability testing with 10 property management marketers
- Choosing between role-based and per-person assignment
- Defining scope, including cutting customer-defined roles because of audit risk
- The shared role definitions used across three platforms
Decided with the PM and engineer
- What the backend could support, which ruled one model out immediately
Research
Twenty administrators told us the org chart and the access chart had drifted apart.
I ran surveys, interviews, and journey maps with 20 subject matter experts who administered access every day. Only administrators could see the drift. The question was how organizations delegate authority, so interface preferences did not come into it.
Decision: who access follows
I assigned access per person and used roles only as a starting point.
I built two models and tested both with 10 property management marketers before engineering began. Role-based access, where access follows a title, worked for enterprise partners with strict hierarchies and failed smaller ones. Attribute-based access suited overlapping teams, but the backend could not support it in three weeks.
The cost: valid exceptions on day one can go undocumented by month six, after the person who granted them has left. Role-based systems are rigid because rigidity is auditable.


Redesign
One screen shows each person’s access, and one form assigns three products separately.
Two people can hold the same access type and still cover different regions and community counts, which a title could not express. The invite form asks for no title anywhere. Each product gets its own role decision.


Scope
Individual assignment and one shared set of role definitions shipped. Customer-defined roles and expiring access did not.
I cut customer-defined roles because they add unbounded audit risk, and kept individual assignments as controlled exceptions. Time-based expiration was useful but not critical.
Results
Permission tickets fell 47%, within a 28% fall across all access tickets.
I got the architecture I wanted without winning the argument
The team assumed roles mapped to job titles. Twenty people were not enough to make the case feel settled, and the three-analyst example still read as anecdote. I do not know how much evidence it should take before a visible mismatch stops being filed as an exception.
