In production · Small city — City Clerk's office
Cloud deployment FeaturedCouncil meeting summaries from the recording
Result in one line: Summary published the morning after the meeting instead of three weeks later
Turns the recording of a public council or board meeting into a plain-language summary of what was discussed and decided, published alongside the official minutes.
Published March 31, 2026 Updated July 14, 2026
- Skills needed to set it up
- Analyst or data scientist
- Readiness
- Needs customization Human review built in
- Data it touches
- Public data only
- Who sees the output
- Public-facing
- License
- Apache 2.0
- Cost to stand up
- Under $25k
- Portable to other platforms
- Yes — platform-agnostic
- Use case category
- Communications, media & writing
- Reviews it went through
- Legal or contracts review Records retention review Community or advisory review
- Security review
- Coalition security-reviewed
What do these mean?
- Analyst or data scientist
- Someone who works in Python, R or SQL.
- Needs customization
- Your team will need to adapt it before use.
- Human review built in
- A person checks the AI's output before it is used.
- Public data only
- Only data that is already public.
- Public-facing
- Residents or the general public interact with it.
- Apache 2.0
- Permissive, with a patent grant.
- Yes — platform-agnostic
- Runs on any comparable stack with configuration changes only.
- Communications, media & writing
- Drafting, translating, summarising and publishing.
- Records retention review
- Confirmed how long the outputs must be kept and where.
- Coalition security-reviewed
- A coalition maintainer read this project's security practices — its policy, its dependencies, how it handles data — on the date recorded in the pull request. It is a point-in-time reading of practices, not an audit of the code and not a guarantee that it is safe to run.
Problem
Full minutes take our office about three weeks to produce and approve, and they are written for a legal purpose: they record motions, movers, seconders and outcomes. They are not written to tell a resident what happened. Someone who wanted to know whether the council approved the sidewalk project had to either watch four hours of video or wait three weeks and then read a document that says “Item 14.b, motion carried 5-2.”
We were also fielding a steady stream of phone calls asking exactly that question, which is a fair use of a clerk’s time exactly once and a waste of it the fortieth time.
What we built
A pipeline that runs the morning after each meeting. It transcribes the published recording, splits the transcript by agenda item using the timestamps the clerk already records for the video index, and writes a three-to-five sentence summary of each item: what was proposed, what the main points of discussion were, and what was decided.
The clerk reviews every summary before it publishes. In practice that is about twenty minutes, mostly spent on the two or three items where the discussion wandered.
How it works
Transcription is Whisper running on a small GPU instance we already had. Summarisation is a single model call per agenda item with a prompt that carries the style guide: no adjectives, no characterisation of anyone’s motives, name the outcome, and say “no decision was made” when none was. The summary of an item may only use the transcript of that item, which is a boring constraint that prevents most of the ways this could go wrong.
The published page shows each item’s summary, the vote if there was one, and a link that jumps to that moment in the recording. That link matters more than the summary — it is what lets a reader check us.
Results
Summaries publish the morning after the meeting instead of three weeks later. Traffic to the meeting pages roughly tripled, and the media’s coverage now consistently gets the vote counts right, which was not previously true.
The clerk’s edit rate has settled at about one summary in six needing a change. The most common correction is a summary treating a continued item as though it had been decided.
Lessons learned
Agenda-item boundaries are the whole game. Our first version summarised the meeting as one document and produced something that read well and was useless — it flattened nine hours of separate decisions into five hundred words of vibe. Splitting by item made the summaries checkable and made the review fast.
Say what the summary is not. We put “This summary is not the official record” at the top of every page after the first month, following a call from a resident who had relied on one. The link to the minutes is right next to it.
Do not summarise public comment. We tried, and every version we produced either flattened what people said or characterised it. Public comment is listed by topic and count, with the recording linked, and the speakers speak for themselves.
How to reuse
The repository runs against any recording plus a timestamped agenda; the timestamps are the input most clerks’ offices already have and do not realise is valuable. Start by running it over three past meetings and having the clerk mark up the output — that produced our style guide, and the style guide is what makes this usable.
About
- Area of work
- Communications & outreach
- Leadership & administration
- Legal & compliance
- Review status
- Reviewed & approved
How it's built
- How AI is involved
- AI is part of the solution
- Types of AI
- Speech & transcription
- Generative text (LLM)
- AI tools & models
- Whisper (self-hosted)
- Vertex AI
- Python
- Where it runs
- Google Cloud
Sharing & licensing
- Portability notes
- Transcription is self-hosted Whisper and runs on any machine with a GPU or, slowly, without one. The summarisation step is one API call behind a thin interface, so swapping the model provider is a configuration change. Nothing else is cloud-specific.
What it took
- Cost to keep running
- Under $10k/yr
- How it was bought
- No procurement needed
- Who it affects
- The audience is residents who cannot sit through a four-hour Tuesday night meeting, which is most of them. Summaries are written at roughly a seventh-grade reading level and published in the same languages as the agenda. The summary is explicitly not the record — every page says so and links to the minutes and the recording — because a summary that people mistake for the official record is worse than no summary at all.
Data & access
- No PII/PHI in the shared material
- Yes
- Data sources
- Published meeting recordings
- Posted agendas and item packets
- Roll call vote records
- Data-governance caveats
- Only material that is already public goes in: the recording, the agenda and the vote record. Public comment speakers are described by role, never by name, even though the recording is public — a searchable name attached to a summary is a different thing from a name in a four-hour video. Closed-session portions are never processed.