From scan to record
The Board has printed its proceedings since 1906. Libraries scanned the volumes, and the scans are on the Internet Archive with their page text (OCR). We read those pages and turn every item into a row. Here is one item, followed from the page to the row.
The page
On 15 January 1912 the Board passed an ordinance about the Islais Creek Incinerating Plant. It is printed on page 53 of the Journal of Proceedings for 1912: archive.org/details/journalofproceed1912sanfrich/page/n66.
The printed lines, from archive.org's OCR:
Board of Public Works to Contract for Grading, etc., for Islais Creek Incinerating Plant.
Bill No. 1973, Ordinance No. 1767 (New Series), entitled, "Authorizing the Board of Public Works to enter into contracts for grading the site and constructing concrete foundation piers for the Islais Creek Incinerating Plant, … a sum not to exceed eighteen thousand ($18,000.00) dollars …"
Ayes — Supervisors Bancroft, Caglieri, Andrew J. Gallagher, George E. Gallagher, Giannini, Hilmer, Hocks, Koshland, Mauzy, McCarthy, McLeran, Murdock, Murphy, Payot, Vogelsang — 15.
Who reads what
A language model (Claude Haiku 5.5) reads the minutes one page at a time, with the page before it for context. For every item on the page it fills in the same short form: the kind of item, its number, what happened, the votes, the money, the places, and the people or companies named.
Plain programs do everything that needs no judgement:
- reading every printed roll call a second time and checking that the names add up to the printed total;
- matching each printed surname to the supervisors who served that year;
- converting dollars to 2026 dollars with a consumer price index;
- checking that each quoted line is on the cited page;
- withholding the names of private people for 75 years (see Privacy).
The row it becomes
The item is one row of the decisions table. These are its values in v0.7.1:
| column | value |
|---|---|
decision_id | qipu:sf/decision/journalofproceed1912sanfrich:66/2 |
year | 1912 |
date | 1912-01-15 |
date_from | page: heading of an earlier page |
decision_group | qipu:sf/decision/journalofproceed1912sanfrich:66/2 |
kind | ordinance |
outcome_best | passed |
plain_best | Board authorized up to $18,000 (≈ $627,403 in 2026 dollars) for grading and foundations at the Islais Creek Incinerating Plant. |
quote | Board of Public Works to Contract for Grading, etc., for Islais Creek Incinerating Plant. Bill No. 1973, Ordinance No. 1767 |
source_url | https://archive.org/details/journalofproceed1912sanfrich/page/n66 |
page_exact | true |
summary_by | claude-haiku-5-5 (model-written; check the scan) |
Page 53 doesn't print the meeting date: it comes from the heading "MONDAY, JANUARY 15, 1912" seven pages earlier, and date_from says so. The one-line summary is written by the model and is labelled as such. The quote and the page link are the record; the summary is a guide.
Each fact is also a row of its own in the claims table (the outcome, each vote, the place), with the same page link.
One decision, several rows
An item often passes through the Board more than once: referred to committee, passed for printing (the first of two votes), then finally passed. Each passage is its own row, on its own date and page. Some items were also read by more than one pass of the pipeline, so one printed item can have two rows. Treat decision_id as the id of a reading, not of a law.