Inspiration
A million NYC apartments are rent-stabilized, and roughly 1 in 4 of those tenants don't know it. That gap is the whole reason landlords can quietly overcharge for years before anyone notices. We've all had friends sign a lease, hand over a security deposit, and never once think to ask whether the rent on the page was even legal. We wanted to build the thing we'd want them to check before signing.
## What it does
AmIRentStabilized.nyc answers two questions for NYC renters:
- Is my building rent-stabilized?
- Given my lease history, am I being overcharged?
You type in an address. We geocode it through NYC Planning Labs,
normalize it to a BBL, and check that against NYCDB's rentstab_v2
dataset. If you also enter past leases, we walk each renewal forward
through the Rent Guidelines Board orders (#1 through #57) to compute what
the legal rent should be at every step, and flag the years where the
actual rent went higher. If we find an overcharge, we draft DHCR Form
RA-89 — the Tenant's Complaint of Rent Overcharges — pre-filled with your
numbers, ready for a tenant attorney to review.
There's also a long-form /info page that explains the program for
anyone who's never had it explained to them, with direct citations from
the two academic papers the calculations lean on.
## How we built it
- Next.js + TypeScript + Tailwind for the app
- MapLibre GL for a 3D city map with a BIN-keyed building highlight
- NYC Planning Labs Geocoder for address resolution; NYCDB for the stabilization registry
- A from-scratch RGB renewal-increase walker that handles 1- and 2-year leases against the right historical order
- Drizzle ORM + better-sqlite3 for local data
- A scrollytelling
/infopage with verbatim quotes from Zapatka & de Castro Galvao (2023) and Chen, Jiang & Quintero (2023) — no paraphrasing
## Challenges we ran into
- NYC address data is messier than it looks. A single building can have multiple BBLs, BINs, and a half-dozen accepted street-name spellings. We had to normalize through a few lookups before the stabilization join worked reliably.
- RGB increases aren't a flat percentage. They depend on the lease start date, whether it's a 1- or 2-year renewal, and the specific order that was in effect that year. Walking that forward without quietly being wrong was a whole subproject.
- 3D map z-fighting between the basemap building layer and our highlight polygon — solved by buffering the polygon outward a few meters and extruding the tower a hair above the OMT layer.
- Sourcing. We started with paraphrased pull quotes attributed to the Furman Center, then realized one of them wasn't actually in the paper at all. Tracking down a real, citable source for the awareness gap took longer than building the calculator.
## Accomplishments that we're proud of
- It works end-to-end: address → stabilization status → overcharge math → pre-filled complaint form.
- The
/infopage treats the reader like an adult. Real sources, direct quotes, no marketing fluff. - The 3D map looks cinematic on a slow scroll without being a gimmick — it's there because seeing your building highlighted in context actually helps people understand the answer.
## What we learned
- How NYC's housing data is actually structured — which sources are authoritative (DHCR, RGB) versus convenient and scraped (NYCDB) — and where the seams are.
- "Rent stabilization" and "rent control" are different things, even though most tenants and a lot of journalists use them interchangeably.
- The hardest part of a tenant-rights tool isn't the calculation. It's giving the user enough context that they'll actually trust the answer applies to them.
## What's next for AmIRentStabilized.nyc
- DHCR rent-history (REC-1) ingestion, so the calculation starts from the registered rent on file with the state instead of the tenant's first remembered lease.
- Handling the messier overcharge cases: MCI and IAI adjustments, vacancy allowances, preferential rent terminations, fraud claims.
- Spanish-language support. Both papers we cite show foreign-born and Hispanic households are over-represented in stabilized units and disproportionately unaware of their status — they're the people this tool should reach first.
- A "save my session" so a tenant can come back later with new lease data without retyping everything.
- Conversations with Met Council on Housing and a couple of tenant attorneys, to make sure the RA-89 draft is something a real lawyer would actually want to receive.
Built With
- next.js
Log in or sign up for Devpost to join the conversation.