Methodology
How every number on this product is computed, which public sources it comes from, and what happens when a source is late, absent, or restricted. Every section is directly linkable via anchor.
Glossary
- BBL(Borough·Block·Lot)
- The 10-digit unique identifier NYC uses for a parcel of real property. First digit is the borough code (1 = Manhattan, 2 = Bronx, 3 = Brooklyn, 4 = Queens, 5 = Staten Island).
- BIN(Building Identification Number)
- The 7-digit identifier NYC uses for a single building on a lot. Multiple BINs can share a BBL; DOB and OATH records typically key on BIN.
- CBL(Covered Buildings List)
- The DOB-published PDF that lists every property subject to Local Law 97 with its pathway (Article 320 or Article 321). Used as the authoritative coverage universe.
- LL84(Energy & Water Data Disclosure)
- NYC benchmarking law that requires large buildings to submit annual whole-building energy and water use to DOB, published to NYC Open Data. Used as the emissions source of truth.
- LL33(Energy Efficiency Grades)
- NYC law that translates each building's ENERGY STAR score into a public letter grade (A/B/C/D/F). Publicly posted at the building entrance and disclosed via NYC Open Data.
- Article 320
- The main LL97 pathway. Sets an absolute annual carbon cap based on gross floor area and occupancy group. Being over cap triggers a $268/tCO2e penalty.
- Article 321
- Prescriptive-measures alternative pathway open to specific building types (rent-regulated, houses of worship, etc.). No cap; compliance is met by completing a mandated efficiency measures package.
- OATH(Office of Administrative Trials and Hearings)
- The NYC agency that adjudicates DOB and ECB summonses. LL97 violations that ripen into penalties are heard here.
- ECB(Environmental Control Board)
- The DOB adjudicatory arm that issues summonses for building code violations. Now merged into OATH's hearings division.
- PEJA(Potential Environmental Justice Area)
- NYS Department of Environmental Conservation-published census tracts that meet income and minority-population thresholds. Used here as a fallback equity overlay when NYC's LL64 IRCM/RCJD dataset is not publicly accessible.
- IRCM/RCJD(LL64 Racial Equity)
- NYC Environmental Justice for All Report's Impacted Racial and Communities of Concern methodology, published by NYC MOEJ. Preferred equity source when accessible.
- PLUTO(Primary Land Use Tax Lot Output)
- Department of City Planning's canonical tax-lot dataset (BBL, address, borough, building class, GFA, spatial centroid). Used for BBL resolution and fallback geometry.
Need more detail on a term? See methodology · glossary.
Coverage & scope
LL97 covers real property in New York City with more than 25,000 sqft aggregate floor area under DOB's aggregation rules. This product treats DOB's Covered Buildings List (CBL PDF, ingested annually) as the authoritative universe: every row here is a BBL on that list, resolved to LL84 emissions filings, LL33 letter grade, and enforcement history. Non-CBL BBLs receive a diagnostic “not on CBL” record when accessed directly and are excluded from all product-wide totals and charts.
A tiny subset of CBL rows lack pathway indicators; those are marked pathway_unknown and appear in filters and lists but never receive a cap, delta, or penalty. See pathway unknown.
Source inventory (with freshness)
Every load-bearing input, its dataset id, refresh cadence, staleness threshold, and last-known-good pointer. Rows with warn/errorstatus flow into the product-wide freshness pill in the header and drive the stale banner. This table is the authoritative answer to “when did this refresh?”
| Source | Agency | Dataset id | Access | Refresh cadence | Threshold | Latest status | Latest finished | Rows loaded | Last-known-good | Depends on / used by |
|---|---|---|---|---|---|---|---|---|---|---|
LL97 Statutory Cap Coefficients cap_coefficients source ↗ | NYC Admin Code Title 28 Article 320 | - | reference json | on_methodology_change | 25 16 occupancy groups x 2 periods = 32 rows expected; floor is 25. | Success | 2026-07-14 15:06 UTC 1 month ago | 32 | 2026-07-14 15:06 UTC 32 rows · 1 month ago | /ll97/cliff, /ll97/buildings/[bbl], /ll97/methodology |
LL97 Covered Buildings List (CBL PDF) cbl_pdf source ↗ | DOB | - | pdf download | weekly | 20,000 Independently observed 2026-07-14 CBL PDF yields ~26,974 unique BBLs. DATA_ARCHITECTURE.md set 40,000 as an aspirational floor assuming per-building parse; per-BBL parse of the current CBL only reaches ~27k. Floor lowered here to catch a truncated parse without a false-fail for the current source scale. | Success stale · past 168h | 2026-07-14 16:03 UTC 1 month ago | 26,974 | 2026-07-14 16:03 UTC 26,974 rows · 1 month ago | /ll97, /ll97/cliff, /ll97/buildings, /ll97/buildings/[bbl], /ll97/enforcement, /ll97/methodology, /ll97/processing |
LL97.xlsx supplemental inventory cbl_xlsx_supplemental source ↗ | DOB (via 4hxk-b29t attachment) | 4hxk-b29t | xlsx download | weekly | 10,000 Independently observed 2026-07-14: LL97.xlsx has 12,667 rows. Floor below to catch a truncated download. | Success stale · past 168h | 2026-07-14 16:04 UTC 1 month ago | 7,084 | 2026-07-14 16:04 UTC 7,084 rows · 1 month ago | /ll97/methodology |
Derived: per-building actual-vs-cap compute_exposure source ↗ | (computed) | - | computed | weekly | 10,000 Article 320 latest-CY buildings expected >= 10,000 rows given a per-BBL CBL parse of ~27,000 with LL84 join coverage; lower than DATA_ARCHITECTURE.md's 30k because the CBL universe is smaller than that spec assumed. | Success stale · past 168h | 2026-07-15 16:41 UTC 4 weeks ago | 53,928 | 2026-07-15 16:41 UTC 53,928 rows · 4 weeks ago | /ll97, /ll97/cliff, /ll97/buildings, /ll97/buildings/[bbl], /ll97/enforcement, /ll97/methodology |
DOB LL97 Aggregate Citations (press release + updates) dob_aggregate_citations source ↗ | DOB | - | reference json | on_source_change | 8 9 metrics captured from the April 2026 release; floor is 8 to allow a single retirement without hard failing. | Success | 2026-07-14 23:21 UTC 4 weeks ago | 10 | 2026-07-14 23:21 UTC 10 rows · 4 weeks ago | /ll97, /ll97/methodology |
DOB Violations dob_violations source ↗ | DOB | 3h2n-5cm9 | socrata | weekly | 0 LL97-tagged rows are zero-valid; overall dataset thresholded to >= 1,000 rows in the CBL-BBL join at compute time. | Success stale · past 168h | 2026-07-15 15:31 UTC 4 weeks ago | 25,172 | 2026-07-15 15:31 UTC 25,172 rows · 4 weeks ago | /ll97/enforcement, /ll97/buildings/[bbl], /ll97/methodology |
ECB Violations (OATH-adjudicated summonses) ecb_violations source ↗ | DOB | 6bgk-3dad | socrata | weekly | 0 LL97-tagged rows are zero-valid; overall dataset thresholded to >= 1,000 CBL-BBL matches at compute time. | Success stale · past 168h | 2026-07-15 15:34 UTC 4 weeks ago | 41,725 | 2026-07-15 15:34 UTC 41,725 rows · 4 weeks ago | /ll97/enforcement, /ll97/buildings/[bbl], /ll97/methodology |
NYC LL64 EJ Area Census Tracts (ircm-rcjd) ej_ircm_rcjd source ↗ | MOCEJ | ircm-rcjd | socrata | weekly | 55 NYC has 59 community districts and 2,168 census tracts; a floor of 55 catches an incomplete LL64 pull. | Unknown stale · past 168h | never | - | never | /ll97, /ll97/cliff, /ll97/buildings, /ll97/enforcement, /ll97/methodology fallback → ej_nys_peja |
NYS PEJA Feature Service (fallback for EJ overlay) ej_nys_peja source ↗ | NYS DEC (via NYS GIS) | 02d8ba023f90403c92f5523e8f3c8208 | feature service | weekly | 20 NYC-overlapping PEJA features number in the thousands; a floor of 20 catches an empty pull. | Warn stale · past 168h Using NYS PEJA fallback (ircm-rcjd primary source is currently login-gated); persistent comparability disclaimer required in UI. | 2026-07-15 16:40 UTC 4 weeks ago | 4,312 | never | /ll97, /ll97/cliff, /ll97/buildings, /ll97/enforcement, /ll97/methodology |
Awaited BEAM per-building release fields (metadata only) future_beam_fields source ↗ | DOB (announced April 2026) | - | reference json | on_source_change | 12 13 fields captured from DOSSIER gaps list. | Success | 2026-07-14 15:06 UTC 1 month ago | 13 | 2026-07-14 15:06 UTC 13 rows · 1 month ago | /ll97/processing, /ll97/methodology, /ll97/enforcement |
LL33/LL95 Letter Grades ll33_grades source ↗ | DOB | 355w-xvp2 | socrata | weekly | 20,000 Independently observed 2026-07-14: 21,681 rows. | Warn stale · past 168h NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. | 2026-07-14 16:06 UTC 1 month ago | 12,208 | never | /ll97/buildings, /ll97/buildings/[bbl], /ll97/methodology |
LL84 Benchmarking (CY2022-current) ll84_current source ↗ | DOB / Sustainability (via NYC Open Data) | 5zyy-y8am | socrata | weekly | 95,000 Combined with ll84_prior; floor below the observed 103,259 rows so a partial pull fails visibly. | Warn stale · past 168h NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. | 2026-07-14 15:59 UTC 1 month ago | 80,413 | never | /ll97, /ll97/cliff, /ll97/buildings, /ll97/buildings/[bbl], /ll97/methodology, /ll97/processing |
LL84 Benchmarking (CY2021) ll84_prior source ↗ | MOCEJ (was DOB) | 7x5e-2fxh | socrata | annual | 0 CY2021 dataset; combined 95k floor is enforced on the aggregate LL84 table, not per-dataset. | Warn NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. | 2026-07-14 16:01 UTC 1 month ago | 25,835 | never | /ll97/buildings/[bbl], /ll97/methodology |
OATH Hearings Division Case Status oath_hearings source ↗ | OATH | jz4z-kudi | socrata | weekly | 0 LL97-tagged rows are zero-valid; DOB-issued subset thresholded to >= 100 rows. | Warn stale · past 168h NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. | 2026-07-15 15:29 UTC 4 weeks ago | 166,548 | never | /ll97/enforcement, /ll97/methodology |
OATH Trials Division Case Status oath_trials source ↗ | OATH | y3hw-z6bm | socrata | weekly | 0 LL97-tagged rows are zero-valid; DOB-issued subset thresholded to >= 10 rows. | Warn stale · past 168h NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. | 2026-07-15 15:29 UTC 4 weeks ago | 3,262 | never | /ll97/enforcement, /ll97/methodology |
PLUTO parcels (secondary parcel lookup) pluto_parcels source ↗ | NYC DCP | 64uk-42ks | socrata | monthly | 800,000 PLUTO citywide is ~858,602 rows (verified 2026-07-14). | Warn stale · past 720h NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. | 2026-07-14 16:40 UTC 1 month ago | 858,602 | never | /ll97/search, /ll97/buildings/[bbl], /ll97/methodology |
LL84 property type -> LL97 occupancy group map property_type_map source ↗ | BE-Ex (as disclosed) | - | reference json | on_methodology_change | 30 Portfolio Manager property types in the NYC corpus number ~30-50. | Success | 2026-07-14 15:06 UTC 1 month ago | 55 | 2026-07-14 15:06 UTC 55 rows · 1 month ago | /ll97/buildings/[bbl], /ll97/methodology |
DOB Safety Violations safety_violations source ↗ | DOB | 855j-jady | socrata | weekly | 0 LL97-tagged rows are zero-valid; overall dataset thresholded to >= 1,000 CBL-BBL matches. | Success stale · past 168h | 2026-07-15 15:36 UTC 4 weeks ago | 83,507 | 2026-07-15 15:36 UTC 83,507 rows · 4 weeks ago | /ll97/enforcement, /ll97/buildings/[bbl], /ll97/methodology |
Daily source-reachability smoke test smoke_test source ↗ | (internal) | - | computed | daily | 1 One successful HEAD/GET per external source. | Success stale · past 24h | 2026-07-14 16:54 UTC 1 month ago | 14 | 2026-07-14 16:54 UTC 14 rows · 1 month ago | /ll97/methodology |
Aggregate reconciliation (DOB citations)
DOB publishes selected aggregates as press releases and PDFs. We store them verbatim with citation URL and use each as an independent check on our computed values. When the computed value drifts beyond the per-metric tolerance, we display an “outside tolerance” badge on the Overview page and do not overwrite the citation.
unresolved_estimate and are excluded from both numerator and denominator; buildings without a filed LL84 record land in the DOB denominator (as non-compliant) but not ours (no computable exposure). The 9 pp gap is the direct, expected result of the denominator mismatch. Widening the tolerance would hide the underlying difference; we keep it at ±2 pp so the gap is visible and reason-labeled.| Metric | Dimension | Value | Units | Tolerance | Published | Citation |
|---|---|---|---|---|---|---|
| urban_green_2030_benchmark | - | 57 | percent | 5 pp | 2026-04-15 | source ↗ |
| non_filer_count | - | 1,400 | buildings | - | 2026-04-15 | source ↗ |
| non_filer_count | - | 1,400 | buildings | - | 2026-04-15 | source ↗ |
| pct_filed_hotels | property_type=Hotels | 95 | percent | 2 pp | 2026-04-15 | source ↗ |
| pct_filed_manhattan | borough=Manhattan | 90 | percent | 2 pp | 2026-04-15 | source ↗ |
| pct_filed_offices | property_type=Offices | 95 | percent | 2 pp | 2026-04-15 | source ↗ |
| pct_filed_recreation | property_type=Recreation | 45 | percent | 2 pp | 2026-04-15 | source ↗ |
| pct_filed_religious | property_type=Religious | 30 | percent | 2 pp | 2026-04-15 | source ↗ |
| pct_filed_staten_island | borough=Staten Island | 83 | percent | 2 pp | 2026-04-15 | source ↗ |
| pct_under_2024_cap | - | 93 | percent | 2 pp | 2026-04-15 | source ↗ |
| pct_under_2024_cap | - | 93 | percent | 2 pp | 2026-04-15 | source ↗ |
| total_filed | - | 28,000 | count | - | 2026-04-15 | source ↗ |
| total_filed | - | 28,000 | count | - | 2026-04-15 | source ↗ |
Urban Green 2030 benchmark
The Urban Green Council's LL97 progress report (July 2024) projects that approximately 57% of Article 320 buildings will exceed their 2030-2034 emissions cap at current filing trajectories, absent additional intervention. The cliff page shows this citation side-by-side with our computed 2030 over-cap percentage, applies a ±5 pp tolerance, and marks the delta “outside tolerance” when it exceeds that band. The citation is stored in nyc.ll97_dob_aggregate_citations with metric name urban_green_2030_benchmark and URL to the source PDF.
Urban Green is a widely-cited independent nonprofit; this is not a DOB-published figure. When DOB or another authoritative source publishes a competing 2030 exceedance projection, we will list both side-by-side rather than overwrite.
Article 320 cap computation
Capbbl,period = Σ (occupancy_coefficientocc,period × gross_floor_areabbl,occ). Coefficients are taken from the LL97 rules table (as loaded into nyc.ll97_cap_coefficients). GFA is taken from the most recent LL84 filing per BBL; PLUTO is used only when LL84 is absent. Deltabbl= actual_ghg − cap; penalty_estimate = max(0, delta) × $268 / tCO2e (2024 rate).
Buildings with unresolved GFA, unresolved primary property type, or occupancy classifier confidence < 0.7 are marked unresolved_estimate and excluded from both cap and penalty computations.
Article 321 (prescriptive compliance)
Article 321 buildings comply by implementing the prescriptive measures package. There is no numerical cap. Cap, delta, and penalty columns are intentionally suppressed throughout the product (Buildings list, Building detail, CSV export). Article 321 buildings still appear on lists, they just do not compare against a cap.
Pathway unknown
A small subset of CBL rows do not clearly indicate Article 320 vs Article 321. We do not guess: we mark the pathway as pathway_unknown, suppress cap and penalty, and expose it as a filter on the Buildings list. When DOB publishes an updated CBL PDF, we pick up any resolutions on the next ingest without operator intervention.
2030 cliff exceedance
“Cliff” refers to the 2030-2034 compliance period, where LL97 caps become substantially stricter than the 2024-2029 caps. On the cliff page, we compute an exceedance percentage as over_cap_2030 / (over_cap_2030 + under_cap_2030) × 100 from nyc.ll97_computed_exposure for period 2030-2034. Buildings with unresolved estimates are excluded from the denominator. The distribution histogram bins buildings by delta_tco2e (actual - cap) at −2000, −500, 0, +500, +2000, and +10000 tCO2e boundaries.
Penalty definitions
LL97 assigns two distinct penalty computations:
- Article 320 cap exceedance:$268 per metric ton of CO2e over the annual cap, per year of exceedance. This is the headline “penalty exposure” shown on the buildings list. It is a per-building, per-year estimate; DOB may negotiate mitigations, credits, or good-faith deferrals that we cannot see in public data.
- Article 320 no-filing: $0.50 per sqft per year for BBLs with LL97 filing obligations that failed to file. This product does not currently render a distinct no-filing penalty; it appears in aggregate DOB citations as
non_filer_count. - Article 321 non-compliance: $2,000-per-year violation for failure to complete the prescriptive measures package. Not currently computed here; DOB enforcement records are the source of truth.
- False reporting: $500,000. Not computed here.
CBL inclusion criteria
A BBL is on the Covered Buildings List when the property meets the LL97 25,000 sqft threshold under DOB's aggregation rules. BBLs absent from the CBL show a “not on CBL” panel on the building detail page and are not counted in product-wide totals.
Enforcement linking
Enforcement events are linked to a covered BBL primarily via BIN; when BIN is missing (some OATH records), we fall back to a normalized address match against PLUTO. Events that still cannot be linked appear under “unlinked” on the Enforcement page for auditability. Events flagged is_ll97_specific=false are shown only when the user explicitly opts in to building-scoped context.
Equity source decision & PEJA fallback
The EJ overlay attempts to load NYC LL64 Designated Communities (IRCM-RCJD). When LL64 is unavailable or restricted, the product falls back to the NYS PEJA dataset (state-level environmental justice designation). Every cliff view surfaces a persistent disclaimer identifying which source is active and warns that PEJA has a different legal basis and geographic scope than LL64.
Address resolution
Address search resolves free-text input to a 10-digit BBL through two paths:
- NYC GeoSearch (
geosearch.planninglabs.nyc): the official Department of City Planning geocoder. Returns candidates with BBL, BIN, borough, and coordinates. Used first for “250 Broadway, Manhattan”-style queries. - PLUTO fallback: when GeoSearch cannot resolve an address, we pattern-match against
nyc.ll97_pluto_parcels.address. This surfaces buildings that GeoSearch marks ambiguous but PLUTO has a canonical row for.
A direct 10-digit BBL entry skips both and short-circuits to the building record. If the BBL is not in the CBL, LL84, or PLUTO tables, the record page renders a “record not found” state with the three-source diagnostic and a fresh address search field.
Occupancy-group approximation
LL97 caps are calculated per LL97 occupancy group (offices, hospitals, retail, etc.), which is a distinct taxonomy from the LL84 “primary property type” string. We use a rules-based mapper: LL84 property type + PLUTO building class produces a most-likely occupancy group, with a confidence score in [0, 1]. Rows with confidence < 0.7 receive the occupancy_low_confidence data-quality flag and their computed cap is suppressed from headline metrics. When DOB publishes canonical occupancy-group assignments (BEAM field ll97_occupancy_group), this approximation is replaced without operator intervention.
Data quality flags catalog
Each row in nyc.ll97_computed_exposure may carry any of the following flags:
missing_gfa· LL84 filing lacked GFA.missing_property_type· LL84 lacked a primary property type.gfa_disagreement_gt_5pct· PLUTO vs LL84 GFA differ > 5%.occupancy_low_confidence· Classifier confidence < 0.7.ll84_zero_ghg· LL84 filed 0 tCO2e; treated as unresolved.historic_reporting_missing· No LL84 for the reference year.simulated_shadow· Row is a simulated best-effort placeholder for a not-yet-public BEAM field.cap_not_applicable_pathway· Cap suppressed because pathway is 321 or unknown.
LL84 refresh cycle
LL84 filings for a calendar year are due May 1 of the following year. This product displays the most recent available LL84 report per BBL. CY2025 filings are in-flight as of this refresh; when the annual LL84 dataset lands, the product picks up new rows on the next ingest.
Future · BEAM release (per-building compliance)
- Assessed penalty (vs theoretical)Actual penalty DOB assessed against a building, distinct from the theoretical over-cap exposure computed from LL84 emissions.Public partial shadow:
ecb_summons_issuedRelease status: announced_not_yet_released · Owner: DOB Sustainability data contact - Audit assignmentBuildings selected by DOB for LL97 filing audit and the audit stage.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Audit outcomeResult of an LL97 audit (accepted / correction ordered / penalty referred).Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Extension flagWhether a per-building filing was accepted under a filing extension (June 30 grace or BEAM extension to August 29).Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Filing received dateTimestamp DOB received a per-building LL97 compliance filing.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Good-faith effort applicationWhether an owner has applied for a good-faith effort determination and its status.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Mediated resolution applicationApplication for the LL97 mediated resolution process and its outcome.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Notice of deficiency statusWhether a notice of deficiency has been issued for a building and its current stage.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Per-building filing statusFiling status for each covered BBL/BIN combination (filed / late / non-filed / exempt) as tracked in DOB's BEAM system.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- Pre-OATH correspondenceDOB correspondence with owners before an OATH matter is opened (notice of deficiency, cure letters).Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- RDP attestationRegistered Design Professional attestation attached to each per-building compliance filing.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- RECs / offsets claimedRenewable Energy Credits and beneficial-use offsets claimed to reduce reported emissions.Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
- 60-day cure windowThe 60-day cure window state for a building under LL97 enforcement (open / cured / expired).Release status: announced_not_yet_released · Owner: DOB Sustainability data contact
Data access & escalation
Not every LL97 input is publicly accessible. When a source is throttled (Socrata rate-limit, missing NYC_APP_TOKEN), restricted (LL64 IRCM/RCJD), or otherwise unavailable, the product does one of three things:
- Fallback datasets: when a documented fallback exists (LL64 → NYS PEJA), the ingest loads the fallback, records the substitution in the source inventory, and surfaces a persistent disclaimer wherever the affected metric appears.
- Last-known-good: when the current refresh fails but the previous successful load is still valid, we serve the last-known-good rows and surface an amber “last refresh warned” banner with the reason and the timestamp.
- Empty state: when a source has never landed and no fallback exists, the dependent view renders an explicit empty state naming the source, the escalation owner, and a link to the source's public URL.
Every load-bearing source in the inventory has an escalation owner and trigger. The trigger fires automatically when ingest_runs.status = 'error' for two consecutive attempts, or when last_success_at exceeds the source's stale_after_hours. See source inventory for per-source owners.
Accessibility
The product is designed to meet WCAG 2.1 AA on every route:
- Every form control has a bound label (via
htmlFor). - Every chart bar and interactive element has a screen-reader label with the numeric value and the meaning of that value.
- Focus order follows the visual reading order; every interactive element is keyboard-reachable and shows a visible focus outline.
- Color is never the sole channel: pathway badges combine color with text, over/under cap uses ↑/↓ + text, and every “within/outside tolerance” state has icon + text.
- A skip-to-main-content link is present on every route for keyboard users.
Known limitations: some Recharts default tooltips may not announce in every screen reader. If you encounter an accessibility issue, contact the escalation owner listed in source inventory.
Ingest run history (recent 30)
| Source | Started | Finished | Status | Rows fetched | Rows loaded | Drift | Warn / error |
|---|---|---|---|---|---|---|---|
| compute_exposure | 2026-07-15 16:40 UTC | 2026-07-15 16:41 UTC 4 weeks ago | Success manual | 53,928 | 53,928 | - | |
| ej_nys_peja | 2026-07-15 16:40 UTC | 2026-07-15 16:40 UTC 4 weeks ago | Warn manual | 4,312 | 4,312 | - | Using NYS PEJA fallback (ircm-rcjd primary source is currently login-gated); persistent comparability disclaimer required in UI. |
| safety_violations | 2026-07-15 15:34 UTC | 2026-07-15 15:36 UTC 4 weeks ago | Success manual | 246,574 | 83,507 | - | |
| ecb_violations | 2026-07-15 15:31 UTC | 2026-07-15 15:34 UTC 4 weeks ago | Success manual | 142,782 | 41,725 | - | |
| dob_violations | 2026-07-15 15:30 UTC | 2026-07-15 15:31 UTC 4 weeks ago | Success manual | 73,116 | 25,172 | - | |
| oath_trials | 2026-07-15 15:29 UTC | 2026-07-15 15:29 UTC 4 weeks ago | Warn manual | 3,263 | 3,262 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| oath_hearings | 2026-07-15 15:09 UTC | 2026-07-15 15:29 UTC 4 weeks ago | Warn manual | 166,548 | 166,548 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| safety_violations | 2026-07-15 15:04 UTC | 2026-07-15 15:09 UTC 4 weeks ago | Warn manual | 246,574 | 83,507 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| ecb_violations | 2026-07-15 15:00 UTC | 2026-07-15 15:04 UTC 4 weeks ago | Warn manual | 142,782 | 41,725 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| dob_violations | 2026-07-15 14:59 UTC | 2026-07-15 15:00 UTC 4 weeks ago | Warn manual | 73,116 | 25,172 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| compute_exposure | 2026-07-14 23:21 UTC | 2026-07-14 23:21 UTC 4 weeks ago | Success manual | 53,928 | 53,928 | - | |
| dob_aggregate_citations | 2026-07-14 23:21 UTC | 2026-07-14 23:21 UTC 4 weeks ago | Success manual | 10 | 10 | - | |
| compute_exposure | 2026-07-14 16:53 UTC | 2026-07-14 16:53 UTC 1 month ago | Success manual | 53,928 | 53,928 | - | |
| compute_exposure | 2026-07-14 16:52 UTC | 2026-07-14 16:52 UTC 1 month ago | Error manual | - | - | - | duplicate key value violates unique constraint "ll97_computed_exposure_bbl_period_methodology_version_key" |
| oath_hearings | 2026-07-14 16:46 UTC | 2026-07-14 16:50 UTC 1 month ago | Warn manual | 166,548 | 166,548 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| oath_trials | 2026-07-14 16:45 UTC | 2026-07-14 16:45 UTC 1 month ago | Warn manual | 3,263 | 3,262 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| oath_hearings | 2026-07-14 16:45 UTC | 2026-07-14 16:45 UTC 1 month ago | Warn manual | 0 | 0 | - | Loaded 0 CBL-matched rows; below preferred floor of 100. Dataset is zero-valid so run marked warn, not error. |
| safety_violations | 2026-07-14 16:43 UTC | 2026-07-14 16:45 UTC 1 month ago | Warn manual | 246,574 | 83,508 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| ecb_violations | 2026-07-14 16:42 UTC | 2026-07-14 16:43 UTC 1 month ago | Warn manual | 142,483 | 41,665 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| dob_violations | 2026-07-14 16:41 UTC | 2026-07-14 16:42 UTC 1 month ago | Warn manual | 73,090 | 25,169 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| dob_violations | 2026-07-14 16:41 UTC | 2026-07-14 16:41 UTC 1 month ago | Error manual | - | - | - | date/time field value out of range: "3321-82-62" |
| ej_nys_peja | 2026-07-14 16:40 UTC | 2026-07-14 16:40 UTC 1 month ago | Warn manual | 4,312 | 4,312 | - | Using NYS PEJA fallback (ircm-rcjd primary source is currently login-gated); persistent comparability disclaimer required in UI. |
| pluto_parcels | 2026-07-14 16:28 UTC | 2026-07-14 16:40 UTC 1 month ago | Warn manual | 858,602 | 858,602 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| pluto_parcels | 2026-07-14 16:26 UTC | 2026-07-14 16:26 UTC 1 month ago | Error manual | - | - | - | connection terminated by administrator (Neon idle timeout during fetch); retry pending |
| pluto_parcels | 2026-07-14 16:25 UTC | 2026-07-14 16:25 UTC 1 month ago | Error manual | - | - | - | connection terminated by administrator (Neon idle timeout during fetch); retry pending |
| pluto_parcels | 2026-07-14 16:19 UTC | 2026-07-14 16:19 UTC 1 month ago | Error manual | - | - | - | connection terminated by administrator (Neon idle timeout during fetch); retry pending |
| pluto_parcels | 2026-07-14 16:12 UTC | 2026-07-14 16:12 UTC 1 month ago | Error manual | - | - | - | connection terminated by administrator (Neon idle timeout during fetch); retry pending |
| pluto_parcels | 2026-07-14 16:07 UTC | 2026-07-14 16:07 UTC 1 month ago | Error manual | - | - | - | connection terminated by administrator (Neon idle timeout during fetch); retry pending |
| ll33_grades | 2026-07-14 16:06 UTC | 2026-07-14 16:06 UTC 1 month ago | Warn manual | 21,681 | 12,208 | - | NYC_APP_TOKEN unset; anonymous Socrata rate limit applies. |
| cbl_xlsx_supplemental | 2026-07-14 16:04 UTC | 2026-07-14 16:04 UTC 1 month ago | Success manual | 12,667 | 7,084 | - |