windowbox

About Windowbox

A clearer view of City Hall.

Public meetings belong to everyone. Windowbox makes Portland City Council easier to follow, one searchable transcript at a time.

A searchable public record

Council meetings can run for hours. Finding a particular exchange should take minutes. Windowbox brings recordings, searchable transcripts, and meeting agendas together so you can find what was said and hear it in context.

Search for a word or phrase, open a passage, and follow its timestamp to the recording. The archive is built for anyone trying to understand a decision: journalists, advocates, neighbors, and the simply curious.

Ask questions in your AI app

You can connect Windowbox to Claude Desktop or ChatGPT to find discussions and read transcripts in a conversation. Our setup guide walks you through the app’s menus and gives you a first question to try.

Grounded in public information

Recordings and agendas come from Portland City Council. We check for new meetings automatically and process the City’s YouTube recordings once they are available after the livestream ends.

We maintain a directory of officials and recurring staff from public City information, including names, roles, districts, pronouns, and dated terms of service. The workflow selects roles for the meeting’s date and uses committee membership where our records cover that period. City neighborhood names and local government terminology help with speech recognition. When the City publishes a matching testimony sign-up list, we also use it to help spell and identify public commenters’ names. Agendas supply official item numbers, titles, and amounts.

This context helps the models recognize people and places and connect discussion to the public record. It does not establish what someone said or how they voted — that evidence must come from the meeting.

How transcripts are generated

Our current speech recognition model is AssemblyAI Universal-3.5 Pro. It transcribes the recording’s audio with timestamps and speaker labels — AssemblyAI’s speaker identification also matches voices against the meeting’s roster. Recordings longer than five hours are split into overlapping audio segments, then joined into one transcript with timestamps aligned to the original video.

Anthropic’s Claude Sonnet 5 performs additional passes to resolve speaker labels, repair attributions around roll-call votes, and check for turns assigned to the wrong person. Those suggestions are combined with rules that use evidence such as self-introductions, named handoffs, and the sequence of a roll call. Unresolved labels appear as “Unidentified speaker.”

This refinement preserves the transcribed wording and timing, apart from capitalization corrections and removal of suspected speech-recognition artifacts during roll calls, such as repeated text or text too long for its allotted audio. We retain the transcript before refinement and a record of corrections and removals so we can review changes and rerun refinement from the original output.

How summaries and navigation are generated

Anthropic’s Claude Opus 4.8 writes meeting summaries from the full refined transcript, with its timestamps, the official agenda when available, and context about officials and the structure of City government. The summary workflow first extracts a timestamped record of facts, then drafts the summary and checks it against that record using the same model. It is designed to distinguish discussion and proposals from decisions, and committee recommendations from final Council action. Vote results, figures, and quotations link to moments in the recording so readers can check them in context.

Google’s Gemini 3.5 Flash creates the meeting’s navigation outline by matching the agenda to timestamped excerpts sampled across the transcript. Those section boundaries are automatically estimated. If summary generation fails, the transcript can still be published without a summary.

Always return to the source

Transcripts, speaker labels, timestamps, outlines, and summaries are generated automatically. Public-source context and automated checks reduce some errors, but they do not make these outputs an independently verified account. Words, names, vote attributions, and summary claims can still be wrong or miss context.

Use Windowbox to find the passage. Check the recording before quoting it, and consult official City records for the authoritative account.

Why the donut?

A bakery box has a window so you can see what’s inside. We think public information should work that way, too. And being in Portland, we love our donuts.

Who’s behind Windowbox

Windowbox is an independent project operated by Form Follows Function, LLC. It is not affiliated with or endorsed by the City of Portland.

info@windowbox.app