A public accountability tracker

Overdue: the reports New York City owes itself

City law requires agencies to publish more than 2,100 recurring reports — on everything from roadway safety to workforce equity — and to file each one with the Department of Records and Information Services. Many never arrive. This tracker cross-references the city’s official list of required reports with what agencies have actually filed.

How complete is this list?

The requirements list is the city’s own: the Department of Records and Information Services (DORIS) is required by section 1133 of the City Charter (added by Local Law 29 of 2019) to maintain a list of every report agencies must produce under local law, executive order or mayoral directive. Three honest limits:

How this works

Reading the law. Two of the city’s own signals turned out to be unreliable, so for 62 requirements we went past the data to the statute: the 59 entries whose description carried an ambiguous date range, and every requirement matching a provision repealed by Local Law 69 of 2023. Each reading is recorded with the citation, a verbatim quote of the operative language and a link, shown on the row. Fifty-two proved still in force, eight had been repealed or revoked and are now labeled superseded, and two could not be resolved from the text and keep a caveat. The readings live in a separate file from the data, so the weekly refresh cannot overwrite them.

Sources. Two datasets published by DORIS on NYC Open Data, both refreshed monthly: Government Publication – Required Reports (the list of legally mandated reports: agency, report name, frequency, authorizing law, last published date) and the Government Publications Listing (metadata for all 78,000-plus documents filed with DORIS under Charter section 1133).

The join. DORIS tags each filed document with the required report it satisfies, using the same controlled name vocabulary as the requirements list. We join the two on agency plus report name, ignoring case, punctuation and whitespace — the city enters the same requirement inconsistently (“Report on freelance law” and “Report on Freelance Law” are one report; filings from Health and Hospitals arrive under both “H+H” and “HHC”), and matching those strings literally would strand real filings and overstate how late a report is.

Status logic. For each requirement we take the most recent filing date from either dataset (future-dated entries, a known data-quality issue, are ignored), add the report’s stated frequency (“Every 1 Year” = 365 days, “Every 3 Months” = 91 days, and so on) and compare to today. Past due = overdue. No filing ever recorded = never filed. One-time requirements whose description says “Completed” = completed; descriptions noting a waiver = waived; requirements the city’s own description says were repealed, folded into another report or handed to a successor agency = superseded, and not counted as overdue; requirements with no stated frequency and at least one filing = no schedule.

The city’s own late notices. When a report is overdue, the Charter requires DORIS to post a “Delinquent Report Notice” in its place. We flag every requirement whose most recent late notice is newer than its most recent filing. Note the two signals can disagree: DORIS knows the actual statutory due dates (say, an annual report due each January 31), while our math anchors to the last filing date plus the stated interval. Where they disagree, we show both.

Limits. This reflects DORIS’s recordkeeping as of the date shown above. Where the same requirement appears in multiple versions (the underlying law changed), we show the current version and note the count. See the repository for the full methodology and build code.