I Rebuilt the NYC Council’s Website

My motivation for getting started was Daniel Golliher’s class, Maximum New York. He had a list of civic tech projects that someone could do. I started off with a simple one — a timeline of changes to the NYC Zoning Resolution. After that, I decided to build a replacement for the website the City Council uses, Legistar. Generally, the website is used by the government and the public to determine what bills are being discussed, what topics are up for discussion, and when the City Council will be meeting. The website is pretty 1990s. I figured it was time for me to build a replacement. That replacement is at councilrecord.nyc.

I decided to scope the project very narrowly. I met someone through friends who worked on the City Council as a staffer — she works with only a few of the committees. I decided to scope down to only those committees to begin with to make the problem more tractable.

Through my chats with her, and some people she introduced me to — it turned out that every few years someone tries to replace Legistar. Someone replaces it with something nicer and pricier, a new Speaker gets elected, the nicer thing looks like a luxury, and Legistar is still sitting there. The actual contract is ~$80,000 per year, which is dirt cheap as far as enterprise software goes, hence its longevity.

The reason why the Legistar contract keeps getting renewed is because any competitor needs to go through procurement, which would take years. Legistar is cheap and already available, so there’s not really any competition.

Legistar is made by Granicus, which is a software company that sells to the government. It’s a big private equity owned company that also sells video tools, email notifications, and other website products for cities. NYC is just one customer among many — Chicago and Seattle use it too. The public facing site is only the tip of the iceberg — there’s an entire legislative management system that the City Council uses to draft and route bills.

After chatting with people who use Legistar, the specific pain points that kept recurring were that:

  1. Legistar doesn’t allow Word documents to be opened in the browser, they instead are downloaded and need to be opened locally.
  2. The search functionality is weak, since it only searches meeting and bill titles, rather than the contents of the actual bills, meeting transcripts & attached documents.

These were the primary motivations I designed around, and they doubled as a way to control scope. I wanted to ensure that these were the two main things I got right, as well as ensuring the site was as close to a duplicate of Legistar as it could be.

The UI of Legistar is rough, especially for casual users. Finding when a certain Council committee has met and what they discussed is difficult. The user experience for the power user isn’t pleasant either. My contact on the City Council said that part of her job is finding when certain topics were discussed previously. In order to search, she browses past meetings and legislation manually, matching based on whether the title sounds relevant.

I designed this website so that it’s relatively close to Legistar in terms of the data model and structure, but laid out in a way that’s friendly to the casual user as well. I imagine that this site will be helpful to a citizen interested in City Council meetings on a topic they’re interested in, a reporter doing historical research on Council transcripts, as well as City employees that need to search Council meetings regularly.

Some ways you can use my site:

  • You can search every hearing to find where anyone said “mold” since 2019. It’ll search all of the documents, including transcripts, committee reports, and written testimony, with the excerpt matched.
  • You can link to any bill, meeting or document (including Word docs). They have stable, human-readable URLs that are indexed by search engines.
  • You can find meetings that were deleted from Legistar.
  • You can conveniently find what documents were produced at a given meeting.

Note that this isn’t a full replacement for Legistar — I specifically didn’t replicate many features, such as the calendar, or the ability to view meeting recordings.

For now, I’ve also scoped this site down to only the Public Housing and Environmental Protection and Waterfronts committees. I’ll be rolling out to all committees next.

My usage of Legistar is mostly in finding recent bills and determining when the City Council will be meeting. I’m a pretty casual user. I decided to build this mostly out of frustration at how difficult even those two simple tasks were with the current Legistar site. I work as a software engineer, so this was a way to contribute to NYC government pro bono.

There were previous attempts to replace Legistar, such as the Councilmatic site, that have since shut down. The issue is that it’s too difficult to compete with Legistar as a business, since barriers to entry are high and the profit margin too low. Competing as a nonprofit, however, means that you have varying levels of funding and motivation.

In order to sidestep these issues and ensure that this site can stay up, I tried to scope this down to be as easy to maintain and cheap to run as possible. My costs are around $10 per month, and I’ve scoped the site down to enable (1) viewing Word docs in the browser and (2) allowing full text search of attachments.

Another aspect that tends to bog down these projects is trying to clean up the messiness of Legistar. For example, Environmental Protection and Waterfronts has actually had 4 different forms throughout its history on Legistar:

  1. Environmental Protection (1999–2023, id 10)
  2. Resiliency and Waterfronts (2019–2022, id 5258)
  3. merged Environmental Protection, Resiliency and Waterfronts (2023–2025, id 5290)
  4. today’s Environmental Protection and Waterfronts (id 5308)

I explicitly am choosing to leave this as-is for the final and completed site — I won’t attempt to clean up the Legistar data so that it makes more sense. Doing so would mean that this’d be an ongoing maintenance challenge as Legistar changes. It ensures that this site can be maintainable and trustworthy, since it directly reflects what Legistar has.


Leave a Reply

Your email address will not be published. Required fields are marked *