The data sources
Every report starts from the building's official city identifiers — BBL (borough-block-lot) and BIN (building identification number) — resolved from the address via NYC's own geocoder. From there we pull six core public datasets:
| NYC GeoSearch | Address → BBL/BIN resolution. Free, no key. |
|---|---|
| PLUTO (64uk-42ks) | Building profile: year built, class, units, floors, area, zoning. |
| DOB violations (3h2n-5cm9) | Open and dismissed Department of Buildings violations, with issue dates and types. |
| ECB / OATH (6bgk-3dad) | Environmental Control Board violations and fine balances — what's actually still owed. |
| HPD violations (wvxf-dwi5) | Housing violations by hazard class (A/B/C), with status and dates. |
| LL84 benchmarking (5zyy-y8am) | Energy benchmarking and Local Law 97 exposure, for buildings over the 25,000 sq ft reporting threshold. |
All via NYC Open Data's Socrata API — free, public, no keys required. Additional record sets (311 complaints, DOB permits, bedbug filings, ACRIS sales history, tax arrears, facade-cycle status) are phased into the pipeline next.
The 0–100 scoring model
The Building Financial Risk Score is deterministic: the same public record always produces the same score. No vibes, no hidden weights, no per-building tuning. It scores open violations only — dismissed and closed records are shown for context but excluded from the score.
The model penalizes:
- Severity. Immediately-hazardous (Class C) HPD violations weigh heaviest, then hazardous (Class B), then DOB violations by type and age.
- Age of open violations. A violation open 12–18 years signals something structural — ownership changes, ignored clearances, or systems nobody maintains.
- Concentration. Five open Class C violations in a 16-unit building means something different than five across a 400-unit tower; the model adjusts for building size.
- Deferred-maintenance signals. Pre-war building with no recent work filings or violation activity gets a proxy penalty — in old walk-ups, silence correlates with aging systems that surface as assessments.
- LL97 exposure. Where benchmarking data exists, emissions over the Local Law 97 caps become a fine liability buyers inherit.
The risk bands
| High risk | 0–39. Multiple serious open violations, long-unresolved issues, or strong deferred-maintenance signals. Budget for serious follow-up questions and attorney review before any offer. |
|---|---|
| Elevated | 40–59. Real issues on the record, but fewer or less severe. Worth the questions, not necessarily a walk-away. |
| Moderate | 60–79. Typical NYC building paper trail — some history, nothing alarming. Normal diligence applies. |
| Low risk | 80–100. Clean or near-clean public record. Still not a clean bill of health — see what's not covered below. |
Higher score = lower risk. (Our sample report scores 33/100 — squarely HIGH RISK.)
What's explicitly NOT covered
The honest limits
- Co-op and condo financial statements are not public. Reserve balances, underlying mortgage terms, pending or planned assessments, and board finances cannot be screened from public records. Your attorney's due diligence covers these — our report tells you whether the building is worth that spend.
- We don't inspect the building. No physical condition assessment, no unit-level issues, no board-minutes review (though we tell you to ask for them).
- Thin records aren't proof of health. A clean public record on an 1890s walk-up can mean good management — or nobody filing paperwork. The deferred-maintenance proxy exists precisely for this, but it's a proxy, not proof.
- This is a screen, not diligence. Every report carries the disclaimer: informational only, not a substitute for attorney review, inspection, or financial advice.
Data freshness
City datasets update on different cycles — some daily, some quarterly. Every report is stamped with its pull date, and the freshness of each source is noted. One-off $79 reports include 30 days of free updates: if the record changes within that window, you hear about it. The $99/mo agent plan adds continuous change alerts on client shortlists.