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:

  1. Is my building rent-stabilized?
  2. 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 /info page 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 /info page 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
Share this project:

Updates