This page lists my long-term projects that are related to my government work (policy advocacy, transparency, or anything else).

It's called a "starmap" because calling it a "roadmap" would imply that I've made detailed plans on how to complete each of these projects. That is not the case – at the time of writing, most of these projects have very little planning or implementation work behind them.

If you have an idea for one of these projects, or want to help make them a reality, please please contact me via email at

Preliminary Agenda Tool

The most complete project on this page! Available here, it shows you items on upcoming city council agendas before they are made final.

This is possible because Legistar (the city's agenda tracking tool) has an API which exposes more information than is made available in the calendar view. None of the information on the preliminary agenda tool is non-public – all I'm doing is presenting public information in a more easily digestable form.

Happy to share code if you're interested; eventually I'll also clean it up and publish it on GitHub (as will hopefully be the case with every project here).

Finance Data Parser

Every two weeks, the finance department submits a long PDF document containing details about every expense paid to a vendor by the city (among other things). The goal here is to parse out this data from the PDFs and append it to a SQLite database for consumption via Datasette.

For this to be the most useful, we will also need a mapping of account numbers to city departments so we know who is spending what.

Interchange Specs

Well-defined interoperable formats for data about government actions. See Specs for more info.

City Action Tracking System

…or "cats" for short (ahaha) is my grand vision of a unified database for tracking all actions/decisions made by any boards/commissions/councils in the city.


The most important/groundbreaking thing about this project is its ability to track relationships between lots of entities (as envisioned in this tweet). An explanation of this diagram is as follows. It is very dense, so sorry about that:

  • A Body is a generalization of a board, commission, or council: any group of two or more people that holds meetings to deliberate and make decisions on matters, via actions. The form of actions usually are based on some kind of parliamentary authority (in Huntsville, city council has adopted Robert's Rules, for example).
  • Bodies of course consist of Persons. Each person may hold zero or more positions on a body (like "President" or "Chair"); usually each body will decide which of their members will hold which positions.
    • Persons more generally represent anyone in city government – Tommy Battle is a person who holds the office of Mayor; Thomas Nunez is a person who has an affiliation with the Planning Department (represented as an organization in this model).
  • Every person serving on a body sits on exactly one Seat – think council district or "place number" defined in formation ordinances. Seats are either elected or have an appointment authority (another body can make appointments, or the appointment can be made by an office like "Mayor" – although ultimately it's still persons making appointments, they just hold an office or a vote through their seat on a body).
  • The combination of person, seat, positions, and body (transitively) defines a Membership. Memberships are queryable by time, so by looking through a person's memberships, for a given body, you can see what positions they held in the past, for example.
  • A Matter is a document that a body deliberates on. This is usually a resolution or ordinance.
    • Matters can be defined as relating to other matters without additional context (e.g. ordinances which amend other ordinances, or relating a zoning ordinance amendment coming before city council to its planning commission recommendation).
    • Matters can also be part of a project (representing collections of ordinances which might not seem related on first look, but are related to the same activity, like an economic development project).
    • Matters also have a matter category, like "rezoning request", "annexation", "subdivision approval", or "contract approval".
    • Matters can optionally have additional matter data, which might represent the total size of an annexation, the parcel number related to a rezoning request, or similar.
    • Projects, matter categories, and additional matter data are not represented in the diagram linked above.
  • A body holds Meetings (which can be of different meeting types, like "regular session", "work session", or "special session"), almost always with a formal agenda (consisting of agenda items describing the matters to come before the body in the meeting). The meeting is usually conducted physically at a location (this is often required by bylaws), although some meetings are held online only.
  • At a meeting, the body considers matters and takes Actions on them. These actions are usually voted on by each person on the body; these votes are recorded as ActionVotes.


Notes can be taken on most objects in the system (although the diagram linked above only shows the potential to take notes on agenda items and matters).

At first, notes will probably be fairly limited, but I'd like to develop a system where you can sign in and take private notes (on agenda items / people / meetings / matters / actions / votes). Then, later, you could share these notes within a group (like a citizen journalism organization, or a group doing advocacy for a particular cause) or publicly.

This collaboration functionality has potential for abuse and needs a lot more risk analysis / control design before making it widely available.


All the relationships between entities described above are queryable (at least at a database level), so you can answer questions like this:

  • Who on planning commission has abstained from voting on subdivision requests recently?
  • What were the most controversial measures (by difference between yes and no votes) that ultimately passed (or failed)?
  • What did the zoning subcommittee (of planning commission) have to say about this proposed zoning ordinance amendment?
  • Do annexations further from the city center fail more often? (through consistent PPIN tracking and a little bit of GIS work)

And more boring questions:

  • When and where does this commission meet next?
  • What items are on the agenda for this board?

Other possibilities

  • Audio/video recording integration and agenda item timecoding

Zoning Explorer

What if we the zoning ordinance was machine-readable? We'd be able to easily answer questions like:

  • What uses are allowed in Residence 2-A zoning that aren't allowed in Residence 2 zoning?
  • What's the difference in density requirements between two zones? (yard setbacks, minimum lot sizes, etc)
  • Where else is a specific use permitted? (And when does that use need a special exception from the Board of Zoning Adjustment vs. a variance?)

Also, with a bit of GIS work (and consistent PPIN tracking on Board of Zoning Adjustment actions, and potentially some integration with the probate court deed filing system), we could track this data and answer these questions at the property level:

  • What variances are active for a given property? (And what uses do those variances permit, exactly?)
  • Which variances have lapsed due to ownership changes?

Text Explorer

A generalization of Zoning Explorer:

  • a way to search the full text of every ordinance and resolution passed by any governing body
  • …and policies/procedures followed by other bodies (like the police department's written directives)
  • a uniform, non-proprietary citation format that's specific enough to reference individual paragraphs/lines in a specific code version, ordinances, or resolutions
  • mostly-automatic updates after council meetings, including automatic linking between documents

Some considerations here:

  • not duplicating existing work in uniform citation systems
  • being able to site state codes, US code, congressional acts, and case law