Apartment List~7 min read
A compliance tool had to be safer than doing it by hand.
Fees, policies, and disclosures could be written once and applied at the right scope. Two versions failed before the one that shipped.
- Role: Product strategy and design
- Timeline: 3 weeks
- Team: 1 engineer, me
- Impact: 80% of clients adopted
- Platform: Web

What we could measure
Existing clients using the new tool
The 80% is the share of existing clients who adopted the tool, measured from a standing start because the tool was new. Against the roughly 1,000 property management companies on the platform, that is about 800 of them. That makes it an adoption figure rather than an audit of anyone’s regulatory position, and this page used to label it “compliance”, which claimed the second thing while measuring the first. A target I set, 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. Still missing: how many clients that is, and who produced the count.
The question was safety, not convenience
Property managers were applying state, city, and community rules by hand across entire portfolios. One missing fee or outdated disclosure could trigger a triple-damages lawsuit. Regulators were circling, and Legal was raising alarms.
That makes this a liability product rather than a productivity one, and the distinction decides what to build. The value on offer is not time saved; it is exposure removed, and a tool that removes less exposure than it appears to is worth less than nothing. There is a second party as well — the fee total on a listing is something a renter is legally owed — so being wrong here has two victims and only one of them is the customer.
Three weeks and one engineer. The decision that mattered was templates over automation, and I made it on the shape of the risk rather than on usability: automated detection would have had to be correct on its own, and three weeks was not enough to prove that. So a person stayed between the system and the filing.
What shipped was one hub where fees, policies, and disclosures are written once and applied at company, state, or community scope. 80% of existing clients adopted it — an adoption figure, not an audit of anyone’s regulatory position, and the basis line below is explicit about the difference.
What I owned
I owned
- The call to template rather than automate, and the risk argument for it: shipping less capability on purpose because the two failure modes cost different amounts
- Product strategy and design
- Research with enterprise and mid-market property managers
- Three versions of the template model, two of which were dead ends
- The scope model: company, state, and community application levels
Shared with Legal and the engineer
- Which regulations the templates had to cover, and what counted as airtight: Legal’s call, not mine
Problem
Why trust the system to keep you safe when it had not earned that trust?
Three things kept breaking: policies varied by state and city with nowhere to keep them together; disclosure forms were inconsistent across a portfolio; and missing or incomplete audit trails meant no one could prove what had been applied, or when.
Two ways to be wrong
Being slow was recoverable. Being confidently wrong was not.
Doing this by hand fails in a particular way. It is slow, it is inconsistent across a portfolio, and the person doing it knows they might have missed something — and that last part is doing real work. An anxious property manager re-checks, asks Legal, and leaves themselves a margin.
A tool that automates the same job fails differently. It removes the anxiety along with the labour, so the first thing it changes is that nobody re-checks. If it is right, that is the whole value. If it is wrong, it has converted a hedged guess into a confident filing, and the statute does not distinguish between the two.
So the two failure modes cost different amounts, which is what made this a scoping question rather than a usability one.
A person stayed between the system and the filing
What could we safely ship in three weeks?
Automated regulation detection, templates applied at a chosen scope, and a checklist with no enforcement behind it were the three on the table. We had three weeks and one engineer against statutes carrying triple damages.
I chose templates with a human checking them before they went out. A compliance tool that is wrong is worse than none: property managers applying rules by hand knew they might be wrong, but a system that says they are covered when they are not turns an anxious guess into a confident mistake, and the statute doesn’t care which was made. Automation would have had to be right on its own, which we couldn’t prove in three weeks; templating puts a person between the system and the filing. It shipped with Legal signing off on the actual language. Nobody had to take an inference engine’s word for it.
The third scope model made the cut
Why did the third scope model finally work?
We considered applying based on the selected fee, dynamically detecting applicable regulations, or author-selected explicit scope. The first bulk-applied version didn’t scale beyond one portfolio shape. The second pulled in regulations to flag issues automatically; it solved scalability but wasn’t technically feasible, and my note at the time was that it was too clever for its own good.
I chose explicit scope: the author chooses and can see whether a fee, policy, or disclosure applies at company, state, or community level. That adds work per rule, repeatedly across portfolios with hundreds of communities, so we included bulk edits across management-company levels, which partners had asked for first. Version three shipped and was the least interesting of the three.



What made the cut
One hub for fees, policies, and disclosures, each applied at company, state, or community scope. Reusable disclosure templates with the governing statute cited. License status tracked instead of remembered. Bulk edits across management-company levels.


What the renter sees


What it kept possible
The version that shipped is the one that keeps the other versions available. Explicit scope means every rule in the system has been deliberately placed by a named author at a stated level, which is a labelled record of what applies where — and that is the raw material automatic detection would need in order to be checkable later. Shipping the automation first would have produced the opposite: a system making claims nobody could audit, in a category where an unauditable claim is the whole liability.
So the sequencing is the durable decision rather than the hub. Prove the rules, then automate against them. Version two was not wrong as an idea; it was wrong as a first move, and it is the thing this work makes possible rather than the thing it rules out.
What the 80% supports is narrower than it looks and worth saying plainly: the hub became the place partners keep their rules. That is adoption, and adoption is a precondition for the compliance claim rather than evidence of it.
Scoping against an asymmetric risk
When the failure modes cost different amounts, ship the version whose mistakes stay visible.
The instinct in a three-week window is to ask how much capability fits. That is the right question when being wrong is cheap, and it is the wrong one here, because the most capable version was also the one that would have hidden its errors behind a confident interface.
What I do differently since: before scoping, I ask what a wrong answer costs and who absorbs it. If the answer is that the user absorbs it silently, automation moves later in the sequence regardless of whether it is technically reachable, and a human stays in the loop not as a courtesy but as the error-detection mechanism.
The limit of that reasoning is in the note below. I have never had to defend it against anyone who disagreed, which is a weakness in the argument rather than a strength of it.
The central argument was never challenged
The two failed versions were both mine: a bulk-apply model that didn’t scale, and an automatic-detection model that wasn’t buildable. The third, explicit-scope version shipped. That is iteration, not disagreement.
Nobody argued the other side either. Legal never rejected a template, and the person pushing for automatic coverage was me — version two was my attempt at it, and what refused it was the backend rather than a person. So I still believe a confidently wrong tool is worse than no tool, and I have never had to defend that view against someone who disagreed. I don’t know whether it would have held.
