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", or a prohibition on the agency. Authority a law grants with "may" is a power, listed in its own table (next section).
- 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.
Powers a law grants are listed apart from the duties it imposes
Laws also give agencies authority they can choose to use: to inspect a building, write rules, charge a fee, or impose a penalty. The obligations table leaves those out, because it measures what agencies must deliver. They appear in the powers table and on each law's page, with no deadline, since nothing is due until an agency decides to act.
- A duty requires the agency to act or to refrain. "Shall", "must", "is required to". A prohibition on the agency is a duty even when it uses "may": "no agency may purchase incandescent lamps" is a burden the agency carries.
- A power authorizes the agency to act. "May", "is authorized to", "is empowered to", and "shall have the power to", which grants authority the agency can leave unused.
- A provision that requires anything is a duty. "The department shall inspect each site and may charge a fee" is recorded as a duty.
- Private parties' options are neither. "A tenant may elect" or "an owner may apply" grants nothing to government and is not recorded as an agency power.
Each record is sorted twice. A language model reads the full provision the quote comes from and labels it with the definitions above, and a fixed rule in code reads the same text. The model's label decides, except for a provision with no verb of its own, such as an item in a list of what a report must include, where the rule reads the list's opening sentence and decides. The rule removes the month of May before it reads, so "no later than May 1, 2025" is never mistaken for permission. Records where the two disagree are counted every month, so a change in either shows up. In a blind check of 350 records, the published label matched an independent reviewer on 86 of the 90 that neither method had been tuned on. Check a record against the law before relying on its category.
Every law is read for both its duties and its powers.
Extraction is done by a language model, then checked mechanically
Duties and powers are extracted with Claude Sonnet 5, Anthropic's language model, which found 92% of the duties and powers in a blind review of 37 laws, against 69% for Claude Haiku. Every law is read by Sonnet 5 except the 10 whose records were corrected by hand and keep those hand-checked records. For each law the model 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. 99.6% of quotes verify ( 8,253 of 8,290 duties, as of November 2, 2026 ); 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. For reports DORIS tracks, the tracker shows whether they were filed (see below); for rules and every other deliverable it tells you what to go ask for.
Every deliverable falls into one of fourteen types
Reports lead the count, followed by notices or postings, data publications, and programs and services. 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, 742 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.
Offices, task forces and boards that sit inside a department are counted under that department and shown with their own name. Duties a law gives every agency are grouped as Citywide (all agencies), and the City Council and borough presidents appear as public bodies rather than agencies.
99.1% of duties and powers resolve to a city agency or a named public body. The rest name no one the trackers can place, such as a duty the law gives "the administrating agency" without saying which, and are kept as written or labeled Unspecified rather than passed off as an agency. 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 resolves through a hand-checked match list or stays unmatched; it is never guessed. State legislation resolutions, whose sponsors are state legislators, are excluded entirely.
An independent city list checks 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 every monthly run matches the two law by law.
DORIS traces 1,552 report mandates to local laws enacted since 2014, covering 661 laws this tracker also holds. On only one of those laws, Local Law 152 of 2023 (the Multi-Agency Response to Community Hotspots report), does DORIS name a reporting duty this tracker did not find. On 71 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 gives each reporting duty here a filing status, described in the next section. 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 585 reporting obligations matched to a DORIS mandate, 160 have never been filed, 144 are overdue, 170 are up to date, and the rest are completed, waived or carry no schedule, including 4 marked not matched because their agency could not be tied to a DORIS mandate. 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, agency 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 889 of the 1,470 reporting duties here, about 60%, 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
- A law too long for the model to read at once, such as Local Law 47 of 2022, which recodifies the Fire Code, is read in section-sized windows so no part of its text is skipped.
- Counts measure distinct obligations, not their difficulty or cost. A one-time report and a permanent enforcement duty each count once.
- 159 laws repeal themselves on a date or on an event ("expires and is deemed repealed on December 31, 2024"), 81 of them on a stated date, and 64 of those dates have passed (as of October 2026). Those laws carry a sunset date, and the standing-obligation charts subtract the recurring obligations of laws that 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 and marks only the new matter. A duty or power quoted entirely from the reprinted part predates the amending law. If an earlier law in the tracker created it, the record is linked to that law and not counted twice; otherwise it stays, marked as existing code, and counts for its agency but not for the amending law or its sponsors. 695 duty and power records carry that mark. Quotes with no marked new matter that sit outside any reprinted block stay counted as new, because they can be new sections the law adds without codifying them.
- 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 reads those attachments (PDF and Word) and extracts their obligations like any other law; no law in the corpus is skipped for this reason.
- DORIS can list more reports for a law than this tracker records, because it splits one statutory duty into several register entries, or counts a plan or data publication the tracker files under its own deliverable type.
- The data is audited blind after every major change: independent reviewers check fresh samples of laws against the original Legistar text. In the latest audit (September 28, 2026), 124 of 134 recorded duties and powers in laws read by Sonnet 5 were correct (92.5%, 95% confidence interval 86.8% to 95.9%), and the records captured 124 of the 130 the reviewers found in the law text (95.4%). Each confirmed error becomes a check run across the whole database, and every record it flags is judged blind and corrected. Audited records also form a gold set of more than 2,500 hand-verified entries; as of October 6, 2026 the data agrees with it on 98% of agencies, 97% of deadline dates and 99% of duty-or-power labels. Treat any single record as right about nine times in ten: the aggregate counts are sound, but verify an individual duty against the law before relying on it. Corrections are continuous; use the feedback address below to report an error.
The data refreshes on the first of every month
A monthly job ingests newly enacted laws, extracts their duties and powers, and rebuilds every view, including the member and agency profiles. Members can set up personalized alerts for the agencies, council members, council districts and keywords they follow. The underlying pipeline code is public in the site's GitHub repository.