Who shows up to city council on time?

Atlanta City Council meeting minutes include which members were present and what time they arrived, which made me curious—who shows up on time?

The council uses Granicus to post agendas and minutes in a structured HTML page. I downloaded minutes for all of the meetings in 2024—165 in all.

The first page of the meeting minutes shows who attended and what time they arrived.

Then I compared the stated arrival time for each attendee to the meeting’s scheduled time. I used Simon Wilson’s llm library.

The models I have access to wouldn’t accept PDFs as attachments, so I first had to convert each file to a PNG. Since the attendance information is always on the first page, it was relatively straightforward to do with imagemagick.

for f in $(ls pdfs); do
  magick convert -density 150 "pdfs/$f[0]" "pngs/$f.png"
done

After testing a few documents one a time, I wrote a Python script to submit all 165 and generate a CSV. There was still some manual clean-up required, including normalizing the spelling of names (the llm output created multiple variations for some of the names).

So who shows up on time? The council legislative assistants rarely show up late—they usually arrive at least 30 minutes before the meeting.

Councilman Julian Bond is the tardiest, averaging 30 minutes late over 52 meetings.

Charts

Postscript

I tried a couple of different approaches for plotting the data, and settled on the histograms above as the clearest.

An attempted beeswarm plot of meeting arrival times.
Draft of a heat map plot showing frequency of arrival times.