Public testimony is often technically available but practically inaccessible. I downloaded the hearing record, removed duplicates, redacted contact information, summarized each submission, classified the testimony, and linked every entry back to its source page.
The Salem City Council convened on July 27, 2026, at 6:00 p.m. The Agenda and supplemental packets can be obtained at here. Here is a screenshot of the page you will encounter, it is designed to look like a calendar and has entries in blue bars on a given date:

The “helpful” interface requires you to hover and click a given blue bar on a given day. Here’s what you will see (as of Tuesday, 7/28/26 at 4:50 AM PDT):

I numbered the choices, whose names have had the middle truncated and replaced with an ellipsis so that the entries are not unique, e.g. “07-27-26 Cou…pdf”, and I downloaded all five entries into a directory ~/work/Salem/20260727. If you hover over the blue characters of any entry, you get a mouse pop-up that distnguishes the entry:

I do not know whether this interface satisfies applicable accessibility requirements, but its dependence on hovering, truncated filenames, and precise mouse movement raises obvious usability and accessibility concerns. A plain-text list with complete filenames would be substantially easier to navigate.
Here is a listing of the files downloaded with their size and page number (along with the shell script that extracted the page count):
jlpoole@jp ~/work/Salem/20260727 $ date; printf '%-60s %12s %8s\n' 'FILE' 'SIZE' 'PAGES' find . -maxdepth 1 -type f -iname '*.pdf' -print0 | while IFS= read -r -d '' file; do size=$(du -h --apparent-size "$file" | awk '{print $1}') pages=$(pdfinfo "$file" 2>/dev/null | awk '/^Pages:/ { print $2 }') printf '%-60s %12s %8s\n' \ "${file#./}" \ "$size" \ "${pages:-ERROR}" done Tue Jul 28 04:57:54 PDT 2026 FILE SIZE PAGES 07-27-26 Council Written Testimony #2.pdf 36M 361 07-27-26 Council Additions 1.pdf 836K 22 Agenda - FullPackage City Council _Jul27_2026.pdf 89M 386 07-27-26 Council Written Testimony 1.pdf 61M 319 Agenda - Agenda City Council _Jul27_2026.pdf 503K 8 jlpoole@jp ~/work/Salem/20260727 $
I then submitted this prompt to OpenAI’s Codex:
~/work/Salem/20260727 contains 5 PDFs relating to the City of Salem hearing on same date. Would you please digest the PDFs providing a table of people who appeared with a colum [sic] of their name & address, if provided, their email, and then a concise summary in 1-3 sentences of the substance of their submission? The table would be relevant to “Additions” which is a powerpoint presentation and “Agenda – Agenda” which is solely the Agenda. The goal here is to provide an executive summary, along with count of testimony submissions, so one can get an overview without having to read 600+ sheets.
The response was:
5:11 AM
Done. I created the digest here:
[salem_2026-07-27_testimony_digest.md](/home/jlpoole/work/Salem/20260727/salem_2026-07-27_testimony_digest.md)
Key counts from the digest:
- 187 public testimony records counted after deduping repeated PDF text and removing staff-only wrapper/reply records.
- 173 approximate unique submitter identities by name/email pair.
- Classification: 129 opposed or seriously concerned, 1 directly supportive, 5 focused on/supportive of process motions, 52 questions or mixed process comments.
I treated Agenda - Agenda and 07-27-26 Council Additions 1.pdf as the agenda/context anchors, and did not separately count Agenda - FullPackage... because it appears to duplicate agenda/supporting material and would risk double counting.
5:15 AM
Here are the results (I had Codex remove addresses and emails from the table):
https://salemdata.net/CityOfSalem/salem_2026-07-27_testimony_digest_redacted_v1.html
The resulting digest contains 187 materially distinct testimony records representing approximately 167 submitters. Of those records, 129 opposed or expressed serious concern about the proposal, one directly supported it, five focused on the proposed public-process motions, and 52 consisted of questions or mixed process comments.
This method is not limited to data centers or Salem. Residents, journalists, neighborhood associations, and public officials can use the same approach whenever testimony is buried in large agenda packets. The essential safeguards are preserving the source documents, explaining the methodology, protecting private information, and linking summaries back to the record.
Leave a Reply