The source is the enacted law text itself, not summaries
The tracker covers every Introduction enacted as a local law from January 2014 to the present, enumerated from NYC Legistar and refreshed monthly. For each law it reads the full enacted text as published on the law's Legistar page, the version signed into law, not the bill summary, the committee report, or press coverage. Fiscal impact statements are a separate document and feed the companion Fiscal Impacts Tracker.
An obligation is a mandatory duty placed on city government
Each law is parsed into individual obligations: one record per distinct duty the law imposes on a NYC government entity, an agency, office, commission, board, or officer. The rules:
- Mandatory language only. "Shall", "must", "is required to". Permissive language ("may") counts only when other provisions clearly presume the action will happen, such as employers being required to follow "rules of the department".
- City government only. Duties the law places on private parties (employers, landlords, businesses) appear only through the agency work they create: the enforcement, rulemaking, or notices the law assigns to government.
- One record per duty. A recurring annual report is one obligation with annual recurrence, not one per year. A duty shared by several named agencies becomes one record per agency.
- Consultation is not responsibility. "In consultation with" agencies are not credited with the duty; only the lead agency is.
- Street co-namings collapse to one DOT record. Designating a street name implies DOT fabricates and installs the signs, a single signage obligation rather than one per honoree.
Extraction is done by a language model, then checked mechanically
Obligations are extracted with Claude (Anthropic's Haiku model), which reads each law and returns the responsible entity, a plain-language action summary, the deliverable type, the citation, the deadline clause, the recurrence, and a verbatim quote of the operative statutory language.
The quote is the honesty anchor: every quoted passage is mechanically string-checked against the law text, after normalizing whitespace and typography, and re-extracted once if it fails. 95% of quotes verify exactly; records whose quote could not be verified verbatim are flagged in the interface as possibly paraphrased. Interpretation of statutory language ultimately requires human review, so treat the tracker as a research aid rather than legal advice.
Deadlines are computed in code, never estimated by the model
The model reports only the deadline's structure, a fixed date or an offset such as "within 180 days of the effective date". All date arithmetic happens in code, chained from the enactment date recorded on Legistar: enactment date plus the effective-date clause plus the deadline offset. Months convert at 30 days and years at 365, so a computed date can differ from an agency's own reading by a few days.
A sanity rule rejects impossible dates: a law cannot set a deadline earlier than its own enactment, so any such date, usually a historical date mentioned in the code section being amended, or a clause that lapsed before signing, is treated as undated. The deadline's original wording stays visible in the record detail either way.
A past-due deadline means the date passed, not that the agency failed to deliver. The tracker does not yet check whether each report or rule was actually produced; it tells you what to go ask for.
Every deliverable falls into one of fourteen types
Reports lead the count, followed by rulemaking, new programs and services, and data publication. The agency workload chart groups these into five buckets for readability.
Agency names are normalized so every variation groups as one agency
Laws refer to the same agency many ways: "DOT", "the department of transportation", "the commissioner". Every responsible entity is resolved through a crosswalk built from NYC Open Data's NYC Agencies and Governance Organizations dataset, roughly 700 name variants mapping to canonical abbreviations, including renames (Department of Consumer Affairs to DCWP, DoITT to OTI). Generic references such as "the department" are resolved from each law's own definitions section; a curated per-law resolution table covers the cases where the definition lives elsewhere in the code. When a law names an agency inside a conditional phrase ("the enforcing agency (Department of Consumer and Worker Protection or designated agency)"), the resolution is accepted only when exactly one concrete agency emerges.
77% of obligations resolve to a canonical agency. The rest are either real bodies the dataset does not list (shown as written, such as "the chief privacy officer") or genuinely undetermined actors, "an agency designated by the mayor", "each agency", which are labeled Unspecified rather than passed off as agencies. The exact phrase the law uses is always preserved in the record detail.
Council members are matched to their legislation by service years
The Council Members page joins this tracker and the fiscal tracker to a roster of all 123 members who served from 2014 on, compiled from official Council and election records. Sponsor names are matched with service-year checks so same-surname members in different eras attribute correctly; when years cannot distinguish two candidates, the sponsorship is left unmatched rather than guessed. State legislation resolutions, whose sponsors are state legislators, are excluded entirely.
An independent city list confirms the coverage
The Department of Records and Information Services keeps its own list of the reports agencies owe, built from a different process than this tracker: DORIS records the mandate, the local law behind it, and the date the report was last filed. It is the only external check available on this dataset, so the two were matched law by law in August 2026.
DORIS traces 1,546 report mandates to local laws enacted since 2014, covering 661 laws this tracker also holds. There is no law among them where DORIS names a reporting duty and this tracker found nothing. On 66 of those laws the tracker recorded the duty under a different label, because DORIS counts plans, data publications, and outreach materials as required reports while this tracker splits them into their own deliverable types. Read the report counts here as reports narrowly defined; DORIS totals will run higher.
Because DORIS also records filing dates, the match says something this tracker cannot say on its own. Of the 1,306 recurring reports created by in-scope laws that carry a stated cadence, 396 are current, 316 are overdue, and DORIS records no filing at all for 589. Josh Greenman's overdue reports dashboard applies this analysis to all of DORIS, including mandates older than 2014, and is the better tool for compliance questions. Re-run the match with pipeline/validate_against_doris.py.
One related caution, argued well by Maximum New York: Legistar's own "Report Required" index tag is an unreliable count of reporting laws, applied inconsistently and blind to frequency and type. This tracker stores that tag as metadata but never counts from it; every obligation here comes from the enacted text.
Whether the reports actually arrive
A law can require a report without the report ever being written. The Department of Records and Information Services keeps the city's list of required reports and the catalog of what agencies have filed, and Charter section 1133(d), added by Local Law 29 of 2019, makes it post a delinquent notice when one is late. Matching that against the reporting duties tracked here gives each one a filing status.
Of the 728 reporting obligations matched to a DORIS mandate, 214 have never been filed, 143 are overdue, 217 are up to date, and the rest are completed, waived, superseded, or carry no schedule. Filter the obligations table by filing status to see them, or open any report obligation for its last filing date, how late it is, and a link to its filings on the DORIS portal.
This method is Josh Greenman's. His NYC Overdue Reports tracker works out the status vocabulary used here (never filed, overdue, up to date, completed, waived, superseded, no schedule), the rule that a report is overdue once its last filing plus its stated interval has passed, and the handling of the city's own delinquent notices; his code and methodology are public. His dashboard covers every DORIS mandate, including those created before 2014, so it is the better tool for compliance questions across the whole city. What this tracker adds is the join to the law text: the duty as enacted, next to whether it is being met.
Two cautions. A mandate is matched to an obligation by local law and title, so where a law creates several reports the pairing can be wrong; the matched DORIS title is shown next to every status, and the filings link lets you check. And roughly half the reporting duties here have no DORIS counterpart at all, usually because the report goes to the Council or the mayor rather than being published through DORIS; those show no status rather than a clean bill of health.
Known limitations
- One law, Local Law 47 of 2022, appends the entire recodified Fire Code and exceeds what the model can read at once; its obligations were extracted from the law's enacting sections and effective-date clause only.
- Counts measure distinct obligations, not their difficulty or cost. A one-time report and a permanent enforcement duty each count once.
- 155 laws repeal themselves on a date or on an event ("expires and is deemed repealed on December 31, 2024"). Those laws carry a sunset date, and the standing-obligation charts subtract the 146 recurring obligations whose laws have already lapsed. Sunsets tied to an event rather than a date keep the clause with no date, the same way event-anchored deadlines are handled.
- A duty the law places on "each city agency" carries the tag All agencies rather than a named agency. The Charter defines agency to include community boards and other city bodies, so these citywide duties bind agencies that never appear by name in the law text. They are distinct from Unspecified, which means the law leaves the actor genuinely undetermined.
- Only local laws enacted since 2014 are in scope. Duties created by the City Charter itself, such as a community board's annual report to the mayor or its budget priority hearings, have no local law to attach to and do not appear here even though they bind the same bodies.
- A handful of obligations name several agencies in a single duty; where the law itself does not divide the work, neither does the tracker.
- Deadline dates inherit any imprecision in the law's own drafting, and effective-date provisions with contingencies (collective bargaining carve-outs, agency certifications) are computed from the primary rule.
- When a law amends an existing code section, Legistar reprints the whole section with only the new matter underlined and the deleted matter in square brackets. Reading that as plain text lets a restated pre-existing duty look like one the law created. The pipeline now preserves the underline markup, and a sweep flagged 399 obligations whose quoted text sits entirely in the reprinted part of an amended section. Those records carry a note saying the wording predates the law shown; they are still counted, because a spot check found the sweep about 86% accurate and the misses were laws that did change the same provision. They are queued for re-extraction against the marked-up text. The August 2026 re-extraction of the full corpus ran a prompt that instructs the model to skip duties whose operative language already existed in prior law, and audit sampling after that pass found the class much reduced but not eliminated. Duties whose operative text predates the amending law are attributed to the original enacting law.
- Deadlines that run from a recurring or future event (each complaint received, each inspection completed, the formation of a body) carry the law's own deadline clause but no calendar date, because no single date exists.
- Some laws publish their enacted text only as a Legistar attachment rather than on the detail page. The pipeline now reads those attachments (PDF and Word) and extracts their obligations like any other law; no law in the corpus is skipped for this reason.
- Where DORIS lists more reports for a law than this tracker records, a sample of those laws was checked against the law text in August 2026 and every gap was explained: DORIS splits one statutory duty into several register entries, or counts a plan or data publication the tracker files under its own deliverable type. No missing duty was found that way.
- The dataset was audited in August 2026. Independent reviewers sampled 454 laws (about 21% of the corpus) against the original Legistar texts, systematic sweeps checked agency assignments, deadline anchors, recurrence labels, and bracketed deletions across every record, and all 1,927 laws that had not been hand-corrected were re-extracted with a hardened prompt. Roughly 490 records were corrected, removed, or added. Sixteen audit rounds ran through August 12, 2026, the last several finding 16 to 21 defects per 30-law sample, mostly one-off interpretation errors rather than repeats of known classes, most of them deadlines anchored to a recurring event rather than the effective date. Treat that as the error rate for any single record: the aggregate counts are sound, but verify an individual obligation against the law before relying on it. Corrections are continuous; use the feedback address below to report an error.
The data refreshes monthly and is fully downloadable
A monthly job ingests newly enacted laws, extracts their obligations, and rebuilds every view, including the member profiles. Members can download the full CSV and set up personalized alerts for the agencies, council members, and keywords they follow. The underlying pipeline code is public in the site's GitHub repository.
Concept credit: this tracker adapts the implementation-checklist approach Marci Dale prototyped for federal legislation in "What if every new law came with a checklist?"