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.
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.
- 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. The extraction reads plain text, so it can attribute a restated pre-existing duty to the amending law. An August 2026 audit removed every such record found in a 125-law sample and in targeted sweeps; some remain in unsampled laws, and 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.
- Three laws publish their text only as a Legistar attachment rather than on the detail page; their obligations are not yet extracted and are queued for a dedicated pass.
- The dataset was audited in August 2026: independent reviewers sampled 125 laws (about 6% of the corpus) against the original Legistar texts, and three systematic sweeps checked agency assignments, deadline anchors, and recurrence labels across all 8,205 records. Roughly 380 records were corrected, removed, or added as a result. 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?"