Tal Roded

Case study · Interactive tracker

What 2,147 NYC Council laws cost, require and allow

The Council enacted 2,147 local laws between February 2014 and September 2026, about 170 a year. Each one carries a price and a list of jobs for city agencies, recorded in PDFs and Legistar pages with no public tracker of what happened after the vote. I built three public trackers that read every one of them.

2,147local laws enacted since 2014
370bills with a priced fiscal impact statement
7,429duties the laws place on agencies
664powers the laws grant agencies
119agency profiles
123council member profiles

Three trackers and two sets of profiles, refreshed every month

  • Fiscal Impacts: the annual cost of each bill once fully in effect, by agency, sponsor and year, from the Council Finance Division's fiscal impact statements.
  • Obligations: every report, rule, program and deadline a law requires of an agency, with a checklist per law and each report's filing status from the city's public records portal (DORIS).
  • Powers: every power a law grants an agency, such as rulemaking, permits and enforcement, kept apart from the duties.
  • Agency profiles: the three trackers for each agency next to its budget, headcount, payroll and capital projects from NYC Open Data.
  • Council member profiles: the laws each member wrote, how they voted, their committees and attendance, and their district's 311 requests.

Members of the site get a monthly email when a new law, fiscal estimate, deadline or overdue report touches what they follow. Explore the trackers.

Every number traces back to a quoted line of law

A pipeline pulls each enacted law and its fiscal impact statement from the Council's Legistar system. A language model (Claude Haiku) reads each document and returns structured data, and code does everything after that: totals, sorting, joins and checks.

  • Every duty and power carries the exact sentence it came from; 98.6% of duty quotes match the law text word for word.
  • Code rules and the model's own label decide whether a provision is a duty, a power or neither; on a blind check of 90 provisions neither method was tuned on, the sort was right 86 times.
  • Validators reject totals that break accounting rules, and every change goes through a blind re-check against the source documents before it ships.
  • A monthly automated job adds new laws, re-reads statements that changed, and refreshes the agency and member data.

The same build works on any stack of public records

If your organization tracks legislation, contracts, permits or rulings by hand, this is the pattern: pull the records, extract what matters with a checked model, and publish or share a tool that stays current on its own. A first version takes 3 to 5 weeks, followed by a monthly refresh.

All NYCuriosity Studio services → A knowledge base for community boards → State Capacity Ecosystem →