Qipudata
San Francisco · v0.7.1
qipu data›San Francisco›Documentation›Data dictionary

Data dictionary

Every table and column of the release.

A claim says what a record states, not that it is true. Truth needs corroboration.

Generated from the table contracts (contracts/) and the tables as built (scripts/45_docs.py). Files: releases/v0.7.1/parquet/<table>.parquet. Ids are stable across rebuilds. Empty columns are columns of the design the data cannot fill yet; nothing is invented to fill them.

Tables (generated from contracts/)

Every table and column below comes from its contract (contracts/parquet/<table>.yaml), which the build checks on every release. Privacy class: what kind of data a column can hold; public copy: what the published file does with it. The embargo: names of private people are withheld for 75 years after the record (San Francisco) or 92 (Vancouver); a record with no year is treated as under the embargo.

address_resolution (805,748 rows)

Address resolution

Raw "<number> <street>" texts seen in claims, resolved exactly to today's EAS address. Only exact, unique matches in v1.

columntypenullvalues / unitprivacypublic copymeaning
raw_textVARCHARyesfree_textnames of private people withheld under the embargoA <number> <street> place text as printed in a claim.
yearINTEGERyesnoneas isYear of the claim.
place_idVARCHARnoe.g. qipu:sf/place/block/1noneas isToday's EAS address it matched (see places).
precisionVARCHARyesaddressnoneas isaddress on every row.
methodVARCHARyesexactnoneas isexact on every row: number and street matched exactly one DataSF EAS address.
confidenceDECIMAL(2,1)yesnoneas is1.0 on every row.
run_idVARCHARnoaddress-exact-v1noneas isaddress-exact-v1 (see runs).

block_points (5,102 rows)

Block points

One point per assessor block (the map's block index), for fast lookups.

columntypenullvalues / unitprivacypublic copymeaning
blockVARCHARyesnoneas isassessor block number
latDOUBLEyesnoneas isa point inside the block
lonDOUBLEyesnoneas isa point inside the block
hood_idVARCHARyesnoneas isthe neighbourhood place id

cities (2 rows)

Cities

City configuration (config/cities/*.json): namespace, currency, privacy embargo, address authority.

columntypenullvalues / unitprivacypublic copymeaning
cityVARCHARnosf, vannoneas isCity code used in ids: sf, van.
nameVARCHARyesSan Francisco, Vancouvernoneas isCity name.
countryVARCHARyesCA, USnoneas isCountry code (US, CA).
jurisdiction_idVARCHARnoqipu:sf/place/city, qipu:van/place/citynoneas isThe city's place id (qipu:<city>/place/city).
currencyVARCHARyesCAD, USDnoneas isCurrency of amounts (USD, CAD).
privacy_embargo_yearsINTEGERyesnoneas isYears after a record's date before private people's names are shown: 75 (SF), 92 (Vancouver).
address_authorityVARCHARyesCity of Vancouver property addresses (open data), DataSF Enterprise Addressing Systemnoneas isThe address register places are matched to.
wikidataVARCHARyesQ24639, Q62noneas isWikidata id.
bboxDOUBLE[]yesnoneas is[west, south, east, north] in degrees.

claim_reliability (8,367,105 rows)

Claim reliability

How well each claim is backed (qipu_data/reliability.py, phase e). A claim says what a record states, not that it is true; the tier says how firmly the claim is tied to its record and how well its reading was measured. verified = checked by a person against the scan, or stated by 2+ independent documents; quoted = its quote is on the cited page and its run measured at or above 0.9; unverified = everything else (the reason says which). Not the same as claims.reliability, which only says whether the run that read the claim was scored (measured / unmeasured). From v0.6.2 also in the DuckDB.

columntypenullvalues / unitprivacypublic copymeaning
claim_idVARCHARnoe.g. c:c4ca4238a0b923820dcc509a6f75849bnoneas isThe claim (see claims).
quote_checkVARCHARnofound, not_found, no_ocr, no_quotenoneas isIs the claim's quote on the cited page? found (its first words in order and 80% of its words are in the page's OCR text, or the next page's), not_found, no_ocr (no page text to look in yet), no_quote.
run_accuracyDOUBLEyesshare 0-1; 0..1noneas isThe measured accuracy of the run that read the claim (its headline score in field_scores). Empty: the run is unmeasured.
run_accuracy_againstVARCHARyeshuman, model_keynoneas isWhat run_accuracy was measured against: human (a hand-checked key) or model_key (a key written by a stronger model, not checked by a person). Shown separately: they are not the same evidence.
run_accuracy_nBIGINTyes0..noneas isHow many items the score was measured on.
support_countBIGINTno1..noneas isHow many extracted rows read this same claim (claim_support); several readings of one page are not independent.
independent_sourcesBIGINTno1..noneas isHow many different documents state the same subject, property, value and date.
checks_failedVARCHAR[]yesnoneas isConsistency checks this claim failed: tally_count / tally_outcome (the printed vote tally disagrees with the extracted votes or outcome), tally_ocr_count, date_outside_volume (the date is outside the years of the cited volume).
human_verdictVARCHARyesright, partly, wrongnoneas isThe hand check of this claim or its decision, when a person checked it against the scan (the worst field verdict).
flag_statusVARCHARnonone, pending, corrected, rejectednoneas isA reader's flag on this claim: pending (waiting for review), corrected, rejected (reviewed, the claim stands).
tierVARCHARnoverified, quoted, unverifiednoneas isverified / quoted / unverified (see the table description). Not a truth score.
tier_reasonVARCHARnononeas isWhy the claim has its tier, in plain words.

claim_support (6,594,525 rows)

Claim support

One row per staged extraction row behind a claim: the same statement read by several runs or layers is one claim with several supports.

columntypenullvalues / unitprivacypublic copymeaning
claim_idVARCHARnononeas isStable id: c: + 32 hex (128 bits, hashed from the slot: subject, property, object, page, role); votes v:<rollcall_id>:<n>.
extraction_tableVARCHARyesbos_records, dateline, dl_documents, doors, hand_decisions, hood_stories, hood_timelines, map_block_items, map_blocks, media, resweep, showcase_search ...noneas isWhich table or file the reading came from.
row_keyVARCHARnoraw_textnames of private people withheld under the embargoThe row inside that table or file (its seq, else the staged claim id).
run_idVARCHARnobos-corpus-2026-09, dateline-2026-10, dl-tags-haiku55-2026-10, doors-2026-10, hand-2026-10, hood-stories-2026-10, hood-timelines-2026-10, ia-fulltext-places-2026-07, map-blocks-2026-10, map-blocks-items-2026-10, media-registry-2026-10, resweep-d1960-haiku55-2026-10 ...noneas isThe extraction run (see runs).
confidenceDOUBLEyesnoneas is0-1 where the run gives one.
agreesBOOLEANyesnoneas istrue on every row in v0.4.

claims (8,367,105 rows)

Claims

The core table: one small statement per row, the same shape for every source (DATA_ARCHITECTURE.md 7.4).

columntypenullvalues / unitprivacypublic copymeaning
subject_idVARCHARnononeas isWhat the statement is about: a decision (qipu:sf/decision/...), a place, a person (qipu:sf/person/...) or an archive item (ia:<identifier>).
subject_labelVARCHARyesfree_textwhere property = 'voted': as is; where extraction_table IN ('showcase_search', 'media', 'dl_documents'): as is; otherwise: names of private people withheld under the embargoReadable label of the subject.
propertyVARCHARnooutcome, action, voted, moved, seconded, sponsored, reported_by, party, money, rezoned, refers_to, acts_on ...noneas isControlled list: outcome, voted, concerns_place, built, depicted_in, recorded_at, happened_at, ballot_result.
property_detailVARCHARyesnoneas isThe source file's own name for the statement (e.g. sanborn_map_shows, voted_aye, timeline_moment).
object_idVARCHARyesnoneas isThe other entity, when there is one (the decision a supervisor voted on; the place an archive item concerns).
value_numDOUBLEyesnoneas isNumeric value (e.g. the year built from the assessor roll).
value_textVARCHARyesfree_textwhere property IN ('party', 'owned_by', 'occupied_by'): shown for officials and organisations; a private person is withheld under the embargo; where extraction_table = 'x_enrich' AND property IN ('sold_for', 'leased', 'conveyed', 'took_position'): shown for officials and organisations; a private person is withheld under the embargo; where extraction_table = 'x_enrich' AND property IN ('held_role', 'sponsored', 'excused_from_vote'): as is; where property = 'voted': as is; where extraction_table IN ('showcase_search', 'media', 'dl_documents'): as is; otherwise: names of private people withheld under the embargoText value: the outcome, the vote (yes/no/absent/excused), the line as written.
summaryVARCHARyesfree_textwhere property = 'voted': as is; otherwise: names of private people withheld under the embargoFor outcome claims: the one-line plain summary of the decision. For votes: the printed outcome phrase.
unitVARCHARyesnoneas isEmpty in v1.
currencyVARCHARyesUSD, CADnoneas isEmpty in v1.
value_yearINTEGERyesnoneas isEmpty in v1 (money is not yet extracted).
t_fromVARCHARyesnoneas isWhen: YYYY-MM-DD, YYYY-MM or YYYY.
t_toJSONyesnoneas isEnd of an interval (empty in v1).
t_precisionVARCHARyesday, month, season, year, decade, century, unknownnoneas isday, month or year.
place_idVARCHARyese.g. qipu:sf/place/block/1noneas isWhere (a qipu place id; qipu:sf/place/city for citywide).
place_labelVARCHARyesfree_textnames of private people withheld under the embargoThe place as written in the source.
place_precisionVARCHARyespoint, address, building, parcel, corner, segment, block, survey_block, street, area, hood, district ...noneas isHow exactly the source places it: address, parcel, corner, segment, street, block, stated, named place, hood, city.
latDOUBLEyesdegrees (WGS 84); 36.0..50.0noneas isLatitude where the source file gives one.
lonDOUBLEyesdegrees (WGS 84); SF-owned land reaches the Sierra (Hetch Hetchy, Camp Mather); -125.0..-119.0noneas isLongitude where the source file gives one.
page_idVARCHARyese.g. journalofproceed30sanfrich:1noneas isThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document. nopage:<seq> where the source gives no page number (sfbos rows without one): the row is kept, page_url is NULL.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed30sanfrich/page/n1noneas isOpens the page: archive.org BookReader link built from the leaf map (audited against IA's scandata), or <pdf url>#page=<n> for a PDF. NULL only where page_id is nopage:<seq>.
source_idVARCHARnononeas isThe source: an archive.org identifier, or web:<url> for other sources.
source_urlVARCHARyesnoneas isLink to the source page.
source_labelVARCHARyesfree_textwhere extraction_table IN ('showcase_search', 'media', 'dl_documents'): as is; otherwise: names of private people withheld under the embargoReadable source name.
licenceVARCHARyesCC-BY, CC-BY-2.0, CC-BY-2.5, CC-BY-3.0, CC-BY-NC-3.0, CC-BY-NC-4.0, CC-BY-NC-ND-2.0, CC-BY-NC-ND-2.5, CC-BY-NC-ND-3.0, CC-BY-NC-ND-4.0, CC-BY-NC-SA-1.0, CC-BY-NC-SA-2.5 ...noneas isThe source's licence where the source file states it.
quoteVARCHARyesraw_textwhere extraction_table IN ('bos_records', 'resweep', 'map_blocks', 'x_decisions_v2', 'x_appraisals', 'site_decisions', 'hand_decisions', 'x_roll_calls'): left out for records under the embargo; otherwise: names of private people withheld under the embargoShort quote of the source (<= 300 characters). See privacy_flag.
extraction_tableVARCHARyesassessor_roll, board_permits, bos_records, dateline, dbi_permits, dl_documents, doors, first_built, hand_decisions, hood_stories, hood_timelines, land_1869 ...noneas isWhich table or file the statement came from (bos_records, resweep, x_roll_calls, map_blocks, site_decisions, ...).
run_idVARCHARnobos-corpus-2026-09, dateline-2026-10, dl-tags-haiku55-2026-10, doors-2026-10, hand-2026-10, hood-stories-2026-10, hood-timelines-2026-10, ia-fulltext-places-2026-07, map-blocks-2026-10, map-blocks-items-2026-10, media-registry-2026-10, resweep-d1960-haiku55-2026-10 ...noneas isThe extraction run (see runs).
seqVARCHARyesraw_textnames of private people withheld under the embargoThe row id inside the source table or file. For map_blocks and site rows it is "<block>\<volume>/<leaf>\<first line>" (to be replaced by an id).
confidenceDOUBLEyesprobability 0-1; 0..1noneas is0-1 where a run gives one (votes: 0.95 when the printed counts match the names).
statusVARCHARyesextracted, record, curated, verified, corrected, disputed, retracted, supersedednoneas isextracted (machine-read), record (from an official register: assessor, DataSF), curated (written or checked by qipu for the map). No verified rows yet.
inferredBOOLEANyesnoneas isTrue when the claim is inferred from others (none in v1).
claim_kindVARCHARnoevent, observation, intervalnoneas isevent or observation.
topicVARCHARyesnoneas isTopic label from the run.
outcomeVARCHARyesamended, approved by voters, continued, failed, passed, pending, referred, refused, rejected, rejected by voters, submitted_to_voters, tabled ...noneas isDecision outcome where known.
page_exactBOOLEANyesnoneas isTrue when the archive.org page number was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
privacy_flagVARCHARyesmay_name_private_person, may_name_private_person_92y, may_name_private_person_after_1950noneas ismay_name_private_person_after_1950 on Board text from 1952 on (records up to 1951 are open: the one cutoff, qipu_data/cutoff.py). The public SQLite leaves those quotes out.
name_printedVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoVotes: the name as printed in the roll call.
cityVARCHARnosf, vannoneas issf or van.
rights_noteVARCHARyescatalogueas isWhat a reuser must know about the source's rights, in words (archive.org search hits, or a licence text longer than 80 characters moved here from licence).
collection_groupVARCHARyesAudio, Books and texts, Democracy's Library, Films and video, Live Music Archive, Maps and images, Open Library, Other, Prelinger Archives, Radio, SF Public Library scans, TV News Archive ...noneas isFor archive.org search hits (showcase_search): the group of the item's collection (Books and texts, Films and video, TV News Archive, ...).
place_roleVARCHARyesat, near, along, within, about, from, to, boundsnoneas isHow the claim relates to its place: at, along (a street), near (see qualifiers.distance_m), about (a document about the place) or bounds (v0.6.1: the street only bounds or locates the work, "Hanover street between Allison and Pope streets" for Allison and Pope; kept off street pages and the map).
qualifiersJSONyesnestedfield by field (below)Extra details as JSON: role (party role), distance_m, payee and purpose (money), from/to (rezoning, street segment), period/rooms (rent), score (search relevance).
qualifiers.rolenoneas isthe role of a party (claimant, owner, appellant ...)
qualifiers.purposefree_textnames of private people withheld under the embargowhat a payment is for, as read
qualifiers.payeeperson_nameshown for officials and organisations; a private person is withheld under the embargowho is paid (an organisation, or a person: withheld under the embargo)
qualifiers.distance_mnoneas ismetres from the place, for place_role = near
qualifiers.tononeas isrezoning: the new district
qualifiers.fromnoneas isrezoning: the old district
qualifiers.scorenoneas issearch relevance score (not a probability)
qualifiers.periodnoneas isrent: the period the amount is for (month, year ...)
qualifiers.roomsnoneas isrent: rooms the amount is for
qualifiers.demoted_from_blocknoneas isthe block a placement was demoted from (the item text did not name it)
qualifiers.demote_reasonnoneas iswhy the block placement was demoted (rule code)
qualifiers.roll_yearnoneas isassessor roll: the roll year
qualifiers.roll_addressnoneas isassessor roll: the address as on the roll
qualifiers.lotsnoneas isassessor lots the claim covers
qualifiers.permit_numbernoneas isbuilding permit number
qualifiers.statusnoneas ispermit status
qualifiers.cost_usdnoneas ispermit: estimated cost, USD as printed
qualifiers.placed_hownoneas ishow the claim was placed (rule)
qualifiers.estimatenoneas istrue when the value is an estimate
qualifiers.printed_placefree_textnames of private people withheld under the embargothe place as printed in the source
qualifiers.evidencefree_textnames of private people withheld under the embargothe words that support the claim, as read
qualifiers.is_businessnoneas isoccupied_by: true when the listing is a business, not a household
qualifiers.addr_kindnoneas isoccupied_by: residence or business address
qualifiers.occupation_printedfree_textnames of private people withheld under the embargodirectories: the occupation or trade as printed (elk SPCo, barber)
qualifiers.address_printedfree_textnames of private people withheld under the embargodirectories: the address as printed (642 Oak)
qualifiers.markernoneas isdirectories: the printed residence marker (r resides, h householder, b boards)
qualifiers.spouse_noteperson_nameshown for officials and organisations; a private person is withheld under the embargodirectories: the printed spouse or widow note (wid Jas); a name, so under the privacy rule
qualifiers.block_todaynoneas isdirectories: the assessor block the printed address falls in today
qualifiers.exact_door_todaynoneas isdirectories: true when the printed door number exists today
qualifiers.occupation_groupnoneas isdirectories: the occupation group (clerks and office, building trades ...)
qualifiers.business_typenoneas isdirectories: the kind of business in plain words (a cigar store)
qualifiers.classified_headingcatalogueas isdirectories: the classified-section heading the line is printed under
qualifiers.householdsnoneas isblock portraits: households listed on the block
qualifiers.residents_listednoneas isblock portraits: people listed on the block
qualifiers.occupationsnoneas isblock portraits: occupation counts on the block ({"clerk": 12})
qualifiers.share_of_address_pointsnoneas isblock in tract: share of the block's address points inside the tract
qualifiers.address_pointsnoneas isblock in tract: address points used
qualifiers.popnoneas istract portraits: persons counted
qualifiers.median_incomenoneas istract portraits: median household income, dollars of the year before the census
qualifiers.median_income_2024usdnoneas istract portraits: the same in 2024 dollars
qualifiers.record_idnoneas isbusiness locations: the DataSF record id (uniqueid)
qualifiers.blocknoneas isbusiness locations: the assessor block
qualifiers.kindnoneas isbusiness locations: plain kind (a laundromat, a bar ...)
qualifiers.date_as_printednoneas isv0.6.2: the date as the reading gave it when that day is not on the calendar (1964-04-87); t_from then keeps only the month (or the year) and t_precision says so
qualifiers.date_fixnoneas isv0.6.2: why t_from differs from date_as_printed (rule code day_not_on_calendar)
qualifiers.groupnoneas isbusiness locations: food, shop, service, lodging, leisure, worship
qualifiers.naicsnoneas isbusiness locations: self-reported NAICS code
qualifiers.start_is_register_floornoneas isbusiness locations: true when the start is the register floor (1968-10-01: read "by 1968")
qualifiers.administratively_closednoneas isbusiness locations: closed by the Tax Collector rather than by the business
qualifiers.kindsnoneas ispermits per block: distinct permits per kind ({"reroof": 3})
qualifiers.first_year_by_kindnoneas ispermits per block: the first year of each kind
qualifiers.payerperson_nameshown for officials and organisations; a private person is withheld under the embargomoney: who pays (an organisation, or a person: withheld under the embargo)
qualifiers.counterpartyperson_nameshown for officials and organisations; a private person is withheld under the embargoland and agreements: the other party (withheld under the embargo when a person)
qualifiers.holderperson_nameshown for officials and organisations; a private person is withheld under the embargopermits: the holder (withheld under the embargo when a person)
qualifiers.claimantperson_nameshown for officials and organisations; a private person is withheld under the embargoclaims: who claims (withheld under the embargo when a person)
qualifiers.ownerperson_nameshown for officials and organisations; a private person is withheld under the embargoassessments: the owner (withheld under the embargo when a person)
qualifiers.whoperson_nameshown for officials and organisations; a private person is withheld under the embargostances: the speaker or group (withheld under the embargo when a person)
qualifiers.counterparty_kindnoneas isperson, organisation, government or unknown
qualifiers.holder_kindnoneas isperson, organisation, government or unknown
qualifiers.claimant_kindnoneas isperson, organisation, government or unknown
qualifiers.owner_kindnoneas isperson, organisation, government or unknown
qualifiers.who_kindnoneas isprivate_person, public_official or organisation
qualifiers.fundcatalogueas ismoney: the fund paid from, as printed
qualifiers.fiscal_yearnoneas isthe fiscal year
qualifiers.payment_stagenoneas ismoney: progress_n, final, advance, retroactive
qualifiers.programcatalogueas ismoney: the program, as printed
qualifiers.numbernoneas iscitations and appeals: the number as printed
qualifiers.relationnoneas iscitations: how the decision relates to the cited law
qualifiers.typenoneas isthe item type (land, organisation, institution, condition ...)
qualifiers.measurenoneas isquantities: what is measured
qualifiers.rulenoneas istraffic rules: the rule
qualifiers.actionnoneas isthe action (establish, rescind, create, abolish ...)
qualifiers.permit_typenoneas ispermits: the kind of permit
qualifiers.decisionnoneas ispermits: granted, denied, revoked, transferred ...
qualifiers.directionnoneas isclaims: city_pays or city_receives; traffic rules: the direction
qualifiers.causenoneas isclaims: the cause, as a category
qualifiers.amount_claimednoneas isclaims: the amount claimed, USD
qualifiers.amount_paidnoneas isclaims: the amount paid, USD
qualifiers.rate_unitnoneas ispositions: the pay period (hour, day, month ...)
qualifiers.stancenoneas isstances and board positions: the stance
qualifiers.formnoneas isstances: spoke, petition, protest, letter
qualifiers.target_kindnoneas isboard positions: what the Board took a position on
qualifiers.noesnoneas isother votes: the noes
qualifiers.usefree_textnames of private people withheld under the embargothe use, as read
qualifiers.quote_foundnoneas istrue when the quote was found in the page text (OCR)
qualifiers.repointed_fromnoneas isdecisions v2: the page first cited, when the quote was found on the page before it instead (the claim now cites that page; qipu_data.repoint)
privacy_classVARCHARyespublic_official, public_figure, organisation, private_person, unknown, nonenoneas isWho a name in the claim belongs to: public_official (votes, motions), private_person (owners, named private parties) or organisation; empty when the claim names nobody.
public_after_yearINTEGERyesnoneas isFor private_person claims: the claim's year plus the embargo (75 years in SF, 92 in Vancouver); 9999 when the year is unknown. Until then public files show the role, not the name.
claim_idVARCHARnoe.g. c:c4ca4238a0b923820dcc509a6f75849bnoneas isStable id: c: + 32 hex (128 bits, hashed from the slot: subject, property, object, page, role); votes v:<rollcall_id>:<n> (roll calls read from the page text in v0.6.1 have ids p<hex>).
n_supportBIGINTyesnoneas isHow many extracted rows read this same claim (same claim_id); see claim_support.
media_idVARCHARyesnoneas isThe media item the claim points to (depicted_in, recorded_at), see media.
release_addedVARCHARyesv0.4noneas isRelease that built the row: v0.4 on every row (the build stamps the current release, not the first release that had the claim).
display_nINTEGERyesnoneas isarchive.org BookReader page index of the cited page (the n in /page/n<k>); page_id uses the OCR leaf instead.
t_loDATEyesnoneas isEarliest date t_from can mean (1962 -> 1962-01-01).
t_hiDATEyesnoneas isLatest date t_from can mean (1962 -> 1962-12-31; for YYYY/YYYY the end year).
reliabilityVARCHARyesmeasured, unmeasurednoneas isA property of the RUN, not of the claim: measured when the run that read this claim has scores in field_scores, else unmeasured. It is not the claim's reliability: how firmly a claim is backed is claim_reliability.tier (verified / quoted / unverified, with tier_reason). Planned rename in v0.7 (breaking): run_measured BOOLEAN.
mention_idVARCHARyesnoneas isThe printed name this statement links to a person, organisation or name (votes, movers, owners), as a row of name_mentions (m:<hash>, internal: names are never published raw). Required on every such statement read from a page since v0.7 (check M3).
place_mention_idVARCHARyese.g. pm:c4ca4238a0b92382noneas isv0.7: the place string the statement was read with, as a row of place_mentions; set on statements read from a page and placed finer than the city (check M4).

Not in the public copy: importance.

corrections (0 rows)

Corrections

The human layer (empty in v0.3): edits applied on top of claims, never replacing extractions.

columntypenullvalues / unitprivacypublic copymeaning
correction_idVARCHARyesnoneas isEmpty in v0.4 (no corrections yet). Meant for the id of a human correction, applied on top of the claims (claims_effective).
target_kindVARCHARyesnoneas isEmpty in v0.4 (no corrections yet). Meant for what kind of row is corrected.
target_idVARCHARyesnoneas isEmpty in v0.4 (no corrections yet). Meant for the id of the corrected row.
fieldVARCHARyesnoneas isEmpty in v0.4 (no corrections yet). Meant for the corrected column.
new_valueVARCHARyesfree_textnames of private people withheld under the embargoEmpty in v0.4 (no corrections yet). Meant for the corrected value.
at_timeTIMESTAMPyesnoneas isEmpty in v0.4 (no corrections yet). Meant for when it was made.
whyVARCHARyesfree_textnames of private people withheld under the embargoEmpty in v0.4 (no corrections yet). Meant for the reason.
reviewVARCHARyesnoneas isEmpty in v0.4 (no corrections yet). Meant for its review state.

Not in the public copy: who.

cpi_ca (113 rows)

Consumer price index, Canada

Canadian consumer price index per year (and the latest month), used for 2026 dollars on Vancouver amounts: Statistics Canada BLS CPI-U U.S. city average, annual averages 1913-2025, and 2026 from the latest month; 1800-1912 Minneapolis Fed estimates linked at 1913 (quality estimate).

columntypenullvalues / unitprivacypublic copymeaning
yearBIGINTno1800..2030noneas isThe year.
cpiDOUBLEnoindex (see base); 0..noneas isThe index value for the year.
baseVARCHARyesnoneas isThe index base (1982-84=100).
seriesVARCHARyesnoneas isThe series the value comes from.
qualityVARCHARyesofficial, estimate, provisionalnoneas isofficial (BLS annual average), estimate (before 1913, linked), provisional (the current year from its latest month).
source_urlVARCHARyesnoneas isWhere the number was taken from.
noteVARCHARyescatalogueas isHow the value was derived (rebasing, the month used).

cpi_us (227 rows)

Consumer price index, United States

Vocabulary: the US consumer price index by year (1982-84 = 100), used to state amounts in 2026 dollars (scripts/18_cpi.py). BLS CPI-U U.S. city average, annual averages 1913-2025, and 2026 from the latest month; 1800-1912 Minneapolis Fed estimates linked at 1913 (quality estimate).

columntypenullvalues / unitprivacypublic copymeaning
yearBIGINTno1800..2030noneas isThe year.
cpiDOUBLEnoindex (see base); 0..noneas isThe index value for the year.
baseVARCHARyesnoneas isThe index base (1982-84=100).
seriesVARCHARyesnoneas isThe series the value comes from.
qualityVARCHARyesofficial, estimate, provisionalnoneas isofficial (BLS annual average), estimate (before 1913, linked), provisional (the current year from its latest month).
source_urlVARCHARyesnoneas isWhere the number was taken from.
noteVARCHARyescatalogueas isHow the value was derived (rebasing, the month used).

decision_numbers (88,876 rows)

Numbers printed in decisions

Decision -> number(s) printed in its text.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnononeas isThe decision whose text prints the number (see decisions).
kindVARCHARnoordinance, resolutionnoneas isresolution or ordinance.
numberVARCHARyesnoneas isThe number as printed at the start of the item.
number_yearINTEGERyesnoneas isFull year from a printed suffix (No. 627-91 -> 1991).
seriesVARCHARyes(New Series), (Series of 1039), (Series of 1933), (Series of 1939), (Series of 1989), (Series of 1993), (Series of 9139)noneas isSeries as printed: (New Series), (Series of 1939).
file_noVARCHARyesnoneas isBoard file number as printed (File No. ...).
number_checkVARCHARyesnoneas isv0.6.1 check of the number against the page: cited (printed only after words that cite another act: not this item's number, no link), not_found (printed nowhere on the page: no link), seq_outlier (far from the numbers around it: kept, flagged), legistar: N-YY (corrected from the Legistar matter), legistar: not this number (...) (no link); empty when nothing was found against it.
yearBIGINTyesnoneas isYear of the Journal volume.
source_urlVARCHARyesnoneas isLink to the source page.
instrument_idVARCHARnononeas isqipu:sf/instrument/<res\|ord\|bill>/<year>-<n> when the number prints its year, s<year>-<n> for "(Series of 1939)", ns-<n> for "(New Series)", else y<journal year>-<n>.

decisions (718,093 rows)

Board of Supervisors decisions

One row per thing the Board of Supervisors (SF) or City Council (Vancouver) did: an item in the Journal or minutes, a re-swept item, a hand-built decision, or a map/site row with no item behind it. Decisions v2 readings attach to the same row.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed30sanfrich\|1noneas isqipu:sf/decision/<item id>: corpus items <volume>\|<n>, re-swept items <volume>\|g<n>, hand-built hand:<slug>, map/site-only rows map:..., su:..., sd:....
item_idVARCHARyesnoneas isThe item inside its volume: <volume>\|<n> (corpus), <volume>\|g<n> (re-sweep), or a hand/map/site key.
originVARCHARyesbos_corpus, hand, map_blocks, resweep, roll_call, site, v2noneas isbos_corpus, resweep, map_blocks, site, hand.
yearBIGINTyesnoneas isThe year of the meeting.
dateVARCHARyesnoneas isThe meeting date (YYYY-MM-DD) when known.
date_fromVARCHARyesnoneas isWhere the date comes from (v0.6.1): record (the pass's own record), page: running head / page: page heading / page: meeting heading (the Journal page's printed meeting date before the item), page: heading of an earlier page / page: previous page heading (the last printed meeting date before the page), page: dated claims on the page.
rollcall_idVARCHARyesnoneas isv0.6.1: the roll call of this decision's item (its last; it may be printed on the next page).
decision_groupVARCHARyesnoneas isOne id per printed item (v0.6.1): rows of different passes over the same item (v1 corpus, resweep, v2, map, site, roll call) share it; it is the decision_id of the group's first row by pass. Count distinct decision_group for "how many decisions".
kindVARCHARyesnoneas isresolution, ordinance, motion, bill, hearing, report ... as classified.
headingVARCHARyesfree_textnames of private people withheld under the embargoThe item heading as printed (OCR).
plainVARCHARyesfree_textnames of private people withheld under the embargoThe run's one-line plain summary (model-written; see summary_by).
record_typeVARCHARyescut-in-half, decision, departmental-work, index-row, page-furniture, public-comment, too-damaged, vote-outcome-onlynoneas isWhat the row records: decision, vote-outcome-only, report ...
topicVARCHARyesnoneas isTopic label.
subtopicVARCHARyesnoneas isFiner topic label.
actionVARCHARyesaccepted, amended, appointed, appropriated, commended, granted, ordered, other, paid, refused, settled, voted-or-schedulednoneas isThe last action on the item (adopted, passed first reading, referred ...).
outcomeVARCHARyesamended, approved by voters, continued, passed, passed first reading, pending, referred, refused, rejected, rejected by voters, submitted_to_voters, tabled ...noneas isThe run's outcome (passed / refused / rejected / vetoed / pending / unknown).
source_urlVARCHARyesnoneas isThe archive.org page of the item.
blockVARCHARyesnoneas isAssessor block the item names, when it names one.
streetsVARCHARyesfree_textnames of private people withheld under the embargoStreets the item names ("\"-separated).
amountsVARCHARyesnoneas isDollar amounts printed in the item (text).
how_placedVARCHARyesbetween two streets, names its own block, no place given, street address, street corner, street onlynoneas isHow the item was placed on the map (block, street, no place given ...).
classified_byVARCHARyesform, fund, near-duplicate, purpose-clause, record, rule, titlenoneas isWhat classified it: rule, form, model.
hocr_leafBIGINTyesnoneas isPage index in the OCR (before the leaf map).
page_exactBOOLEANyesnoneas isTrue when the page link was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
whoVARCHARyesfree_textnames of private people withheld under the embargoWho the item concerns, in words (model-written).
place_textVARCHARyesfree_textnames of private people withheld under the embargoThe place as written in the item.
run_idVARCHARyesresweep-d1960-haiku55-2026-10, resweep-d1970-haiku55-2026-10, resweep-d1980-haiku55-2026-10, resweep-d1990-haiku55-2026-10, resweep-d2000-haiku55-2026-10, resweep-d2010-haiku55-2026-10, sf-v21-haiku-1014, van-v21-haiku-1014noneas isThe run that read it (see runs).
addressVARCHARyesfree_textnames of private people withheld under the embargoThe street address the item names, if any.
amountBIGINTyesnoneas isThe main dollar amount, as a number.
quoteVARCHARyesraw_textleft out for records under the embargoRaw OCR text of the item. Not published for records under the embargo.
site_plainVARCHARyesfree_textnames of private people withheld under the embargoThe map's corrected one-line summary.
site_outcomeVARCHARyesapproved by voters, passed, refused, rejected, rejected by voters, vetoednoneas isThe map's outcome value.
site_idsVARCHARyesnoneas isThe map's row ids for this decision.
outcome_bestVARCHARyesamended, approved by voters, continued, passed, passed first reading, pending, referred, refused, rejected, rejected by voters, submitted_to_voters, tabled ...noneas ispassed / refused / rejected / vetoed / pending / unknown (the map's value first, then the run's).
plain_bestVARCHARyesfree_textnames of private people withheld under the embargoThe best one-line summary (the map's corrected line first).
instrument_idVARCHARyesnoneas isOrdinance/resolution number printed in the item (see instruments).
outcome_fromVARCHARyesnoneas isWhere outcome_best came from (site, run, roll call ...).
same_asVARCHARyesnoneas isAudit: the id this row was merged from (decisions v2 attached to v1).
cityVARCHARnosf, vannoneas issf or van.
privacy_flagVARCHARyesmay_name_private_person_after_1950noneas ismay_name_private_person_after_1950 on Board text from 1952 on (records up to 1951 are open: the one cutoff, qipu_data/cutoff.py).
summary_byVARCHARyesa model in the 2026-09 pipeline (model-written; check the scan), claude-haiku-5-5 (model-written; check the scan), qipu (hand-written from the cited source)noneas isWho wrote the plain line (model name, "model-written; check the scan").
statusVARCHARnointroduced, proposed, referred, continued, amended, hearing_held, first_reading, submitted_to_voters, recommended, claim_filed, demand_listed, reported ...noneas isWhat the Board did with this item at this reading, from the first rule that applies (status_from); never blank: not_recorded when nothing says (qipu_data/status.py, usability audit 19/10).
status_wordVARCHARnononeas isThe status in the word people see (proposed, referred, first reading, passed, adopted, vetoed, failed, withdrawn, claimed, listed for payment, recommended, reported, no status on record ...).
status_plainVARCHARnononeas isThe status in one plain sentence, e.g. "Sent to committee; no final vote found"; says when the matter went further later.
happenedVARCHARnodecided, not_decided, failed, unknownnoneas isdecided (finally passed, adopted, voters approved, veto overridden) / not_decided (proposed, referred, continued, first reading only, claim, recommendation) / failed (refused, tabled, withdrawn, vetoed) / unknown (no status on record).
carried_outVARCHARnoTrue, False, unknownnoneas isWhether what was decided was carried out (paid, built, demolished): only with its own evidence (carried_out_evidence); unknown = not confirmed. A decision to pay is not a payment.
carried_out_evidenceVARCHARyesnoneas isThe statement or record that shows it was carried out.
status_fromVARCHARnoinstrument_lifecycle, outcome_best, x_decisions, other_reading, roll_call, wording_rule, nonenoneas isWhere the status comes from: the instrument lifecycle stage of this reading, outcome_best, the v2 extraction, another reading of the same printed item, the printed roll call, a wording rule on the heading/summary/printed text, or none.
matter_statusVARCHARnononeas isThe furthest status of the whole matter (instrument lifecycle; else the same printed item; else the same title decided within 120 days; else this reading's own).
matter_happenedVARCHARnodecided, not_decided, failed, unknownnoneas ishappened, for the whole matter.
matter_status_fromVARCHARnoinstrument_lifecycle, printed_item, same_title_120d, this_readingnoneas isWhere matter_status comes from.
plain_fixVARCHARyesnoneas isSet when plain_best was rewritten because it stated an open matter as done (rule_* = wording rule, model_haiku = rewritten by Claude Haiku and checked); plain keeps the original.

Not in the public copy: importance, significance, site_importance, site_hidden.

entity_ids (336 rows)

Entity ids

v0.7: the minted-id registry of persons and organisations (ids/persons.csv, ids/orgs.csv in the code repo, append-only). An id is minted once and never re-derived from a name; status says whether it is still the record's id.

columntypenullvalues / unitprivacypublic copymeaning
idVARCHARnononeas isThe id (qipu:sf/person/..., qipu:sf/org/...).
kindVARCHARnoperson, orgnoneas isWhat the id names.
keyVARCHARnononeas isWhat the build looks the record up by: wd:<Q>, wp:<Wikipedia title>, name:<roster name>, journal:<surname> (persons), the name key (organisations), id:<old id>.
labelVARCHARyesorganisationas isThe name when the id was minted (officials and organisations only: private people never get an id).
aliasVARCHARyesnoneas isAn older id or slug that still resolves to this one.
minted_inVARCHARyesnoneas isThe release (or <= vX for ids older than the registry) the id was minted in.
statusVARCHARnoactive, redirected, retirednoneas isactive; redirected (see redirect_to and id_redirects); retired (kept, never reused).
redirect_toVARCHARyesnoneas isThe id it now points to.

events (1 rows)

Events

Events (v0.3: the 1906 earthquake and fire, with its burn-zone footprint).

columntypenullvalues / unitprivacypublic copymeaning
event_idVARCHARnoqipu:sf/event/1906-earthquake-and-firenoneas isqipu:<city>/event/<slug>.
cityVARCHARnosfnoneas issf.
labelVARCHARyesThe 1906 earthquake and firenoneas isReadable name.
event_typeVARCHARyesdisasternoneas isdisaster.
t_fromVARCHARyes1906-04-18noneas isStart date (YYYY-MM-DD).
t_toVARCHARyes1906-04-21noneas isEnd date (YYYY-MM-DD).
footprint_place_idVARCHARnoqipu:sf/place/burn-zone/1906noneas isThe place covering the area it hit (see places).
wikidataVARCHARyesQ211386noneas isWikidata id.

field_scores (36 rows)

Field scores

Measured accuracy per run and field, from the benchmarks (L4_TEST.md, sfra bench, the roll-call gold). Claims from these runs say reliability = measured.

columntypenullvalues / unitprivacypublic copymeaning
run_idVARCHARnorollcall-parser-v1, sf-v21-haiku-1014, sfra-appraisals-haiku55-2026-10, van-v21-haiku-1014, bos-corpus-2026-09, dl-sf-facts-v1.1-haiku55-2026-10, andrews-sonnet55-2026-10, sf-enrich-v11-haiku55-2026-10, citydir-haiku55-2026-10noneas isThe run scored (see runs).
fieldVARCHARyesvotes, outcomes, places, dl facts, andrews owners, sfra appraisals, action, address, appraised_value, counts, dates, finds ...noneas isThe field or group of fields scored (vote names, money, mover, ...).
metricVARCHARyesF1, F1 (vs Opus key), Spearman, all exact, exact, exact where the roll is in the text, matched, normalized exact (18 pages), recallnoneas isHow it was scored (exact, F1 (vs Opus key), recall, Spearman, ...).
valueDOUBLEyesnoneas isThe score, 0-1.
gold_idVARCHARnodecisions_bench Vancouver gold (30 pages, 48 decisions: Opus-written, 21 decisions hand-checked), decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key, decisions_bench/gold.jsonl roll calls (Opus-written key), scripts/22_rollcall_gold.py, ia_records/sfra/bench (18 pages)noneas isThe gold set (see runs.gold_id).
againstVARCHARyeshand, human, opus_key, opus_key (21 hand-checked), model_scan_checknoneas isWhat the run was compared with: opus_key (a key written by Claude Opus), opus_key (21 hand-checked), hand / human (a person checked the rows), model_scan_check (a model re-read each sampled claim against the page image; a person did not).
nINTEGERyesnoneas isSize of the gold set (pages, items or roll calls).

id_redirects (135,661 rows)

Identifier redirects

Stable-id policy: a merged or retired id keeps resolving through this table (empty in v0.1, the first release).

columntypenullvalues / unitprivacypublic copymeaning
old_idVARCHARnononeas isAn id an earlier release published.
new_idVARCHARyesnoneas isThe id it now resolves to; empty when the id was retired.
reasonVARCHARyesdecisions v2 reading attached to the same v1 decision, retired in v0.3: no longer produced by the build (see CHANGELOG)noneas isdecisions v2 reading attached to the same v1 decision, or retired in <release>: no longer produced by the build.
since_releaseVARCHARyesv0.3, v0.4noneas isRelease that added the redirect.

instruments (72,224 rows)

Ordinances, resolutions and bills

Ordinances, resolutions and bills by printed number.

columntypenullvalues / unitprivacypublic copymeaning
instrument_idVARCHARnononeas isqipu:sf/instrument/<res\|ord\|bill>/<year>-<n> when the number prints its year (627-91), s<year>-<n> for "(Series of 1939)", ns-<n> for "(New Series)", else y<journal year>-<n>.
kindVARCHARnoordinance, resolutionnoneas isresolution or ordinance.
numberVARCHARyesnoneas isThe number as printed.
yearBIGINTyesnoneas isYear printed with the number, else the earliest Journal year it appears in (see year_basis).
year_basisVARCHARyesprinted, year of the Journal (assumed)noneas isprinted, or the Journal year (assumed).
titleVARCHARyesfree_textnames of private people withheld under the embargoEmpty in v0.4.
file_noVARCHARyesnoneas isBoard file number printed with it.
first_page_idVARCHARnononeas isLowest page_id among the x_decisions rows that print the number; : when that row has no archive.org page.
n_decisionsBIGINTyesnoneas isDecisions that print the number.
noteVARCHARyesprinted at the head of many items: probably the ordinance they amend, not their own numbernoneas isWarning on numbers printed at the head of more than 10 items (probably the ordinance they amend).

media (1,428 rows)

Media

Every photo, film, recording, clip and document the map shows (timelines, covers, hood stories, block items, films, clips), with its credit, licence, holder and a rights note. Claims depicted_in / recorded_at tie each to its place and year.

columntypenullvalues / unitprivacypublic copymeaning
media_idVARCHARnononeas isqipu:sf/media/<hash of its URL>, stable.
kindVARCHARnoaudio, clip, document, film, photo, textnoneas isKind as the map records it: photo, film, audio, clip, text, document.
urlVARCHARyesnoneas isThe item's page at its holder.
file_urlVARCHARyesnoneas isDirect file or image link (a thumbnail for films).
embed_urlVARCHARyesnoneas isEmbeddable player link (archive.org embed, with start time).
titleVARCHARyescatalogueas isTitle or caption.
creditVARCHARyescatalogueas isCredit line as the map shows it.
licenceVARCHARyesnoneas isLicence as the map recorded it; text longer than 80 characters is moved to rights_note.
holderVARCHARyescatalogueas isWho holds the rights or the copy.
rights_noteVARCHARyescatalogueas isWhat a reuser must know, by holder rule (e.g. WNP: ask before public use; Live Music Archive: non-commercial).
yearBIGINTyesnoneas isYear of the map moment the item illustrates, not when it was made (see created_edtf).
used_inVARCHAR[]yesnoneas isWhere the map uses it (timelines.json:<street>#<n>, blocks/<block>.json:<id>, ...).
source_identifierVARCHARyesnoneas isarchive.org identifier, for archive.org items.
start_sBIGINTyesnoneas isFilms: start second in the map's player.
placed_becauseVARCHARyescatalogueas isFilms: why the film is placed where it is (archive.org description, shotlist or qipu's frame check).
distance_mBIGINTyesnoneas isDistance in metres recorded for the item in the map's block files (dist).
end_sBIGINTyesnoneas isFilms: end second in the map's player.
derived_fromVARCHARyeshttps://archive.org/details/0779_Seeing_Americas_Greatest_Chinatown_San_Francisco_Part_I_09_49_35_00, https://archive.org/details/EmbarcaderoFreewayEntry1957, https://archive.org/details/SanFranc1906_2, https://archive.org/details/TripDown1905, https://archive.org/details/anti-vietnam-war-march-1969-llsf-2016-20-mbps-1, https://archive.org/details/barbary-coast-1914-from-lost-landscapes-no-1, https://archive.org/details/barbary-coast-c-1930s-w-purcells-llsf-2012, https://archive.org/details/casfmta_000020, https://archive.org/details/casfmta_000024, https://archive.org/details/cubanc_000212, https://archive.org/details/cubanc_000238, https://archive.org/details/moonalice20180805-16th-annual-jerry-day-jerry-garcia-amphitheater ...noneas isClips: the archive.org film the clip was cut from.
clip_secondsDOUBLEyesnoneas isClips: length in seconds.
not_cut_becauseVARCHARyesCC no-derivatives: link only, licence not open (Copyright status unknown. This work may be protected by the ): link only, licence not open (Copyright status unknown; stream only (Bancroft Library / Ca): link only, licence not open (Not stated (Moonalice video archive on the Internet Archive)): link onlynoneas isClips: why no clip was cut (licence).
media_kindVARCHARnoclip, document, film, photo, recording, textnoneas isphoto, film, recording, clip, text, document (kind with audio -> recording).
created_edtfVARCHARyesnoneas isWhen it was made (EDTF), from a year in the title; ~ for circa; empty when the title has none.
use_policyVARCHARyesopen, attribution, noncommercial, stream_only, link_only, ask_holder, unknownnoneas isHow it may be used: open, attribution, noncommercial, stream_only, link_only, ask_holder, unknown.
cityVARCHARnosfnoneas issf.

ocr_files (11,323 rows)

OCR files

The OCR files on archive.org behind each source item (the manifest the page texts were read from), so a reader can fetch and check them.

columntypenullvalues / unitprivacypublic copymeaning
source_idVARCHARnononeas isthe archive.org identifier
fileVARCHARyesnoneas isthe file name and archive.org format (hOCR, DjVu text ...)
md5VARCHARyesnoneas isarchive.org's checksums, size and modification time
sha1VARCHARyesnoneas isarchive.org's checksums, size and modification time
sizeVARCHARyesnoneas isarchive.org's checksums, size and modification time
mtimeVARCHARyesnoneas isarchive.org's checksums, size and modification time
formatVARCHARyesDjVuTXT, Djvu XML, OCR Page Index, OCR Search Text, Page Numbers JSON, Scandata, chOCR, hOCRnoneas isthe file name and archive.org format (hOCR, DjVu text ...)

org_merges (0 rows)

Org merges

v0.6.2 stub (empty in the release): the merge log of organisation names. One row per printed name variant folded into an organisation, with the rule that did it, so every merge can be checked and undone. Filled by the graph slice (graph_slice/, not yet in the release); organisation ids there are provisional until frozen (STABLE_IDS_AND_VERSIONING.md).

columntypenullvalues / unitprivacypublic copymeaning
variantVARCHARnoorganisationas isThe name as printed (C P T & T Co).
org_idVARCHARnononeas isThe organisation it was folded into: a minted qipu:sf/org/... id, never re-derived from the name.
ruleVARCHARnononeas isWhich rule merged it (normaliser step, alias table, hand).
confidenceDOUBLEyes0..1noneas isThe rule's score, 0-1; a prior unless confidence_kind is measured.
confidence_kindVARCHARyesmeasured, priornoneas ismeasured (from a hand-checked sample) or prior (a hand-set value for the rule).
whoVARCHARnononeas isThe rule name, or the initials of the person.
merged_onDATEnononeas isWhen the merge was made.
statusVARCHARnounreviewed, accepted, rejected, ambiguousnoneas isunreviewed until a person checks it; ambiguous for generic names (City, the city) that stay name mentions.
reversibleBOOLEANnononeas isTrue when undoing it is a row change only (every rule merge); the variant's mentions keep their printed text.

orgs (1 rows)

Organisations

Organisations (v1: the Board).

columntypenullvalues / unitprivacypublic copymeaning
org_idVARCHARnoqipu:sf/org/board-of-supervisorsnoneas isqipu:sf/org/<slug>.
nameVARCHARyesorganisationas isName.
kindVARCHARnoagencynoneas isagency.
wikidataVARCHARyesQ3658756noneas isWikidata id.

pages (183,888 rows)

Pages

Every archive.org page cited. We point at the scans; we never copy them.

columntypenullvalues / unitprivacypublic copymeaning
page_idVARCHARnoe.g. journalofproceed30sanfrich:1noneas isThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document. nopage:<seq> where the source gives no page number (sfbos rows without one): the row is kept, page_url is NULL.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed30sanfrich/page/n1noneas isOpens the page: archive.org BookReader link built from the leaf map (audited against IA's scandata), or <pdf url>#page=<n> for a PDF. NULL only where page_id is nopage:<seq>.
source_idVARCHARnononeas isarchive.org identifier of the volume.
printed_pageVARCHARyesnoneas isThe page number printed on the page, from IA's page_numbers file (empty where IA has none, or where its page list does not match the OCR).
meeting_dateDATEyesnoneas isEarliest dated claim on the page.
text_sha1VARCHARyesnoneas isEmpty in v1.
ocr_engineVARCHARyesABBYY FineReader 8.0, ABBYY FineReader 9.0, tesseract 5.3.0-6-g76aenoneas isEmpty in v1.
scan_urlVARCHARyesnoneas isOpens the page on archive.org.
iiif_urlVARCHARThe page image through archive.org IIIF (v3). Known fault: on about a third of pages it points one page early (an old IIIF service counted from 1); use page_url (the audited viewer page) until v0.6 fixes it.
leaf_numINTEGERyesnoneas isThe page's OCR leaf (the jp2/IIIF file number), from the volume's leaf map; empty in volumes without one.
display_nINTEGERyesnoneas isarchive.org BookReader page index (the n in /page/n<k>).
page_exactBOOLEANyesnoneas isTrue when the archive.org page number was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
n_claimsBIGINTyesnoneas isClaims citing the page.
ocr_file_sha1VARCHARyesnoneas isSHA-1 of the volume's _djvu.xml OCR file (see ocr_files); the same for every page of a volume.

person_names (9,251 rows)

Person names as printed

Each name as printed in roll calls, with the years seen and the person it resolves to.

columntypenullvalues / unitprivacypublic copymeaning
person_idVARCHARnononeas isThe supervisor (see persons).
name_printedVARCHARyespublic_officialas isThe name as printed in the roll call.
fromBIGINTyesnoneas isFirst year this printed form appears in a roll call.
toBIGINTyesnoneas isLast year this printed form appears in a roll call.
nBIGINTyesnoneas isRoll-call votes with this printed form.
matchVARCHARyesfuzzy, fuzzy+given, fuzzy_low, journal_only, surname, surname+given, surname_widenednoneas isHow this printed form was matched (see x_roll_call_votes.match).

persons (294 rows)

Persons

People resolved in v1: the members of the Board of Supervisors (official roster: the Wikipedia list, with Wikidata ids), plus four supervisors printed in the Journals but missing from that list (journal_only).

columntypenullvalues / unitprivacypublic copymeaning
person_idVARCHARnononeas isqipu:sf/person/<slug>.
display_nameVARCHARyespublic_officialas isName as on the roster.
bornVARCHARyesnoneas isEmpty in v0.4.
diedVARCHARyesnoneas isEmpty in v0.4.
wikidataVARCHARyesnoneas isWikidata id.
is_public_officialBOOLEANyesnoneas isTrue on every row: all are supervisors.
wikipediaVARCHARyespublic_officialas isTitle of the English Wikipedia article.
roster_sourceVARCHARyesjournal_only, wikipedianoneas iswikipedia (the Wikipedia list of SF supervisors) or journal_only (a surname printed in 100+ roll calls that the list lacks).
first_yearBIGINTyesnoneas isFirst year served (journal_only: first year the name is printed).
last_yearBIGINTyesnoneas isLast year served (journal_only: last year the name is printed).
akaVARCHAR[]yespublic_officialas isOther names on the roster.

place_geometries (459,992 rows)

Place geometries

Dated geometry versions of places (EPSG:4326): parcel and block polygons, address points, street lines, neighbourhoods, the 1906 burn zone, showcase features (approximate circles). hit_geom is the clickable footprint (points and lines buffered by the place type), hit_area_m2 drives specificity.

columntypenullvalues / unitprivacypublic copymeaning
place_idVARCHARnononeas isThe place (see places).
geom_versionINTEGERyesnoneas isVersion of the place's shape; 1 on every row.
valid_fromDATEyesnoneas isFirst day the shape is valid; empty = always.
valid_toDATEyesnoneas isLast day the shape is valid; empty = still.
geomGEOMETRY('OGC:CRS84')yesnoneas isThe shape (WGS84 lon/lat): point, line or polygon.
hit_geomGEOMETRY('OGC:CRS84')yesnoneas isClickable footprint: polygons as drawn; points and lines buffered by place_types.hit_buffer_m (at least 3 m).
geom_kindVARCHARnoline, point, polygonnoneas ispolygon, point or line.
boundsVARCHARyesapproximate, officialnoneas isofficial (from a register) or approximate (a circle around a point).
sourceVARCHARyesAssessor blocks (DataSF), via the map block index, DataSF Analysis Neighborhoods (simplified), DataSF EAS, DataSF ff3a-iqhv, DataSF parcels, DataSF street centerlines (CNN), Wikidata point + radius set by qipunoneas isLayer the shape comes from (DataSF parcels, DataSF EAS, DataSF street centerlines (CNN), ...).
area_m2DOUBLEyesnoneas isPolygon area in m²; empty for points and lines.
length_mDOUBLEyesnoneas isLine length in metres; empty for points and polygons.
hit_area_m2DOUBLEyesnoneas isArea of hit_geom in m².
bbox_xminDOUBLEyesnoneas isWest edge of hit_geom (longitude).
bbox_yminDOUBLEyesnoneas isSouth edge of hit_geom (latitude).
bbox_xmaxDOUBLEyesnoneas isEast edge of hit_geom (longitude).
bbox_ymaxDOUBLEyesnoneas isNorth edge of hit_geom (latitude).

place_mentions (892,915 rows)

Place mentions

v0.7: every place string a statement was read with, one row per page and string; claims.place_mention_id points here. The input to place resolution, like name_mentions for names.

columntypenullvalues / unitprivacypublic copymeaning
mention_idVARCHARnoe.g. pm:c4ca4238a0b92382noneas ispm: + sha1(page_id\place_text)[:16].
cityVARCHARyesnoneas isThe city.
place_textVARCHARyesfree_textnames of private people withheld under the embargoThe place as given with the statement (claims.place_label; the resolved place id when the reading gave no text).
page_idVARCHARnononeas isThe page it was read on.
place_idVARCHARyesnoneas isThe place it was resolved to (when one string was placed two ways on a page, one of them).
place_precisionVARCHARyesnoneas isHow exactly it was placed.
yearBIGINTyesnoneas isThe year of the earliest statement using it.
n_claimsBIGINTnononeas isStatements that point to it.

place_names (2,274 rows)

Place names

Names of places (official, alias). The historic names index starts here; v1 holds today's names and the search aliases.

columntypenullvalues / unitprivacypublic copymeaning
place_idVARCHARnononeas isThe place (see places).
nameVARCHARyesnoneas isThe name.
name_kindVARCHARnoalias, former, officialnoneas isofficial (street and neighbourhood names from DataSF EAS) or alias (a name matched in Internet Archive full-text search).
fromVARCHARyesnoneas isEmpty in v0.4. Meant for the first year the name was in use.
toVARCHARyesnoneas isEmpty in v0.4. Meant for the last year the name was in use.
sourceVARCHARyesDataSF EAS, Internet Archive full-text search alias (dl_documents), qipu v0.6.1noneas isWhere the name comes from.

place_relations (1,284,690 rows)

Place relations

How places relate, computed from geometry each build (plus declared links): an address within a block, a block within a neighbourhood, a street crosses a creek ...

columntypenullvalues / unitprivacypublic copymeaning
from_idVARCHARnoe.g. qipu:sf/place/block/1noneas isplace ids
relationVARCHARnocontains, within, overlaps, touches, crosses, near, on_street, segment_of, at_intersection_of, part_of, replaced_by, split_into ...noneas iswithin, overlaps, crosses, on_street ...
to_idVARCHARnoe.g. qipu:sf/place/block/1noneas isplace ids
basisVARCHARyesdeclared, geometrynoneas isgeometry or declared
valid_fromDATEyesnoneas iswhen the relation holds (historic places)
valid_toDATEyesnoneas iswhen the relation holds (historic places)
overlap_ratioDOUBLEyesnoneas isthe geometric measure behind it
distance_mDOUBLEyesnoneas isthe geometric measure behind it
noteVARCHARyesDataSF EAS parcel number, DataSF EAS street, DataSF parcels zoning_code (today), area vs area, by definition (the feature drains / encloses it), configured street of the feature, point in polygon, street line intersects the area, renamed Cesar Chavez Street in 1995, block point inside the feature circle (approximate), block point within 150 m of the feature circle (approximate)noneas ishow it was computed

place_types (82 rows)

Place types

The place type vocabulary (spec/vocab/place_types.csv): id segment, family, clickable buffer, salience, Wikidata class.

columntypenullvalues / unitprivacypublic copymeaning
type_idVARCHARnononeas isType name, as used in places.type_id.
id_segmentVARCHARyesnoneas isSegment used in place ids (qipu:<city>/place/<id_segment>/...); frozen once used.
familyVARCHARyesaddress, administrative, building, cadastral, coast, electoral, ephemeral, geology, hydro, informal, institution, landmark ...noneas isGroup for filtering (regulatory, transport, hydro, ...); not a hierarchy.
labelVARCHARyesnoneas isReadable name.
broader_typeVARCHARyesaddress, streetnoneas isThe broader type (street, address).
default_geomVARCHARyesline, none, point, polygonnoneas isUsual geometry: polygon, line, point or none.
hit_buffer_mVARCHARyes0, 10, 12, 15, 20, 25, 30, 40, 50, 8noneas isHow far in metres from a point or line a click still hits it.
salienceVARCHARyes0.05, 0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0noneas isRanking prior (0-1) for click-anywhere, used after specificity.
wikidata_classVARCHARyesQ12280, Q123705, Q131681, Q15243209, Q166620, Q190928, Q194195, Q22698, Q23397, Q23442, Q25391, Q28575 ...noneas isWikidata class, where sure.
definitionVARCHARyesnoneas isWhat the type covers.

places (470,596 rows)

Places

Today's places with stable qipu ids.

columntypenullvalues / unitprivacypublic copymeaning
place_idVARCHARnoe.g. qipu:sf/place/block/1noneas isqipu:sf/place/address/eas-<EAS id>, .../parcel/<block>-<lot>, .../block/<block>, .../street/<name-type>, .../street/<name> (printed without type, street_name), .../hood/<slug>, .../landmark/<slug>, .../city.
kindVARCHARnoaddress, block, burn_zone, city, contaminated_site, creek, fill_area, freeway, landmark, neighbourhood, parcel, redevelopment_area ...noneas isaddress, parcel, block, street, street_name, neighbourhood, landmark, city.
nameVARCHARyesnoneas isReadable name: the address (26 REARDON RD), <block>/<lot> (<addresses>), Assessor block <n>, the street, neighbourhood or feature name.
parent_idVARCHARyesnoneas isaddress -> parcel -> block -> neighbourhood -> city.
apnVARCHARyesnoneas isAssessor block + lot.
eas_idVARCHARyesnoneas isDataSF Enterprise Addressing System base id.
cnnVARCHARyesnoneas isEmpty in v1.
wikidataVARCHARyesQ1348537, Q211386, Q24639, Q4049033, Q6081595, Q62, Q6878535, Q719317, Q757971, Q7987437noneas isWikidata id, for named features.
latDOUBLEyesdegrees (WGS 84); 36.0..50.0noneas isLatitude: the EAS point for addresses, the mean of address points for parcels, blocks and streets, the Wikidata point for features.
lonDOUBLEyesdegrees (WGS 84); SF-owned land reaches the Sierra (Hetch Hetchy, Camp Mather); -125.0..-119.0noneas isLongitude: the EAS point for addresses, the mean of address points for parcels, blocks and streets, the Wikidata point for features.
numberBIGINTyesnoneas isHouse number (addresses).
streetVARCHARyesnoneas isStreet name and type, upper case (MISSION ST).
street_idVARCHARyesnoneas isThe street place (qipu:sf/place/street/<name-type>).
blockVARCHARyesnoneas isAssessor block.
lotVARCHARyesnoneas isAssessor lot.
hoodVARCHARyesnoneas isDataSF Analysis Neighborhood (point in polygon).
valid_fromDATEyesnoneas isEmpty in v1 (the historic place index comes later).
valid_toDATEyesnoneas isLast day the place existed; only the 1906 burn zone has one.
sourceVARCHARyesDataSF Analysis Neighborhoods (j2bu-swwd), DataSF EAS (3mea-di5p), PDDL, DataSF EAS parcel numbers (3mea-di5p), PDDL, DataSF Enterprise Addressing System (3mea-di5p), PDDL, DataSF ff3a-iqhv (1906 Fire perimeter), DataSF parcels, DataSF parcels: zoning_code, Wikidata (point, dates); radius set by qipu, Wikidata Q4049033 (point, dates); radius set by qipu, Wikidata Q6081595 (point, dates); radius set by qipu, Wikidata Q6878535 (point, dates); radius set by qipu, Wikidata Q757971 (point, dates); radius set by qipu ...noneas isWhere the place comes from (DataSF Enterprise Addressing System (3mea-di5p), PDDL, DataSF parcels, Wikidata, ...).
radius_mDOUBLEyesnoneas isRadius in metres of the circle qipu draws around a feature's Wikidata point.
gnisVARCHARyes254827noneas isUSGS GNIS feature id.
geometry_noteVARCHARyesapproximate: Wikidata point + radius, approximate: a circle around the feature point, not the real boundarynoneas isSays when the geometry is approximate (a circle around a Wikidata point).
type_idVARCHARnoaddress, assessor_block, burn_zone, city, contaminated_site, creek, fill_area, freeway, landmark, neighbourhood, parcel, redevelopment_area ...noneas isPlace type (see place_types): parcel, address, assessor_block, street, street_name, zoning_district, landmark, ...
cityVARCHARnosf, vannoneas issf or van.
specificityDOUBLEyesnoneas is-log10 of the clickable footprint in m² (place_geometries.hit_area_m2); higher = smaller, ranked first by places_at.
rep_latDOUBLEyesdegrees (WGS 84); 36.0..50.0noneas isLatitude of a point on the place's geometry (point on surface).
rep_lonDOUBLEyesdegrees (WGS 84); SF-owned land reaches the Sierra (Hetch Hetchy, Camp Mather); -125.0..-119.0noneas isLongitude of a point on the place's geometry (point on surface).
statusVARCHARyescurrent, historicnoneas iscurrent, or historic when valid_to is set.
area_m2DOUBLEyesnoneas isPolygon area in m²; empty for points and lines.

privacy_rules (2 rows)

Privacy rules

Names of private people are public after N years: sf 75, van 92.

columntypenullvalues / unitprivacypublic copymeaning
cityVARCHARnosf, vannoneas issf or van.
applies_toVARCHARyesprivate_personnoneas isprivate_person.
embargo_yearsINTEGERyesnoneas isYears after a record's date before a private person's name is shown: 75 (SF), 92 (Vancouver).
basisVARCHARyesCanada: 92 years (census release rule); public officials and companies always; everything kept, flagged, US: names of private people shown publicly only for records older than ~75 years (census-style); public officials and companies always; everything kept, flaggednoneas isThe rule and its reason, in words.
as_of_yearINTEGERyesnoneas isThe year the embargo is counted to, pinned per release (qipu_data/cutoff.py AS_OF_YEAR), never today's date: nothing moves by itself on 1 January.
last_open_yearINTEGERyesnoneas isThe last fully open year: as_of_year minus embargo_years (SF 1951, Vancouver 1934). Every qipu product (data, site, search, agent tools, map) uses this one number.

properties (85 rows)

Claim properties

The claim property vocabulary (spec/vocab/properties.csv).

columntypenullvalues / unitprivacypublic copymeaning
propertyVARCHARnononeas isProperty name, as used in claims.property.
domainVARCHARyesdecision, decision \| case, decision \| instrument, decision \| instrument \| case, decision \| instrument \| case \| source \| media, event \| story \| decision, instrument, person, person \| name, person \| org, place, place (historic address)noneas isWhat the subject is (decision, place, person \| org, ...).
rangeVARCHARyesnoneas isWhat the object or value is.
range_kindVARCHARyesnoneas isThe range in a closed machine form: alternatives joined by \|, each one of entity:<class> (place, person, org, decision, instrument, media, source, event), enum:<v1/v2/...>, name (a printed name not resolved to an entity), money, number, date, text, bool.
allowed_qualifiersVARCHARyesnoneas isThe claims.qualifiers keys seen on this property in the last release (every key seen, most used first), joined by \|; empty when its claims carry none.
claim_kindVARCHARnoevent, interval, observationnoneas isevent, observation or interval.
definitionVARCHARyesnoneas isWhat the property means.
wikidata_propertyVARCHARyesnoneas isClosest Wikidata property (P127, ...).
wikidata_matchVARCHARyesclose, close (inverse), exact, none, verifynoneas isHow close the Wikidata property is: exact, close, close (inverse), verify, none.
use_caseVARCHARyesnoneas isThe question the property answers (Who owned it, Follow the money).
since_specVARCHARyes1.0, v0.1, v0.2noneas isSpec version that added it (v0.1, v0.2, 1.0).
deprecated_byVARCHARyesconcerns_placenoneas isThe property that replaces it.
sourcesVARCHARyesnoneas isSources or runs that give it.

roles (318 rows)

Roles

Supervisor terms (contiguous years served, from the roster).

columntypenullvalues / unitprivacypublic copymeaning
person_idVARCHARnononeas isThe person (see persons).
roleVARCHARyessupervisornoneas issupervisor.
org_idVARCHARnoqipu:sf/org/board-of-supervisorsnoneas isThe body (see orgs).
fromINTEGERyesnoneas isFirst year of an unbroken run of years served.
toINTEGERyesnoneas isLast year of that run.
sourceVARCHARyesWikipedia: Members of the San Francisco Board of Supervisors, printed in the Journal roll calls only, votes in the Journal roll calls (v0.6.1)noneas isWikipedia: Members of the San Francisco Board of Supervisors, or printed in the Journal roll calls only.

runs (43 rows)

Runs

What made each table: rules, hand work, or a model run (model, prompt).

columntypenullvalues / unitprivacypublic copymeaning
run_idVARCHARnononeas isThe run's id, as used in run_id elsewhere.
kindVARCHARnohand, llm, llm+hand, llm+rules, rules, rules+hand, searchnoneas isHow the run worked: llm, rules, llm+hand, llm+rules, rules+hand, hand, search.
modelVARCHARyesclaude-haiku-5-5, claude-sonnet-5-5noneas isModel used (claude-haiku-5-5, claude-sonnet-5-5); empty for rule, hand and search runs.
prompt_versionVARCHARyescity_run.py, decisions_bench/v2/v2_prompt.py (schema v2.1), ia_records/scripts/dl_tag.py, ia_records/scripts/sfra_extract.py, street_decisions PROMPT.md / UNPLACED_PROMPT.md / IV_PROMPT.md, street_decisions/RESWEEP_PROMPT.mdnoneas isPrompt file or script the run used.
schema_versionVARCHARyes1, v2.1noneas isOutput schema version (1, v2.1) where set.
settingsVARCHARyesnoneas isEmpty in v0.4.
startedVARCHARyes2026-07-28, 2026-09-02, 2026-10, 2026-10-01, 2026-10-06, 2026-10-12, 2026-10-13, 2026-10-14noneas isWhen the run started (YYYY-MM-DD or YYYY-MM).
pagesINTEGERyesnoneas isEmpty in v0.4.
cost_usdDOUBLEyesnoneas isEmpty in v0.4.
gold_scoresVARCHARyesnoneas isEmpty in v0.4.
notesVARCHARyesBoard items the location gate dropped, re-swept (resweep.py) and read one batch of 60 at a time [unmeasured: no gold for this run], Democracy's Library (IGS) SF items: the hoods, streets and places each is about, read from metadata and the start of the OCR [unmeasured: no gold for this run], Redevelopment Agency property files (Western Addition A-2), one row per parcel page; matched to EAS by sfra_build.py, blocks/build_index.py: decision -> assessor blocks (tiers street/corner/segment/addr/stated); accuracy.json: 88.9% exact on 3,195 checks, decisions v2 for Vancouver council minutes (decisions_runs/van_v21_haiku), decisions v2: one call per page, previous page as context, Message Batches (decisions_runs/sf_v21_haiku), open-public-data pipeline/minutes extract.py (location gate) + blocks/build_core_table.py classification (form/rule/title rules, some LLM labels), scripts/11_stage_extra.py: every photo, film, recording, clip and document the map shows, with credit, licence and a rights note, scripts/20_rollcalls.py: printed roll calls -> votes; names matched to the Wikipedia roster, scripts/30_build.py: "<number> <street>" texts matched exactly to DataSF EAS addresses, scripts/80_showcase_fetch.py: archive.org advancedsearch (title/subject/description), Open Library search and Wayback CDX for the six SF showcase places; metadata only, no model, site rows (su:/sd:) of the map: plain line, outcome, importance, accuracy fixes [unmeasured: no gold for this run] ...noneas isWhat the run made, in a line; model runs with no gold end with [unmeasured: no gold for this run].
gold_idVARCHARyesdecisions_bench Vancouver gold (30 pages, 48 decisions: Opus-written, 21 decisions hand-checked), decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key, decisions_bench/gold.jsonl roll calls (Opus-written key), scripts/22_rollcall_gold.py, ia_records/sfra/bench (18 pages)noneas isThe gold set the run was scored against (see field_scores); empty when unmeasured.
prompt_idVARCHARyescity_run.py, decisions_bench/v2/v2_prompt.py (schema v2.1), ia_records/scripts/dl_tag.py, ia_records/scripts/sfra_extract.py, street_decisions PROMPT.md / UNPLACED_PROMPT.md / IV_PROMPT.md, street_decisions/RESWEEP_PROMPT.mdnoneas isSame as prompt_version.
extraction_tableVARCHARyesnoneas isEmpty in v0.4.
cityVARCHARnosf, vannoneas issf or van.

sources (6,377 rows)

Sources

Every source cited. archive.org items carry their collections and Democracy's Library membership.

columntypenullvalues / unitprivacypublic copymeaning
source_idVARCHARnononeas isThe source: an archive.org identifier, or web:<url> for other sources.
collectionVARCHARyesnoneas isFirst archive.org collection of the item.
collectionsVARCHAR[]yesnoneas isAll archive.org collections of the item.
in_democracys_libraryBOOLEANyesnoneas isTrue when one of the item's collections is in Democracy's Library scope: the DL pools (instituteofgovernmentalstudieslibrary, USGovernmentDocuments, fedlink, governmentpublications, us_census, nasa, ...) or one of the 830 child collections of democracys-library (DL_INVENTORY.md section 1). SF Public Library scans are not in DL.
dl_ruleVARCHARyescollection in Democracy's Library scope: USGovernmentDocuments,democracys-library,igscalocalgovdocs,igsl_annual-report-sf-public-utilities,instituteofgovernmentalstudieslibrary, collection in Democracy's Library scope: USGovernmentDocuments,democracys-library,igscalocalgovdocs,igsl_san-francisco-real-prop-report,instituteofgovernmentalstudieslibrary, collection in Democracy's Library scope: USGovernmentDocuments,democracys-library,igscalocalgovdocs,igsl_sf-bos-annual-salary-ord,instituteofgovernmentalstudieslibrary, collection in Democracy's Library scope: USGovernmentDocuments,democracys-library,igscalocalgovdocs,igsl_sfbcdc-minor-permits-granted,instituteofgovernmentalstudieslibrary, collection in Democracy's Library scope: USGovernmentDocuments,us-supreme-court, collection in Democracy's Library scope: democracys-library,igscalocalgovdocs,instituteofgovernmentalstudieslibrary, collection in Democracy's Library scope: igscalocalgovdocs,instituteofgovernmentalstudieslibrary, collection in Democracy's Library scope: nasa, no collection in DL scope (DL_INVENTORY.md section 1)noneas isWhich collection made it DL, or why not.
kindVARCHARnoappraisal, audio, board_journal, board_minutes, book, collection, council_minutes, directory, eir, election_results, encyclopedia, film ...noneas isboard_journal, board_minutes, council_minutes, report, plan, eir, book, film, audio, photo, open_data, encyclopedia, map, web ...
titleVARCHARyescatalogueas isTitle from archive.org, else a citing claim's source label.
creatorVARCHARyescatalogueas isCreator as given by archive.org.
publisherVARCHARyescatalogueas isPublisher as given by archive.org.
year_fromBIGINTyesnoneas isYear of the item (archive.org date), else the earliest year of the claims citing it.
year_toBIGINTyesnoneas isLatest year of the claims citing it, else the item's year.
pagesBIGINTyesnoneas isarchive.org imagecount.
ocr_qualityVARCHARyesABBYY FineReader 11.0, ABBYY FineReader 11.0 (Extended OCR), ABBYY FineReader 8.0, ABBYY FineReader 9.0, tesseract 4.1.1, tesseract 5.0.0-1-g862e, tesseract 5.0.0-alpha-20201231-10-g1236, tesseract 5.0.0-beta-20210815, tesseract 5.0.0-rc1-12-g88b4, tesseract 5.0.0-rc2-1-gf788, tesseract 5.1.0-1-ge935, tesseract 5.2.0-1-gc42a ...noneas isThe OCR engine archive.org names (tesseract 5.3.0, ABBYY FineReader 9.0, ...); not a quality score.
licenceVARCHARyesnoneas isarchive.org licence URL or rights text (<= 300 characters); for web sources the citing claims' licence code.
holderVARCHARyescatalogueas isarchive.org contributor: the library that gave the copy (San Francisco Public Library, ...).
digitizedBOOLEANyesnoneas isTrue for archive.org items; empty for web sources.
on_archive_orgBOOLEANyesnoneas isTrue when the source is an archive.org item.
urlVARCHARyesnoneas isLink to the source: the archive.org item page, or the web page.
n_claimsDOUBLEyesnoneas isClaims citing it.
notesVARCHARyesfree_textnames of private people withheld under the embargoEmpty in v0.4.

withdrawn (54,652 rows)

Withdrawn

v0.7: record time. Every id that was in an earlier release and is gone from this one, with why and what replaced it; carried forward from release to release (append-only). Valid time is t_from / t_to / t_lo / t_hi on the claims.

columntypenullvalues / unitprivacypublic copymeaning
idVARCHARnononeas isThe claim or entity id.
kindVARCHARnoclaim, place, person, decision, instrument, org, medianoneas isWhat the id named.
release_addedVARCHARyesnoneas isThe release it first appeared in (claims).
release_removedVARCHARnononeas isThe first release without it.
reasonVARCHARnoreread, error, merge, privacy, rights, retirednoneas isreread (a new reading of the same page replaced it), merge (folded into another record: a duplicate roll call, a renumbered instrument), error (a misreading, no replacement), privacy, rights (takedowns), retired.
replaced_byVARCHARyesnoneas isThe id that replaces it in this release, if any.
noteVARCHARyesnoneas isThe reason in words.

x_appraisals (3,189 rows)

Redevelopment Agency appraisals

Extraction table: the SF Redevelopment Agency property files of the Western Addition A-2 project (SFPL scans on archive.org), one row per parcel page (claude-haiku-5-5, sfra_extract.py), matched to today's parcels by sfra_build.py.

columntypenullvalues / unitprivacypublic copymeaning
blockVARCHARyesnoneas isAssessor block of today it was matched to.
lotVARCHARyesnoneas isAssessor lot, when matched to an address.
precisionVARCHARyesaddress, block, near, printed blocknoneas isaddress (door matched to an EAS address), block (matched by its street hundred), near (old door gone: nearest door of today within 60 m), printed block.
xyDOUBLE[]yesnoneas is[x, y] in metres on the qipu map's local grid: the matched door, or the mean of the block's doors.
yearBIGINTyesnoneas isYear of the report (for a sale, the sale year when it is close).
textVARCHARyesfree_textnames of private people withheld under the embargoPlain line built from the fields (Redevelopment Agency appraisal: 3-story frame structure; appraised at $...). Person-like names are withheld for records under the 75-year privacy filter.
whereVARCHARyesfree_textnames of private people withheld under the embargoThe printed address in today's street spelling (1866 Turk St). Person-like words are withheld for records under the 75-year privacy filter (this also hits some street names).
address_printedVARCHARyesfree_textnames of private people withheld under the embargoAddress as printed, read by a model from the page image and OCR.
block_printedVARCHARyesnoneas isBlock as printed, read by a model from the page image and OCR.
lot_printedVARCHARyesnoneas isLot as printed, read by a model from the page image and OCR.
parcel_printedVARCHARyesnoneas isAgency parcel number as printed, read by a model from the page image and OCR.
kind_pageVARCHARyesappraisal, folder, interview, property_summary, rent_schedule, salenoneas isKind of page: appraisal, sale, property_summary, folder, interview, rent_schedule.
buildingVARCHARyesfree_textnames of private people withheld under the embargoBuilding description as printed, read by a model from the page image and OCR.
unitsVARCHARyesnoneas isUnits or rooms as printed, read by a model from the page image and OCR.
rent_exampleVARCHARyesnoneas isA sample rent line as printed, read by a model from the page image and OCR.
rent_totalVARCHARyesnoneas isTotal rent as printed, read by a model from the page image and OCR.
appraised_valueVARCHARyesnoneas isAppraised value as printed, read by a model from the page image and OCR.
assessed_totalVARCHARyesnoneas isTotal assessed value as printed, read by a model from the page image and OCR.
sale_priceVARCHARyesnoneas isSale price as printed (sales study pages), read by a model from the page image and OCR.
sale_dateVARCHARyesnoneas isSale date as printed, read by a model from the page image and OCR.
ownerVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoOwner as printed (for a sale, the grantee). Under the 75-year privacy filter the public files show a owner (name withheld until <year>).
present_useVARCHARyesfree_textnames of private people withheld under the embargoPresent use as printed (Flats, Apartments), read by a model from the page image and OCR.
confidenceVARCHARyeshigh, mediumnoneas isThe model's legibility rating: high or medium (low rows are dropped).
itemVARCHARyesnoneas isarchive.org identifier of the property file (SFH371-...).
pageBIGINTyesnoneas isarchive.org BookReader page index in the item.
urlVARCHARyesnoneas isLink to the page on archive.org.
run_idVARCHARnosfra-appraisals-haiku55-2026-10noneas issfra-appraisals-haiku55-2026-10 (see runs).
seqBIGINTyesnoneas isLine number of the row in the run's rows file.
page_idVARCHARnoe.g. journalofproceed30sanfrich:1noneas isThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document. nopage:<seq> where the source gives no page number (sfbos rows without one): the row is kept, page_url is NULL.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed30sanfrich/page/n1noneas isOpens the page: archive.org BookReader link built from the leaf map (audited against IA's scandata), or <pdf url>#page=<n> for a PDF. NULL only where page_id is nopage:<seq>.
row_keyVARCHARnononeas is<run_id>/<page_id>/<seq>.

x_block_tract (20,389 rows)

Blocks and census tracts

One assessor block in one tract map: the tract holding most of the block's EAS address points. Not from the Internet Archive (DataSF EAS address points and Census tract maps).

columntypenullvalues / unitprivacypublic copymeaning
blockVARCHARyesnoneas isAssessor block.
boundary_vintageINTEGERyesnoneas isTract map year (1990, 2000, 2010, 2020).
tractVARCHARyesnoneas isSix-digit tract code.
share_of_address_pointsDOUBLEyesnoneas isShare of the block's address points inside that tract (below 0.8: the block straddles tracts).
address_pointsINTEGERyesnoneas isNumber of address points used.

x_business_locations (248,990 rows)

Registered business locations

One registered business location (DataSF g8m3-pdis, PDDL) resolved to today's EAS address and block, with start and end years. Owner names are not carried; the business name is shown when it reads as a firm name and withheld under the privacy rule when it reads as a person's. Not from the Internet Archive (DataSF open data, PDDL).

columntypenullvalues / unitprivacypublic copymeaning
record_idVARCHARnononeas isDataSF uniqueid (record link: data.sf.gov/resource/g8m3-pdis.json?uniqueid=...).
blockVARCHARyesnoneas isAssessor block.
address_place_idVARCHARnononeas isEAS address place.
addressVARCHARyesnoneas isAddress as in EAS.
address_exactBOOLEANyesnoneas isTrue when the door number exists today.
start_yearBIGINTyesnoneas isLocation start year.
start_is_register_floorBOOLEANyesnoneas isTrue when the start is the register floor date 1968-10-01 (read: by 1968).
end_yearBIGINTyesnoneas isLocation end year (null: still open).
administratively_closedBOOLEANyesnoneas isClosed by the Tax Collector rather than by the business.
naicsVARCHARyesnoneas isSelf-reported NAICS code.
naics_titleVARCHARyescatalogueas isNAICS 2022 title.
kindVARCHARyesnoneas isPlain kind used on the map (a laundromat, a bar ...), null when not a storefront.
groupVARCHARyesfood, leisure, lodging, service, shop, worshipnoneas isfood, shop, service, lodging, leisure, worship.
business_nameVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe DBA name as registered. A firm name is always shown; a name that reads as a person's is withheld for 75 years after the location start year (the privacy rule), so almost all personal DBA names are withheld. Owner names are never carried.
hoodVARCHARyesnoneas isAnalysis neighborhood (DataSF).

x_census_tract (925 rows)

Census tracts, 1980–2020

One census tract in one census year (1980-2020): 100% counts of people, households and homes, plus sample/ACS foreign-born and median household income. Public domain, US Census Bureau. Not from the Internet Archive.

columntypenullvalues / unitprivacypublic copymeaning
yearINTEGERyesnoneas isCensus year.
boundary_vintageINTEGERyesnoneas isWhich tract map the code belongs to (1990 map for 1980 and 1990).
tractVARCHARyesnoneas isSix-digit census tract code (e.g. 016300 = tract 163).
tract_nameVARCHARyesnoneas isTract as printed (163, 101.01).
popINTEGERyesnoneas isPersons.
householdsINTEGERyesnoneas isHouseholds (occupied homes).
unitsINTEGERyesnoneas isHousing units.
occupiedINTEGERyesnoneas isOccupied housing units.
vacantINTEGERyesnoneas isVacant housing units.
ownersINTEGERyesnoneas isOwner-occupied homes.
rentersINTEGERyesnoneas isRenter-occupied homes.
under18INTEGERyesnoneas isPersons under 18.
over65INTEGERyesnoneas isPersons 65 and over.
hispanicINTEGERyesnoneas isPersons of Hispanic/Latino (1980: Spanish) origin, any race.
white_nhINTEGERyesnoneas isWhite alone, not Hispanic (1990+).
white_raceINTEGERyesnoneas isWhite by race incl. Hispanic (1980 only).
blackINTEGERyesnoneas isBlack (1980 and 1990: by race, any origin; 2000+: Black alone, not Hispanic).
asianINTEGERyesnoneas isAsian and Pacific Islander (1980 and 1990: by race, any origin; 2000+: alone, not Hispanic).
foreign_bornINTEGERyesnoneas isForeign-born persons (sample: STF3 / SF3 / ACS 5-year).
median_incomeINTEGERyesnoneas isMedian household income in the year before the census, dollars of that year (2010/2020: ACS 5-year).
median_income_2024usdDOUBLEyesnoneas isThe same in 2024 dollars (CPI-U).
source_labelVARCHARyesUS Census 1980, Summary Tape Files 1A and 3A (tract), US Census 1990, Summary Tape Files 1A and 3A (tract), US Census 2000, Summary Files 1 and 3 (tract), US Census 2010 (SF1) and ACS 2006-2010 (tract), US Census 2020 (DHC) and ACS 2016-2020 (tract)catalogueas isSource tables.
source_urlVARCHARyescatalogueas isSource file or data.census.gov table for the tract.

x_decisions (748,894 rows)

Decisions, per run

Extraction table: one row per Board item per run (DATA_ARCHITECTURE.md 7.2), with the columns the existing runs filled; the rest are empty until decisions v2 lands in the same shape.

columntypenullvalues / unitprivacypublic copymeaning
run_idVARCHARnobos-corpus-2026-09, resweep-d1960-haiku55-2026-10, resweep-d1970-haiku55-2026-10, resweep-d1980-haiku55-2026-10, resweep-d1990-haiku55-2026-10, resweep-d2000-haiku55-2026-10, resweep-d2010-haiku55-2026-10, sf-v21-haiku-1014, van-v21-haiku-1014noneas isThe extraction run that read the row (see runs).
page_idVARCHARnoe.g. journalofproceed30sanfrich:1noneas isThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document. nopage:<seq> where the source gives no page number (sfbos rows without one): the row is kept, page_url is NULL.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed30sanfrich/page/n1noneas isOpens the page: archive.org BookReader link built from the leaf map (audited against IA's scandata), or <pdf url>#page=<n> for a PDF. NULL only where page_id is nopage:<seq>.
seqVARCHARyesnoneas isRow id inside the run: the corpus item id (<volume>\|<n>) for v1 rows, the item's position on the page (1, 2, ...) for decisions v2 rows.
decision_idVARCHARnononeas isThe decision the row reads (see decisions); a v2 reading of a v1 item carries the v1 id.
yearBIGINTyesnoneas isYear of the Journal volume or meeting.
dateVARCHARyesnoneas isMeeting date (YYYY-MM-DD) where known; empty on decisions v2 rows.
quoteVARCHARyesraw_textleft out for records under the embargoThe item's text as printed (v1: first 300 characters; v2: the quote the model copied). Empty (withheld in the public files for records under the privacy embargo (75 years in SF, 92 in Vancouver)).
heading_on_prevVARCHARyesfree_textnames of private people withheld under the embargov1 rows: the item's printed heading. Decisions v2 rows: true/false, whether the heading is on the previous page. Person-like names are withheld for records under the 75-year privacy filter (92 years in Vancouver).
kindVARCHARyesappointment, ballot_measure, charter_amendment, claim, communication, contract, hearing, license, motion, ordinance, other, resolutionnoneas isKind of item: resolution, ordinance, motion, contract, hearing, permit, appointment, claim, other, ...
numberVARCHARyesnoneas isResolution or ordinance number as printed (v1: parsed from the item's opening words, see decision_numbers; v2: read by the model).
file_noVARCHARyesnoneas isBoard file number as printed.
stageVARCHARyesadopted, final, first reading, hearingnoneas isDecisions v2: stage reached, from action_raw: adopted, final, first reading or hearing; empty for other actions and v1 rows.
outcomeVARCHARyesamended, approved by voters, continued, passed, passed first reading, pending, referred, refused, rejected, rejected by voters, submitted_to_voters, tabled ...noneas isResult: passed, refused, pending, referred, continued, vetoed, unknown, ... (v2: mapped from action_raw).
actionVARCHARyesaccepted, amended, appointed, appropriated, commended, granted, ordered, other, paid, refused, settled, voted-or-schedulednoneas isv1 corpus rows: what the Board did, as classified (ordered, voted-or-scheduled, granted, amended, refused, ...); v2 rows use action_raw.
continued_toVARCHARyesnoneas isDecisions v2: when the item was continued to, as printed (next meeting of Council, two weeks).
amendedBOOLEANyesnoneas isDecisions v2: true when the item was amended on the pages read.
ayes_nBIGINTyesnoneas isAyes count as printed (v1: from the item's roll call in x_roll_calls; v2: read by the model).
noes_nBIGINTyesnoneas isNoes count as printed (v1: from the item's roll call; v2: read by the model).
absent_nBIGINTyesnoneas isAbsent count as printed (v1: from the item's roll call; v2: read by the model).
ayesVARCHAR[]yespublic_officialas isSurnames voting aye, as printed (v1: from x_roll_call_votes; v2: read by the model).
noesVARCHAR[]yespublic_officialas isSurnames voting no, as printed (v1: from x_roll_call_votes; v2: read by the model).
absentVARCHAR[]yespublic_officialas isSurnames absent or excused, as printed (v1: from x_roll_call_votes; v2: read by the model).
moverVARCHARyespublic_officialas isDecisions v2: surname of the member who moved the deciding motion, as printed.
seconderVARCHARyespublic_officialas isDecisions v2: surname of the member who seconded the deciding motion, as printed.
parties_textVARCHARyesfree_textnames of private people withheld under the embargoRe-swept rows: the parties involved, written by a model. Person-like names are withheld for records under the 75-year privacy filter (92 years in Vancouver).
money_textVARCHARyesfree_textnames of private people withheld under the embargov1 corpus rows: amounts printed in the item, as text.
places_textVARCHARyesfree_textnames of private people withheld under the embargoPlace as written: the re-sweep model's place text, or the v1 streets joined with & . Person-like names are withheld for records under the 75-year privacy filter (92 years in Vancouver).
blockVARCHARyesnoneas isv1 corpus rows: assessor block the 2026-09 pipeline placed the item on.
topicVARCHARyesnoneas isv1 rows: topic label (running-the-city, admin, the-street, land-and-building, ...); v2 rows use topics.
subtopicVARCHARyesnoneas isv1 corpus rows: finer topic (vote-or-scheduling, zoning, city-buys-land, ...).
plainVARCHARyesfree_textnames of private people withheld under the embargoOne-line plain summary, written by a model (check the scan). Person-like names are withheld for records under the 75-year privacy filter (92 years in Vancouver).
record_typeVARCHARyescut-in-half, decision, departmental-work, index-row, page-furniture, public-comment, too-damaged, vote-outcome-onlynoneas isv1 corpus rows: what the text is (decision, vote-outcome-only, public-comment, cut-in-half, page-furniture, index-row, ...).
classified_byVARCHARyesform, fund, near-duplicate, purpose-clause, record, rule, titlenoneas isv1 corpus rows: what the 2026-09 classification went by (form, rule, title, purpose-clause, record, near-duplicate, fund).
confidenceDOUBLEyesnoneas isDecisions v2: 0-1 from rule checks: 1.0 quote found on the page, 0.7 found loosely, 0.4 not found; x0.8 for action other or noes count not matching names.
scan_urlVARCHARyesnoneas isLink to the page: the archive.org scan or the minutes URL.
page_exactBOOLEANyesnoneas isTrue when the archive.org page number was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
action_rawVARCHARyesadopted, amended, continued, continues_next_page, failed, hearing_held, ordered_submitted_to_voters, other, passed_final, passed_first_reading, referred, tabled ...noneas isDecisions v2: the last action on the pages read, as the model chose it (adopted, passed_final, referred, continues_next_page, ...).
departmentVARCHARyesfree_textnames of private people withheld under the embargoDecisions v2: the department, board, officer or committee that reported or requested the item, as printed.
partiesSTRUCT("name" VARCHAR, "role" VARCHAR)[]yesnestedfield by field (below)Decisions v2: private parties named, with their role. Empty in the public files under the privacy embargo (75 years SF, 92 Vancouver): every row in v0.4.
parties.nameperson_nameshown for officials and organisations; a private person is withheld under the embargothe party as read (organisation shown; a person withheld under the embargo)
parties.rolenoneas isclaimant, owner, appellant, applicant, contractor ...
moneySTRUCT(amount DOUBLE, currency VARCHAR, purpose VARCHAR, payee VARCHAR, direction INTEGER, value_year BIGINT, amount_2026 DOUBLE, index_used VARCHAR)[]yesnestedfield by field (below)Decisions v2: each amount with currency (USD SF, CAD Vancouver), purpose and payee as read by the model; direction is empty. payee is not name-filtered.
money.amountnoneas isthe amount as read
money.currencynoneas isUSD (SF) or CAD (Vancouver); rule sf_money_in_usd
money.purposefree_textnames of private people withheld under the embargowhat the money is for
money.payeeperson_nameshown for officials and organisations; a private person is withheld under the embargowho is paid
money.directionnoneas is1 = the city pays, -1 = the city receives
money.value_yearnoneas isthe year the amount is in
money.amount_2026noneas isthe amount in 2026 dollars (CPI, see cpi_us)
money.index_usednoneas isthe price index used for amount_2026
placesSTRUCT("text" VARCHAR, street VARCHAR, number VARCHAR, from_street VARCHAR, to_street VARCHAR, block VARCHAR, lot VARCHAR, area VARCHAR, "precision" VARCHAR)[]yesnestedfield by field (below)Decisions v2: each place as printed, with street, number, from/to street, block, lot, area and precision.
places.textfree_textnames of private people withheld under the embargothe place as printed
places.streetnoneas isstreet name
places.numbernoneas ishouse number
places.from_streetnoneas issegment start
places.to_streetnoneas issegment end
places.blocknoneas isassessor block
places.lotnoneas isassessor lot
places.areafree_textnames of private people withheld under the embargoa named area
places.precisionnoneas ishow exactly it is placed
zoningSTRUCT(from_district VARCHAR, to_district VARCHAR)[]yesnestedfield by field (below)Decisions v2: a zoning change, from_district and to_district as printed.
zoning.from_districtnoneas iszoning before
zoning.to_districtnoneas iszoning after
relatedSTRUCT(relation VARCHAR, ref_number VARCHAR)[]yesnestedfield by field (below)Decisions v2: numbers of other measures the item amends or refers to (relation is always refers_to).
related.relationnoneas isamends, repeals, refers_to ...
related.ref_numbernoneas isthe other instrument number
datesSTRUCT(date VARCHAR, "role" VARCHAR)[]yesnestedfield by field (below)Decisions v2: dates that set or schedule the decision, with role (effective, continued_to, hearing, deadline, other).
dates.datenoneas isa date printed in the item
dates.rolenoneas iswhat the date is (hearing, effective ...)
topicsVARCHAR[]yesnoneas isDecisions v2: topics chosen by a model from a fixed list (housing, whats-being-built, parks, transit, ...).
cityVARCHARnosf, vannoneas issf or van.
privacy_flagVARCHARyesmay_name_private_person_after_1950noneas ismay_name_private_person_after_1950 on rows from 1952 on that have a quote.
decision_groupVARCHARyesnoneas isOne id per printed item (v0.6.1; see decisions.decision_group).
row_keyVARCHARnononeas is<run_id>/<page_id>/<seq>.

Not in the public copy: interest, significance, interest_why.

x_directory

x_directory

Extraction table: the San Francisco city directories of 1910, 1915, 1920, 1926, 1930, 1936, 1940 and 1945 (Crocker-Langley and Polk, archive.org scans from the San Francisco Public Library), one row per printed line that resolves to a San Francisco address or block today (1,940,521 of the 2,695,104 lines read; the others give no address in the city or did not resolve): the name, occupation and addresses as printed, read by claude-haiku-5-5 and resolved to today's EAS address and block (source-review run). The names are shown: the editions are more than 75 years old (the privacy rule withholds private names only for records under 75 years; Daniel 15/10). The 1936 edition is measured against a hand check; 1910-1926 are unmeasured.

columntypenullvalues / unitprivacypublic copymeaning
run_idVARCHARnocitydir-haiku55-2026-10noneas isThe run that read the pages (see runs).
page_idVARCHARnoe.g. polkscrockerlang1936dire:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/polkscrockerlang1936dire/page/n1noneas isOpens the page on archive.org.
row_keyVARCHARnoe.g. c:c4ca4238a0b923820dcc509a6f75849bnoneas isThe line's id in the source-review run (the id of its staged claim).
volumeVARCHARnononeas isThe archive.org identifier of the directory volume.
yearBIGINTno1850..2030noneas isThe edition year (1945 for the 1945-46 edition).
line_kindVARCHARyesresided, householder, boarded, roomed, businessnoneas isresided (r: resides), householder (h: householder) or business (a business listing or classified line).
name_printedVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe name as printed (Hunter Eliz), or the business name. Shown for these editions (over 75 years old); a row without a year would be withheld.
occupation_printedVARCHARyesfree_textnames of private people withheld under the embargoThe occupation as printed, with the employer abbreviation (elk SPCo).
trade_printedVARCHARyesfree_textnames of private people withheld under the embargoBusiness lines: the trade as printed (barber, gro).
address_printedVARCHARyesfree_textnames of private people withheld under the embargoThe address as printed (642 Oak).
markerVARCHARyesnoneas isThe printed residence marker (r, h, b ...).
spouse_noteVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe printed spouse or widow note (wid Jas).
business_typeVARCHARyesnoneas isBusiness lines: the kind of business in plain words (a cigar store).
classified_headingVARCHARyescatalogueas isThe classified-section heading the line is printed under, when it is one.
occupation_groupVARCHARyesnoneas isThe occupation group (clerks and office, building trades ...).
place_idVARCHARyese.g. qipu:sf/place/address/eas-1noneas isToday's EAS address (or block) the printed address resolves to.
block_todayVARCHARyesnoneas isThe assessor block the printed address falls in today.
exact_door_todayBOOLEANyesnoneas isTrue when the printed door number exists today.
quoteVARCHARyesraw_textnames of private people withheld under the embargoThe printed line as read (Hunter Eliz elk SPCo r 642 Oak).

x_dl_facts (150,446 rows)

Democracy's Library facts

Facts read from Democracy's Library documents about SF places (a model run on the pages of DL items: costs, units, dates, places), one row per fact.

columntypenullvalues / unitprivacypublic copymeaning
run_idVARCHARyesnoneas isThe DL facts run.
page_idVARCHARyese.g. journalofproceed30sanfrich:1noneas isThe archive.org page (<identifier>:<leafNum>). nopage:<seq> where the source gives no page number (sfbos rows without one): the row is kept, page_url is NULL.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed30sanfrich/page/n1noneas isOpens the page: archive.org BookReader link built from the leaf map (audited against IA's scandata), or <pdf url>#page=<n> for a PDF. NULL only where page_id is nopage:<seq>.
seqBIGINTyesnoneas isRow number inside the run.
row_keyVARCHARyesnoneas isStable row key.
item_idVARCHARyesnoneas isThe archive.org item.
doc_typeVARCHARyesnoneas isDocument type of the item (plan, report, EIR ...).
item_titleVARCHARyescatalogueas isThe item's catalogue title.
item_yearBIGINTyesnoneas isThe year of the item.
kindVARCHARyesnoneas isKind of fact.
subjectVARCHARyesfree_textnames of private people withheld under the embargoWhat the fact is about, as read.
propertyVARCHARyesnoneas isThe property read (cost, units, built ...).
value_textVARCHARyesfree_textnames of private people withheld under the embargoThe value as read.
value_numDOUBLEyesnoneas isThe value as a number.
unitVARCHARyesnoneas isUnit of value_num (USD, units, acres ...).
dateVARCHARyesnoneas isA date printed with the fact.
quoteVARCHARyesraw_textnames of private people withheld under the embargoShort quote of the page (raw text; names of private people withheld under the embargo).
place_textVARCHARyesfree_textnames of private people withheld under the embargoThe place as printed.
place_numberVARCHARyesnoneas isHouse number.
place_streetVARCHARyesnoneas isStreet.
place_cross_streetVARCHARyesnoneas isCross street.
place_blockVARCHARyesnoneas isAssessor block.
place_lotVARCHARyesnoneas isAssessor lot.
place_areaVARCHARyesfree_textnames of private people withheld under the embargoA named area.
place_precisionVARCHARyesnoneas isHow exactly the page places it.
place_idVARCHARyesnoneas isThe qipu place it was resolved to.
resolved_byVARCHARyesnoneas isHow it was resolved.
value_yearINTEGERyesnoneas isThe year the amount is in (for amount_2026).
amount_2026DOUBLEyesnoneas isvalue_num in 2026 dollars (CPI).
index_usedVARCHARyesnoneas isThe price index and years behind amount_2026.

x_dl_tags (1,131 rows)

Democracy's Library place tags

Extraction table: Democracy's Library (IGS) items about SF, with the neighbourhoods, streets and places each is about (claude-haiku-5-5 on metadata + first OCR, dl_tag.py).

columntypenullvalues / unitprivacypublic copymeaning
about_sfBOOLEANyesnoneas isTrue when the document is about San Francisco, chosen by a model from the catalogue record and the start of the OCR.
doc_typeVARCHARyesannual report, audit, city-owned property report, environmental impact report, minutes or proceedings, ordinance or legislation, other, plan, study or reportnoneas isDocument type (study or report, plan, environmental impact report, budget, ...), chosen by a model from the catalogue record and the start of the OCR.
scopeVARCHARyescitywide, neighbourhoods, not San Francisco, regional, sitenoneas iscitywide, neighbourhoods, site, regional or not San Francisco, chosen by a model from the catalogue record and the start of the OCR.
hoodsVARCHAR[]yesnoneas isNeighbourhoods (from the map's fixed list) the document is about, chosen by a model from the catalogue record and the start of the OCR.
streetsVARCHAR[]yesnoneas isStreets the document is about, chosen by a model from the catalogue record and the start of the OCR.
placesVARCHAR[]yesnoneas isNamed sites or facilities the document is about (at most 4), chosen by a model from the catalogue record and the start of the OCR.
evidenceVARCHARyesfree_textnames of private people withheld under the embargoShort quote (<= 160 characters) from the title or text showing what the document is about, picked by a model.
identifierVARCHARyesnoneas isarchive.org identifier of the document.
run_idVARCHARnodl-tags-haiku55-2026-10noneas isdl-tags-haiku55-2026-10 (see runs).
seqBIGINTyesnoneas isLine number of the row in the run's tags file.

x_enrich

x_enrich

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one row per Board decision read again by claude-haiku-5-5 for what decisions v2 did not carry (project, status, reason, emergency, sponsors, stages, zoning, other votes). The lists (money, land, permits, claims ...) are in the x_enrich_<field> tables, keyed by decision_id. Leaves of absence, memorials, condolences and commendations were not sent (counted in runs).

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
kindVARCHARyesnoneas isThe decision kind from decisions v2.
project_nameVARCHARyesfree_textnames of private people withheld under the embargoThe project the decision is part of, as named.
project_roleVARCHARyesproposal, study_or_plan, funding, land, design, contract, construction, completion, operation, cancellation, othernoneas isWhat the decision does for the project (closed list project role).
project_useVARCHARyesfree_textnames of private people withheld under the embargoWhat the project is for.
project_quoteVARCHARyesraw_textleft out for records under the embargoThe words that name the project; empty for records after 1951.
statusVARCHARyesproposed, approved, funded, under_construction, built, abandoned, rejected, not_applicablenoneas isThe project status the decision states.
reasonVARCHARyesfree_textnames of private people withheld under the embargoThe stated reason, in plain words.
reason_quoteVARCHARyesraw_textleft out for records under the embargoThe words that state the reason; empty for records after 1951.
emergencyBOOLEANyesnoneas isTrue when the decision is declared an emergency.
sponsorsVARCHAR[]yespublic_officialas isSupervisors who introduced the item.
committeeVARCHARyescatalogueas isThe committee that reported it.
effective_dateVARCHARyesnoneas isThe date it takes effect, as read.
stagesVARCHAR[]yesnoneas isLegislative stages read (closed list stage).
bounded_byVARCHAR[]yesnoneas isThe streets that bound the area, as read.
zoning_height_fromVARCHARyesnoneas isZoning: height from, as read.
zoning_height_toVARCHARyesnoneas isZoning: height to, as read.
zoning_conditional_useVARCHARyesfree_textnames of private people withheld under the embargoZoning: conditional use, as read.
zoning_appeal_of_bodyVARCHARyesnoneas isZoning: appeal of body, as read.
zoning_appeal_of_numberVARCHARyesnoneas isZoning: appeal of number, as read.
zoning_appeal_of_decisionVARCHARyesnoneas isZoning: appeal of decision, as read.
zoning_proposed_useVARCHARyesfree_textnames of private people withheld under the embargoZoning: proposed use, as read.
excused_namesVARCHAR[]yespublic_officialas isSupervisors excused from voting.
committee_dissent_namesVARCHAR[]yespublic_officialas isCommittee members who dissented.
other_votesVARCHARyesfree_textnames of private people withheld under the embargoOther votes on the item (JSON text: motion, result, ayes, noes).
emptyBOOLEANyesnoneas isTrue when the model found nothing to add for the decision.

x_enrich_agreements

x_enrich_agreements

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one contract, lease, concession, franchise or other agreement, with its counterparty and amount. One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
kindVARCHARyescontract, lease, concession, franchise, labour_mou, joint_agreement, easement, grant_agreement, othernoneas isKind (closed list agreement kind; an out-of-list reading is other, its text in kind_raw).
counterpartyVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe counterparty as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
counterparty_kindVARCHARyesperson, organisation, government, unknownnoneas isCounterparty kind (closed list party kind; an out-of-list reading is other, its text in counterparty_kind_raw).
subjectVARCHARyesfree_textnames of private people withheld under the embargoSubject, as read (private names of records under 75 years are withheld).
term_startVARCHARyesnoneas isTerm start, as read.
term_endVARCHARyesnoneas isTerm end, as read.
amountDOUBLEyesnoneas isAmount, as a number.
amount_basisVARCHARyestotal, per_year, per_month, pct_gross, not_to_exceednoneas isAmount basis (closed list amount basis; an out-of-list reading is other, its text in amount_basis_raw).
minimumDOUBLEyesnoneas isMinimum, as a number.
payment_stageVARCHARyesfree_textnames of private people withheld under the embargoPayment stage, as read (private names of records under 75 years are withheld).
kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for kind when it was not on the list.
counterparty_kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for counterparty_kind when it was not on the list.
amount_basis_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for amount_basis when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_appointments

x_enrich_appointments

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one appointment to a public body or office (officials, named in their role). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
personVARCHARyespublic_officialas isThe person as printed: appointments to a public body or office are officials, named in the role (Daniel 14/10).
bodyVARCHARyescatalogueas isBody, as read.
positionVARCHARyesfree_textnames of private people withheld under the embargoPosition, as read (private names of records under 75 years are withheld).
seatVARCHARyesnoneas isSeat, as read.
appointed_byVARCHARyespublic_officialas isThe appointed by as printed: appointments to a public body or office are officials, named in the role (Daniel 14/10).
term_startVARCHARyesnoneas isTerm start, as read.
term_endVARCHARyesnoneas isTerm end, as read.
replacesVARCHARyespublic_officialas isThe replaces as printed: appointments to a public body or office are officials, named in the role (Daniel 14/10).
vacancy_reasonVARCHARyesfree_textnames of private people withheld under the embargoVacancy reason, as read (private names of records under 75 years are withheld).
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_assessments

x_enrich_assessments

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one assessment levied, cancelled, refunded or reduced on a block and lot. One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
blockVARCHARyescatalogueas isBlock, as read.
lotVARCHARyescatalogueas isLot, as read.
ownerVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe owner as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
owner_kindVARCHARyesperson, organisation, government, unknownnoneas isOwner kind (closed list party kind; an out-of-list reading is other, its text in owner_kind_raw).
land_valueDOUBLEyesnoneas isLand value, as a number.
improvement_valueDOUBLEyesnoneas isImprovement value, as a number.
fiscal_yearVARCHARyesnoneas isFiscal year, as read.
actionVARCHARyeslevy, cancel, refund, reduce, confirm, denynoneas isAction (closed list assessment action; an out-of-list reading is other, its text in action_raw).
reasonVARCHARyesfree_textnames of private people withheld under the embargoReason, as read (private names of records under 75 years are withheld).
owner_kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for owner_kind when it was not on the list.
action_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for action when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_board_positions

x_enrich_board_positions

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one position the Board took on a bill, ballot measure or other agency's action. One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
target_kindVARCHARyesstate_bill, federal_bill, ballot_measure, agency_action, othernoneas isTarget kind (closed list board target; an out-of-list reading is other, its text in target_kind_raw).
targetVARCHARyesfree_textnames of private people withheld under the embargoTarget, as read (private names of records under 75 years are withheld).
stanceVARCHARyessupport, oppose, urge, request, ballot_argument_for, ballot_argument_againstnoneas isStance (closed list board stance; an out-of-list reading is other, its text in stance_raw).
target_kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for target_kind when it was not on the list.
stance_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for stance when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_citations

x_enrich_citations

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one other law, report or case the decision cites, and how it relates (amends, repeals, pursuant to ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearVARCHARyesnoneas isYear, as read.
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
kindVARCHARyesresolution, ordinance, bill, motion, file, bond_issue, charter_section, report, eir, contract, proposition, planning_commission_resolution ...noneas isKind (closed list citation kind; an out-of-list reading is other, its text in kind_raw).
numberVARCHARyescatalogueas isNumber, as read.
textVARCHARyesfree_textnames of private people withheld under the embargoText, as read (private names of records under 75 years are withheld).
relationVARCHARyesamends, repeals, pursuant_to, funded_by, supersedes, rescinds, terminates, adopts_or_accepts, refers_tononeas isRelation (closed list relation; an out-of-list reading is other, its text in relation_raw).
kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for kind when it was not on the list.
relation_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for relation when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_claims

x_enrich_claims

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one claim for or against the city (who, why as a category, amounts claimed and paid). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
claimantVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe claimant as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
claimant_kindVARCHARyesperson, organisation, government, unknownnoneas isClaimant kind (closed list party kind; an out-of-list reading is other, its text in claimant_kind_raw).
directionVARCHARyescity_pays, city_receivesnoneas isDirection (closed list claim direction; an out-of-list reading is other, its text in direction_raw).
causeVARCHARyessidewalk_or_street_defect, vehicle_collision, transit_accident, other_personal_injury, property_damage, public_works_damage, tax_refund, fee_or_deposit_refund, contract_dispute, wages_or_back_pay, police_or_jail, land_or_title ...noneas isCause (closed list claim cause; an out-of-list reading is other, its text in cause_raw).
courtVARCHARyescatalogueas isCourt, as read.
case_numberVARCHARyescatalogueas isCase number, as read.
incident_dateVARCHARyesnoneas isIncident date, as read.
amount_claimedDOUBLEyesnoneas isAmount claimed, as a number.
amount_paidDOUBLEyesnoneas isAmount paid, as a number.
claimant_kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for claimant_kind when it was not on the list.
direction_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for direction when it was not on the list.
cause_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for cause when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_conditions

x_enrich_conditions

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one condition attached to a decision (bond, hours, time limit ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
typeVARCHARyesbond, hours, time_limit, supervision, use_restriction, payment, title, demolition, othernoneas isType (closed list condition type; an out-of-list reading is other, its text in type_raw).
textVARCHARyesfree_textnames of private people withheld under the embargoText, as read (private names of records under 75 years are withheld).
amountDOUBLEyesnoneas isAmount, as a number.
untilVARCHARyesnoneas isUntil, as read.
type_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for type when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_districts

x_enrich_districts

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one district created, extended, amended or repealed (assessment, special use, underground ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
kindVARCHARyesunderground_district, special_use_district, interim_controls, moratorium, permit_parking_area, redevelopment_area, assessment_district, fire_limits, historic_district, zoning_district, business_improvement_district, othernoneas isKind (closed list district kind; an out-of-list reading is other, its text in kind_raw).
name_or_numberVARCHARyescatalogueas isName or number, as read.
actionVARCHARyescreate, extend, amend, repealnoneas isAction (closed list district action; an out-of-list reading is other, its text in action_raw).
untilVARCHARyesnoneas isUntil, as read.
kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for kind when it was not on the list.
action_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for action when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_institution_events

x_enrich_institution_events

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one event of a school, hospital, firehouse, park, library ... (opened, closed, moved, built ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
institutionVARCHARyescatalogueas isInstitution, as read.
typeVARCHARyesschool, hospital, firehouse, police_station, park_or_playground, library, museum_or_hall, jail, othernoneas isType (closed list institution type; an out-of-list reading is other, its text in type_raw).
eventVARCHARyesopened, closed, moved, renamed, expanded, built, acquired, demolished, othernoneas isEvent (closed list institution event; an out-of-list reading is other, its text in event_raw).
place_textVARCHARyesfree_textnames of private people withheld under the embargoPlace text, as read (private names of records under 75 years are withheld).
type_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for type when it was not on the list.
event_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for event when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_land

x_enrich_land

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one land transaction (purchase, sale, lease, easement, condemnation ...) with its counterparty and price. One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
typeVARCHARyespurchase, sale, lease, easement, condemnation, transfer, gift, exchange, release, othernoneas isType (closed list land type; an out-of-list reading is other, its text in type_raw).
place_textVARCHARyesfree_textnames of private people withheld under the embargoPlace text, as read (private names of records under 75 years are withheld).
blockVARCHARyescatalogueas isBlock, as read.
lotVARCHARyescatalogueas isLot, as read.
counterpartyVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe counterparty as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
counterparty_kindVARCHARyesperson, organisation, government, unknownnoneas isCounterparty kind (closed list party kind; an out-of-list reading is other, its text in counterparty_kind_raw).
priceDOUBLEyesnoneas isPrice, as a number.
appraised_valueDOUBLEyesnoneas isAppraised value, as a number.
areaVARCHARyesnoneas isArea, as read.
purposeVARCHARyesfree_textnames of private people withheld under the embargoPurpose, as read (private names of records under 75 years are withheld).
type_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for type when it was not on the list.
counterparty_kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for counterparty_kind when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_money

x_enrich_money

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one amount of money the decision names, with its role (who pays whom, what for). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
amountDOUBLEyesnoneas isAmount, as a number.
roleVARCHARyesappropriation, reserve, contribution_or_gift, repayment_or_refund, land_purchase, land_sale, bond_issue, contract_award, salary, total_project_cost, fine_or_fee, claim_settlement ...noneas isRole (closed list money role; an out-of-list reading is other, its text in role_raw).
payerVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe payer as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
payeeVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe payee as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
fundVARCHARyesfree_textnames of private people withheld under the embargoFund, as read (private names of records under 75 years are withheld).
fiscal_yearVARCHARyesnoneas isFiscal year, as read.
payment_stageVARCHARyesprogress_n, final, advance, retroactivenoneas isPayment stage (closed list payment stage; an out-of-list reading is other, its text in payment_stage_raw).
programVARCHARyesfree_textnames of private people withheld under the embargoProgram, as read (private names of records under 75 years are withheld).
role_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for role when it was not on the list.
payment_stage_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for payment_stage when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_organisations

x_enrich_organisations

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one company, union, group or public body the decision names, and its role (bidder, grantee ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
nameVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe name as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
typeVARCHARyescompany, contractor, union, community_group, nonprofit, church, other_government, utility, bank_or_title_company, city_body, othernoneas isType (closed list org type; an out-of-list reading is other, its text in type_raw).
roleVARCHARyesbidder, contract_awarded, petitioner, protester, applicant, grantee, seller, buyer, lessee, lessor, payee, payer ...noneas isRole (closed list org role; an out-of-list reading is other, its text in role_raw).
bid_amountDOUBLEyesnoneas isBid amount, as a number.
type_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for type when it was not on the list.
role_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for role when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_permits

x_enrich_permits

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one permit granted, denied, revoked or transferred (garage, oil tank, liquor, sign ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
permit_typeVARCHARyesoil_tank, boiler_or_engine, stable, garage, laundry, spur_track, pipe_line, blasting, parking_station, taxicab, sidewalk_occupancy, liquor ...noneas isPermit type (closed list permit type; an out-of-list reading is other, its text in permit_type_raw).
decisionVARCHARyesgranted, denied, revoked, transferred, renewed, othernoneas isDecision (closed list permit decision; an out-of-list reading is other, its text in decision_raw).
holderVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe holder as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
holder_kindVARCHARyesperson, organisation, government, unknownnoneas isHolder kind (closed list party kind; an out-of-list reading is other, its text in holder_kind_raw).
business_nameVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe business name as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
place_textVARCHARyesfree_textnames of private people withheld under the embargoPlace text, as read (private names of records under 75 years are withheld).
useVARCHARyesfree_textnames of private people withheld under the embargoUse, as read (private names of records under 75 years are withheld).
capacityDOUBLEyesnoneas isCapacity, as a number.
capacity_unitVARCHARyesnoneas isCapacity unit, as read.
revocableBOOLEANyesnoneas isTrue when the permit is revocable.
from_holderVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe from holder as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
permit_type_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for permit_type when it was not on the list.
decision_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for decision when it was not on the list.
holder_kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for holder_kind when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_place_events

x_enrich_place_events

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one street or place event (opened, graded, paved, widened, renamed, vacated, landmark designated ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
eventVARCHARyesopened, graded, grade_established, paved, widened, sidewalk_width_set, extended, renamed, closed_or_vacated, sewered, lighted, undergrounded ...noneas isEvent (closed list place event; an out-of-list reading is other, its text in event_raw).
place_textVARCHARyesfree_textnames of private people withheld under the embargoPlace text, as read (private names of records under 75 years are withheld).
from_streetVARCHARyesnoneas isFrom street, as read.
to_streetVARCHARyesnoneas isTo street, as read.
old_nameVARCHARyesnoneas isOld name, as read.
new_nameVARCHARyesnoneas isNew name, as read.
named_afterVARCHARyesfree_textnames of private people withheld under the embargoNamed after, as read (private names of records under 75 years are withheld).
landmark_numberVARCHARyescatalogueas isLandmark number, as read.
width_ftDOUBLEyesnoneas isWidth ft, as a number.
materialVARCHARyesfree_textnames of private people withheld under the embargoMaterial, as read (private names of records under 75 years are withheld).
contractorVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe contractor as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
event_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for event when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_positions

x_enrich_positions

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one city position created, abolished or re-rated, with its pay rate. One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
titleVARCHARyescatalogueas isTitle, as read.
class_codeVARCHARyescatalogueas isClass code, as read.
countDOUBLEyesnoneas isCount, as a number.
rateDOUBLEyesnoneas isRate, as a number.
rate_unitVARCHARyeshour, day, week, month, yearnoneas isRate unit (closed list rate unit; an out-of-list reading is other, its text in rate_unit_raw).
actionVARCHARyescreate, abolish, change, reclassifynoneas isAction (closed list position action; an out-of-list reading is other, its text in action_raw).
departmentVARCHARyescatalogueas isDepartment, as read.
rate_unit_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for rate_unit when it was not on the list.
action_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for action when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_quantities

x_enrich_quantities

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one measured quantity the decision states (capacity, units, stories, width ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
measureVARCHARyescapacity, power, count, area, length, width, height, depth, elevation, setback, units, stories ...noneas isMeasure (closed list quantity measure; an out-of-list reading is other, its text in measure_raw).
valueDOUBLEyesnoneas isValue, as a number.
unitVARCHARyesnoneas isUnit, as read.
ofVARCHARyesfree_textnames of private people withheld under the embargoOf, as read (private names of records under 75 years are withheld).
old_valueDOUBLEyesnoneas isOld value, as a number.
measure_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for measure when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_rates

x_enrich_rates

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one rate, fare, fee or tax the decision sets. One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
kindVARCHARyesfare, fee, tax, charge, interest, pct_gross, othernoneas isKind (closed list rate kind; an out-of-list reading is other, its text in kind_raw).
valueDOUBLEyesnoneas isValue, as a number.
unitVARCHARyesnoneas isUnit, as read.
perVARCHARyesnoneas isPer, as read.
old_valueDOUBLEyesnoneas isOld value, as a number.
applies_toVARCHARyesfree_textnames of private people withheld under the embargoApplies to, as read (private names of records under 75 years are withheld).
kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for kind when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_stances

x_enrich_stances

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one person or group who spoke, petitioned or protested, and their stance. One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
whoVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe who as printed. Organisations and governments are shown; a private person is withheld for 75 years after the record (the row's privacy_class and public_after_year).
who_kindVARCHARyesprivate_person, public_official, organisationnoneas isWho kind (closed list who kind; an out-of-list reading is other, its text in who_kind_raw).
affiliationVARCHARyesfree_textnames of private people withheld under the embargoAffiliation, as read (private names of records under 75 years are withheld).
stanceVARCHARyesfor, against, neutralnoneas isStance (closed list stance; an out-of-list reading is other, its text in stance_raw).
formVARCHARyesspoke, petition, protest, letternoneas isForm (closed list input form; an out-of-list reading is other, its text in form_raw).
countDOUBLEyesnoneas isCount, as a number.
who_kind_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for who_kind when it was not on the list.
stance_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for stance when it was not on the list.
form_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for form when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_enrich_traffic_rules

x_enrich_traffic_rules

Extraction table (enrichment v1.1, sf-enrich-v11-haiku55-2026-10): one traffic rule established or rescinded (stop sign, one way, parking limit ...). One row per item read from one Board decision by claude-haiku-5-5 (decisions v2 rows, 1906-2016). Unverified until checked: see field_scores and claim_reliability.

columntypenullvalues / unitprivacypublic copymeaning
decision_idVARCHARnoe.g. qipu:sf/decision/journalofproceed1917sanfrich:1/1noneas isThe decision read (see decisions).
page_idVARCHARnoe.g. journalofproceed1917sanfrich:1noneas isThe page: <archive.org identifier>:<leaf>.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed1917sanfrich/page/n1noneas isOpens the page on archive.org.
source_idVARCHARnononeas isThe archive.org item.
yearBIGINTyes1850..2030noneas isThe year of the decision (the privacy rule counts from it).
run_idVARCHARnosf-enrich-v11-haiku55-2026-10noneas isThe run that read the decision (see runs).
item_nBIGINTnononeas isThe item's place in the decision's list (0, 1 ...).
ruleVARCHARyesstop_sign, yield, one_way, parking_time_limit, no_parking, no_stopping, tow_away, turn_restriction, u_turn_prohibited, turn_lane, permit_parking_area, signal ...noneas isRule (closed list traffic rule; an out-of-list reading is other, its text in rule_raw).
actionVARCHARyesestablish, rescind, trialnoneas isAction (closed list traffic action; an out-of-list reading is other, its text in action_raw).
place_textVARCHARyesfree_textnames of private people withheld under the embargoPlace text, as read (private names of records under 75 years are withheld).
from_streetVARCHARyesnoneas isFrom street, as read.
to_streetVARCHARyesnoneas isTo street, as read.
sideVARCHARyesnoneas isSide, as read.
hoursVARCHARyesnoneas isHours, as read.
daysVARCHARyesnoneas isDays, as read.
limit_minutesDOUBLEyesnoneas isLimit minutes, as a number.
directionVARCHARyesnoneas isDirection, as read.
rule_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for rule when it was not on the list.
action_rawVARCHARyesfree_textnames of private people withheld under the embargoThe model's own word for action when it was not on the list.
quoteVARCHARyesraw_textleft out for records under the embargoThe words on the page that support the item (<= 300 characters); empty for records after 1951.
privacy_classVARCHARyesnone, organisation, public_official, private_person, unknownnoneas isWho the item names: private_person, organisation, public_official, unknown (a payee) or none.
public_after_yearDOUBLEyesnoneas isFor private_person items: the year the name becomes public (year + 75).
quote_foundBOOLEANyesnoneas isTrue when the quote was found in the page text (OCR); empty when the quote is too short to test.

x_mentions (915 rows)

Mentions

Democracy's Library items and the neighbourhoods and streets they mention (one row per mention; from the DL place tags, x_dl_tags).

columntypenullvalues / unitprivacypublic copymeaning
run_idVARCHARnodl-tags-haiku55-2026-10noneas isthe tagging run
document_idVARCHARnononeas isia:<identifier> of the item
seqBIGINTyesnoneas isthe tag row
mention_textVARCHARyesfree_textnames of private people withheld under the embargothe neighbourhood or street as tagged
mention_kindVARCHARnohood, streetnoneas ishood or street
doc_typeVARCHARyesannual report, city-owned property report, environmental impact report, minutes or proceedings, ordinance or legislation, other, plan, study or reportnoneas isthe item's document type and scope (citywide, neighbourhood ...)
scopeVARCHARyescitywide, neighbourhoods, regional, sitenoneas isthe item's document type and scope (citywide, neighbourhood ...)

x_permits_block (28,708 rows)

Building permits by block

One assessor block and one kind of building permit (DataSF i98e-djp9, PDDL), filed 1982-2026: distinct permit numbers and the first year of that kind. kind=all is every permit. Not from the Internet Archive (DataSF open data, PDDL).

columntypenullvalues / unitprivacypublic copymeaning
blockVARCHARyesnoneas isAssessor block.
kindVARCHARnoadu, all, change_use, fire, kitchen_bath, more_units, reroof, seismic, sign, soft_story, solarnoneas isall, reroof, kitchen_bath, solar, soft_story, seismic, adu, more_units, fire, sign, change_use (keyword and field rules in permits_blocks.py).
permitsBIGINTyesnoneas isDistinct permit numbers filed since 1982.
first_yearBIGINTyesnoneas isYear the first permit of that kind was filed.

x_realprop_dir (276,599 rows)

Assessor real-property directory

Extraction table: the Andrews Real Property Directory of San Francisco, 1943 and 1949 editions (archive.org scans), one row per printed address line: street, number, assessor block and lot, and the owners as printed (read by claude-sonnet-5-5 from page tiles; source-review run). The owners are shown: the editions are more than 75 years old (the privacy rule withholds names only for records under 75 years).

columntypenullvalues / unitprivacypublic copymeaning
run_idVARCHARnoandrews-sonnet55-2026-10noneas isThe run that read the pages (see runs).
page_idVARCHARnoe.g. andrewsrealprope1943andr:1noneas isThe page: <archive.org identifier>:<leaf>.
tileVARCHARyesx0y0, x0y1, x1y0, x1y1noneas isWhich quarter of the page image the line was read from (x0y0 top left ...).
seqVARCHARyesnoneas isThe line inside its tile (<tile>/<n>).
street_headerVARCHARyesnoneas isThe street heading the line is printed under.
addr_numberVARCHARyesnoneas isThe house number as printed.
blockVARCHARyesnoneas isThe assessor block as printed.
lotVARCHARyesnoneas isThe assessor lot as printed.
ownersVARCHARyesperson_nameshown for officials and organisations; a private person is withheld under the embargoThe owners as printed (Curtis, Emma R). Shown for these editions (over 75 years old); a row without a year would be withheld.
editionBIGINTyes1850..2030noneas isThe edition of the directory.
yearBIGINTyes1850..2030noneas isThe year the directory states (its edition year).
row_keyVARCHARnononeas is<run_id>/<page_id>/<seq>.
page_urlVARCHARyese.g. https://archive.org/details/andrewsrealprope1943andr/page/n1noneas isOpens the page on archive.org.

x_roll_call_votes (2,084,507 rows)

Votes in printed roll calls

One row per name in a roll call: the vote, the name as printed, the person it was matched to and how (surname, surname+given, fuzzy, fuzzy_low, surname_widened, journal_only, or ambiguous/unmatched with no person).

columntypenullvalues / unitprivacypublic copymeaning
rollcall_idVARCHARnononeas isThe roll call (see x_roll_calls).
voteVARCHARnoaye, no, absent, excused, not_votingnoneas isaye, no, absent, excused or not_voting.
name_printedVARCHARyespublic_officialas isThe name as printed in the roll call.
person_idVARCHARyesnoneas isThe supervisor the name was matched to (see persons); empty when unmatched or ambiguous.
matchVARCHARyesambiguous, fuzzy, fuzzy+given, fuzzy_low, journal_only, surname, surname+given, surname_widened, unmatchednoneas isHow the name was matched: surname, surname+given, fuzzy, fuzzy+given, fuzzy_low, surname_widened, journal_only, ambiguous, unmatched.

x_roll_calls (171,123 rows)

Printed roll calls

Every printed roll call ("Adopted by the following vote: Ayes: Supervisors ... Noes: ... Absent: ...") found in the Journal text, 1906-1999.

columntypenullvalues / unitprivacypublic copymeaning
rollcall_idVARCHARnononeas isId of the roll call: hash of the item id and the roll call's position in the item.
item_idVARCHARnononeas isThe Board item the roll call is printed in (<volume>\|<n>, re-swept <volume>\|g<n>); its decision is qipu:sf/decision/<item_id>.
corpusVARCHARyesbos_corpus, resweep_d1900, resweep_d1910, resweep_d1911, resweep_d1920, resweep_d1930, resweep_d1940, resweep_d1950, resweep_d1960, resweep_d1970, resweep_d1980, resweep_d1990 ...noneas isWhere the item text came from: bos_corpus (the 2026-09 corpus) or resweep_d<decade> (re-swept items).
page_idVARCHARnoe.g. journalofproceed30sanfrich:1noneas isThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document. nopage:<seq> where the source gives no page number (sfbos rows without one): the row is kept, page_url is NULL.
page_urlVARCHARyese.g. https://archive.org/details/journalofproceed30sanfrich/page/n1noneas isOpens the page: archive.org BookReader link built from the leaf map (audited against IA's scandata), or <pdf url>#page=<n> for a PDF. NULL only where page_id is nopage:<seq>.
source_idVARCHARnononeas isarchive.org identifier of the Journal volume.
leafBIGINTyesnoneas isarchive.org BookReader page index (the n in /page/n<k>).
hocr_leafBIGINTyesnoneas isPage index in the OCR (before the leaf map).
page_exactBOOLEANyesnoneas isTrue when the archive.org page number was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
yearBIGINTyesnoneas isYear of the Journal volume.
dateDATEyesnoneas isMeeting date, where the corpus gives one within a year of the volume's year.
outcome_textVARCHARyesfree_textnames of private people withheld under the embargoThe printed outcome phrase before "by the following vote" (Adopted, Finally passed, ...), up to 120 characters.
outcomeVARCHARyesfailed, passed, unknownnoneas ispassed, failed or unknown, from the words in outcome_text.
ayes_nBIGINTyesnoneas isCount as printed.
noes_nBIGINTyesnoneas isNoes count as printed.
absent_nBIGINTyesnoneas isAbsent count as printed.
ayes_parsedBIGINTyesnoneas isNames parsed.
noes_parsedBIGINTyesnoneas isNames parsed after Noes.
absent_parsedBIGINTyesnoneas isNames parsed after Absent or Excused.
read_fromVARCHARyesnoneas isv0.6.1: page_text (re-read from the Journal page text, across page breaks, with "No:" single dissents) or item_text (the item-based parse kept).
duplicate_ofVARCHARyesnoneas isv0.6.1: the rollcall_id of the same printed roll call read from another item (a corpus item and a re-swept one); its votes are not counted twice.
counts_matchBOOLEANyesnoneas isTrue when every printed count equals the names parsed (94% of roll calls).
numbersVARCHAR[][]yesnoneas isResolution / Ordinance / File / Bill numbers printed in the item: [kind, number, series year].
contextVARCHARyesraw_textleft out for records under the embargoUp to 300 characters of item text before the roll call. Empty (withheld in the public files for records under the privacy embargo (75 years in SF, 92 in Vancouver)).
quoteVARCHARyesraw_textleft out for records under the embargoThe roll call as printed, from 60 characters before it (<= 600 characters). Names supervisors, who are public officials. Not published for records under the embargo: the quoted lines carry the item text ("Submitted by ..."), not only the roll.
run_idVARCHARnorollcall-parser-v1noneas isrollcall-parser-v1 (see runs).

x_site_rows (62,917 rows)

Map decision rows

The map's decision rows (citywide decades, street layer) with the item they come from (linked_item).

columntypenullvalues / unitprivacypublic copymeaning
site_idVARCHARnononeas isThe map's row id: su:<hash of the item id> for Board items, sd:... for others.
decision_idVARCHARnononeas isThe decision the row shows (see decisions).
linked_itemVARCHARyesnoneas isThe Board item (<volume>\|<n>) the row was matched to; empty when none.
originsVARCHAR[]yesnoneas isThe map files the row appears in (street_decisions/sd, citywide/decade-1970-routine.json, ...).
plainVARCHARyesfree_textnames of private people withheld under the embargoThe map's one-line summary, written by a model (claude-haiku-5-5), after accuracy fixes. Person-like names are withheld for records under the 75-year privacy filter (92 years in Vancouver).
yearBIGINTyesnoneas isYear of the decision.
dateVARCHARyesnoneas isDate of the decision (YYYY-MM-DD) where known.
outcomeVARCHARyesapproved by voters, passed, refused, rejected, rejected by voters, vetoednoneas ispassed, rejected, refused, vetoed, ... as on the map.
topicVARCHARyesadmin, appeals, budget, elections, health, housing, landmarks, names, other, permits, property, redevelopment ...noneas isTopic as on the map (admin, budget, property, housing, ...).
placeVARCHARyesfree_textnames of private people withheld under the embargoThe place as written on the map. Person-like names are withheld for records under the 75-year privacy filter (92 years in Vancouver).
srcVARCHARyesnoneas isSource link as the map gives it.
src_mappedVARCHARyesnoneas isSource link pointed at the item's exact archive.org page with the leaf map where the item is known; else src.
blocksVARCHAR[]yesnoneas isAssessor blocks the map files the row under.
streetsVARCHAR[]yesnoneas isStreets the map files the row under (NAME\|TYPE).
hoodsVARCHAR[]yesnoneas isNeighbourhoods the map files the row under.

Not in the public copy: significance, hidden, importance, importance_why.

xref (1,320,115 rows)

Outside identifiers

Crosswalk: one row per outside id of a qipu record, so the people who use those ids can reach qipu (Planning and the Assessor by block and lot, DataSF by EAS id, the Clerk by ordinance number, Wikidata by QID, the Internet Archive by item, page and IIIF canvas, census tables by tract). Built by qipu_data/xref.py from the release's own tables; it adds no qipu ids. The schemes are a closed list (legistar_file and legistar_matter are reserved for a later release).

columntypenullvalues / unitprivacypublic copymeaning
qipu_idVARCHARnononeas isThe qipu record: a place, person, instrument, archive.org source (its identifier) or page (<identifier>:<leaf>).
schemeVARCHARnoia_item, ia_page, ia_display_n, iiif_canvas, blklot, eas, wikidata, enactment, census_tract_1990, census_tract_2000, census_tract_2010, census_tract_2020 ...noneas isia_item (archive.org identifier), ia_page (hOCR page index, 0-based), ia_display_n (the n of archive.org /page/n<n>), iiif_canvas (IA's IIIF v3 canvas id), blklot (Assessor block and lot, 0847019), eas (DataSF EAS base address id), wikidata (QID), enactment (Ord. 338-75, Res. 273-64; series forms Ord. 8727 (N.S.), Res. 15288 (Series of 1939)), census_tract_<map year> (6-digit tract code), analysis_nbhd (DataSF Analysis Neighborhood), sup_district_2022 (reserved), lpf (the Linked Places / World Historical Gazetteer @id).
valueVARCHARnononeas isThe outside id.
valid_fromVARCHARyesnoneas isWhen the id starts to apply, where known (the year of an ordinance or resolution).
valid_toVARCHARyesnoneas isWhen the id stops applying, where known.
sourceVARCHARyescatalogueas isWhere the outside id comes from.
methodVARCHARyesnoneas isHow the row was made (iiif_manifest = read from the item's cached IIIF manifest; bookreader_n = the manifest's canvas id form for the BookReader page; number printed, year assumed from the Journal volume ...).
confidenceDOUBLEyes0..1noneas is1 when the id is read or printed as is; lower when part of it is inferred (the method says which part).

Kept local, not published

name_mentions: Every name as printed in a vote, a party list or an owner field, with its privacy class. The raw name index: kept local, never published., x_institution_gazetteer: Extraction table (not published: an unreviewed v0.6 seed): the gazetteer of San Francisco institutions (museums, stadiums, hospitals, schools, churches, police stations ...) used to recognise institutions named in the records and to place them (27_source_review.py). Two runs: Wikidata items (inst-gazetteer-v1-2026-10, with a Wikidata id and a point) and the institution lists of the Polk-Crocker city directories (inst-dirlists-v1-2026-10, with the directory line they were read from).

The public SQLite copy (qipu_sf.db)

Built from the public Parquet tables above; ready-joined tables for the explorer.

address_resolution (805,748 rows) (qipu_sf.db (table))

Raw "<number> <street>" texts seen in claims, resolved exactly to today's EAS address. Only exact, unique matches in v1.

columnprivacymeaning
raw_textfree_textA <number> <street> place text as printed in a claim.
yearnoneYear of the claim.
place_idnoneToday's EAS address it matched (see places).
precisionnoneaddress on every row.
methodnoneexact on every row: number and street matched exactly one DataSF EAS address.
confidencenone1.0 on every row.
run_idnoneaddress-exact-v1 (see runs).

block_points (5,102 rows) (qipu_sf.db (table))

One point per assessor block (the map's block index), for fast lookups.

columnprivacymeaning
blocknoneassessor block number
latnonea point inside the block
lonnonea point inside the block
hood_idnonethe neighbourhood place id

claims (5,657,289 rows) (qipu_sf.db (table))

The core table: one small statement per row, the same shape for every source (DATA_ARCHITECTURE.md 7.4).

columnprivacymeaning
claim_idnoneStable id: c: + 32 hex (128 bits, hashed from the slot: subject, property, object, page, role); votes v:<rollcall_id>:<n>.
subject_idnoneWhat the statement is about: a decision (qipu:sf/decision/...), a place, a person (qipu:sf/person/...) or an archive item (ia:<identifier>).
subject_labelfree_textReadable label of the subject.
propertynoneControlled list: outcome, voted, concerns_place, built, depicted_in, recorded_at, happened_at, ballot_result.
property_detailnoneThe source file's own name for the statement (e.g. sanborn_map_shows, voted_aye, timeline_moment).
object_idnoneThe other entity, when there is one (the decision a supervisor voted on; the place an archive item concerns).
value_numnoneNumeric value (e.g. the year built from the assessor roll).
value_textfree_textText value: the outcome, the vote (yes/no/absent/excused), the line as written.
t_fromnoneWhen: YYYY-MM-DD, YYYY-MM or YYYY.
t_precisionnoneday, month or year.
place_idnoneWhere (a qipu place id; qipu:sf/place/city for citywide).
place_labelfree_textThe place as written in the source.
place_precisionnoneHow exactly the source places it: address, parcel, corner, segment, street, block, stated, named place, hood, city.
page_idnoneThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document.
source_idnoneThe source: an archive.org identifier, or web:<url> for other sources.
linknoneOpens the source: the archive.org page for scans, else the source URL.
source_labelfree_textReadable source name.
licencenoneThe source's licence where the source file states it.
place_rolenoneHow the claim relates to its place: at, along (a street), near (see qualifiers.distance_m) or about (a document about the place).
quoteraw_textShort quote of the source (<= 300 characters). See privacy_flag.
extraction_tablenoneWhich table or file the statement came from (bos_records, resweep, x_roll_calls, map_blocks, site_decisions, ...).
run_idnoneThe extraction run (see runs).
confidencenone0-1 where a run gives one (votes: 0.95 when the printed counts match the names).
statusnoneextracted (machine-read), record (from an official register: assessor, DataSF), curated (written or checked by qipu for the map). No verified rows yet.
topicnoneTopic label from the run.
outcomenoneDecision outcome where known.
rights_notecatalogueWhat a reuser must know about the source's rights, in words (archive.org search hits, or a licence text longer than 80 characters moved here from licence).
collection_groupnoneFor archive.org search hits (showcase_search): the group of the item's collection (Books and texts, Films and video, TV News Archive, ...).

decisions (718,093 rows) (qipu_sf.db (table))

One row per thing the Board of Supervisors (SF) or City Council (Vancouver) did: an item in the Journal or minutes, a re-swept item, a hand-built decision, or a map/site row with no item behind it. Decisions v2 readings attach to the same row.

columnprivacymeaning
decision_idnoneqipu:sf/decision/<item id>: corpus items <volume>\|<n>, re-swept items <volume>\|g<n>, hand-built hand:<slug>, map/site-only rows map:..., su:..., sd:....
decision_groupnoneOne id per printed item (v0.6.1): rows of several passes over the same item share it; count distinct decision_group for "how many decisions".
originnonebos_corpus, resweep, map_blocks, site, hand.
citynonesf or van.
same_asnoneAudit: the id this row was merged from (decisions v2 attached to v1).
outcome_fromnoneWhere outcome_best came from (site, run, roll call ...).
yearnoneThe year of the meeting.
datenoneThe meeting date (YYYY-MM-DD) when known.
kindnoneresolution, ordinance, motion, bill, hearing, report ... as classified.
instrument_idnoneOrdinance/resolution number printed in the item (see instruments).
outcomenoneThe run's outcome (passed / refused / rejected / vetoed / pending / unknown).
actionnoneThe last action on the item (adopted, passed first reading, referred ...).
plainfree_textThe run's one-line plain summary (model-written; see summary_by).
summary_notenoneWho wrote the plain line; check the scan.
topicnoneTopic label.
subtopicnoneFiner topic label.
blocknoneAssessor block the item names, when it names one.
streetsfree_textStreets the item names ("\"-separated).
place_textfree_textThe place as written in the item.
summary_bynoneWho wrote the plain line (model name, "model-written; check the scan").
scan_urlnoneOpens the scanned page on archive.org.
page_exactnoneTrue when the page link was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
quoteraw_textRaw OCR text of the item. Not published for records under the embargo.

decisions_v2 (475,800 rows) (qipu_sf.db (table))

Decisions v2 (one model call per page, SF and Vancouver): votes with names, parties, money, places, zoning. Names of private people are withheld under the embargo.

columnprivacymeaning
run_idnoneThe extraction run that read the row (see runs).
page_idnoneThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document.
seqnoneRow id inside the run: the corpus item id (<volume>\|<n>) for v1 rows, the item's position on the page (1, 2, ...) for decisions v2 rows.
decision_idnoneThe decision id.
citynonesf or van.
yearnoneYear.
kindnoneThe kind of record.
numbernoneResolution or ordinance number as printed (v1: parsed from the item's opening words, see decision_numbers; v2: read by the model).
file_nononeBoard file number as printed.
action_rawnoneDecisions v2: the last action on the pages read, as the model chose it (adopted, passed_final, referred, continues_next_page, ...).
stagenoneDecisions v2: stage reached, from action_raw: adopted, final, first reading or hearing; empty for other actions and v1 rows.
outcomenonepassed / refused / rejected / vetoed / pending / unknown.
ayes_nnoneAyes count as printed (v1: from the item's roll call in x_roll_calls; v2: read by the model).
noes_nnoneNoes count as printed (v1: from the item's roll call; v2: read by the model).
absent_nnoneAbsent count as printed (v1: from the item's roll call; v2: read by the model).
ayespublic_officialSurnames voting aye, as printed (v1: from x_roll_call_votes; v2: read by the model).
noespublic_officialSurnames voting no, as printed (v1: from x_roll_call_votes; v2: read by the model).
absentpublic_officialAbsent or excused.
moverpublic_officialDecisions v2: surname of the member who moved the deciding motion, as printed.
seconderpublic_officialDecisions v2: surname of the member who seconded the deciding motion, as printed.
departmentfree_textDecisions v2: the department, board, officer or committee that reported or requested the item, as printed.
partiesnestedParties as JSON text (names of private people withheld under the embargo).
moneynestedAmounts as JSON text (payees withheld under the embargo).
placesnestedPlaces as JSON text.
zoningnoneDecisions v2: a zoning change, from_district and to_district as printed.
relatednoneDecisions v2: numbers of other measures the item amends or refers to (relation is always refers_to).
datesnoneDecisions v2: dates that set or schedule the decision, with role (effective, continued_to, hearing, deadline, other).
topicsnoneDecisions v2: topics chosen by a model from a fixed list (housing, whats-being-built, parks, transit, ...).
plainfree_textOne-line plain summary (model-written; check the scan).
confidencenoneDecisions v2: 0-1 from rule checks: 1.0 quote found on the page, 0.7 found loosely, 0.4 not found; x0.8 for action other or noes count not matching names.
quoteraw_textThe item's text as printed (v1: first 300 characters; v2: the quote the model copied). Empty (withheld in the public files for records under the privacy embargo (75 years in SF, 92 in Vancouver)).

hood_archive_items (600 rows) (qipu_sf.db (table))

Ready-joined: archive.org items qipu linked to places, by neighbourhood (Democracy's Library first).

columnprivacymeaning
hoodnoneNeighbourhood.
in_DLnone1 when the item is in Democracy's Library.
titlecatalogueTitle (catalogue title for archive items; the plain line for decisions).
yearnoneYear.
kindnoneThe kind of record.
collectionnoneThe collection group.
placenoneThe place as written.
excerptraw_textA short excerpt of the item (raw text; not published for embargoed records).
linknoneOpens the source: the archive.org page for scans, else the source URL.
source_idnoneThe source: an archive.org identifier, or web:<url> for other sources.

id_redirects (135,661 rows) (qipu_sf.db (table))

Stable-id policy: a merged or retired id keeps resolving through this table (empty in v0.1, the first release).

columnprivacymeaning
old_idnoneAn id an earlier release published.
new_idnoneThe id it now resolves to; empty when the id was retired.
reasonnonedecisions v2 reading attached to the same v1 decision, or retired in <release>: no longer produced by the build.
since_releasenoneRelease that added the redirect.

instruments (72,224 rows) (qipu_sf.db (table))

Ordinances, resolutions and bills by printed number.

columnprivacymeaning
instrument_idnoneqipu:sf/instrument/<res\|ord\|bill>/<year>-<n> when the number prints its year (627-91), s<year>-<n> for "(Series of 1939)", ns-<n> for "(New Series)", else y<journal year>-<n>.
kindnoneresolution or ordinance.
numbernoneThe number as printed.
yearnoneYear printed with the number, else the earliest Journal year it appears in (see year_basis).
year_basisnoneprinted, or the Journal year (assumed).
file_nononeBoard file number printed with it.
first_page_idnoneLowest page_id among the x_decisions rows that print the number; : when that row has no archive.org page.
first_page_linknoneOpens the first page that prints the instrument.
n_decisionsnoneDecisions that print the number.

media (1,428 rows) (qipu_sf.db (table))

Every photo, film, recording, clip and document the map shows (timelines, covers, hood stories, block items, films, clips), with its credit, licence, holder and a rights note. Claims depicted_in / recorded_at tie each to its place and year.

columnprivacymeaning
media_idnoneqipu:sf/media/<hash of its URL>, stable.
media_kindnonephoto, film, recording, clip, text, document (kind with audio -> recording).
kindnoneKind as the map records it: photo, film, audio, clip, text, document.
titlecatalogueTitle or caption.
created_edtfnoneWhen it was made (EDTF), from a year in the title; ~ for circa; empty when the title has none.
beat_yearnoneThe year of the map beat the media is placed at (not when it was made: see created_edtf).
urlnoneThe item's page at its holder.
file_urlnoneDirect file or image link (a thumbnail for films).
embed_urlnoneEmbeddable player link (archive.org embed, with start time).
creditcatalogueCredit line as the map shows it.
licencenoneLicence as the map recorded it; text longer than 80 characters is moved to rights_note.
holdercatalogueWho holds the rights or the copy.
use_policynoneHow it may be used: open, attribution, noncommercial, stream_only, link_only, ask_holder, unknown.
rights_notecatalogueWhat a reuser must know, by holder rule (e.g. WNP: ask before public use; Live Music Archive: non-commercial).
source_identifiernonearchive.org identifier, for archive.org items.
used_innoneWhere the map uses it (timelines.json:<street>#<n>, blocks/<block>.json:<id>, ...).

orgs (1 rows) (qipu_sf.db (table))

Organisations (v1: the Board).

columnprivacymeaning
org_idnoneqipu:sf/org/<slug>.
nameorganisationName.
kindnoneagency.
wikidatanoneWikidata id.

pages (183,888 rows) (qipu_sf.db (table))

Every archive.org page cited. We point at the scans; we never copy them.

columnprivacymeaning
page_idnoneThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document.
source_idnonearchive.org identifier of the volume.
leaf_numnoneThe page's OCR leaf (the jp2/IIIF file number), from the volume's leaf map; empty in volumes without one.
display_nnonearchive.org BookReader page index (the n in /page/n<k>).
meeting_datenoneEarliest dated claim on the page.
scan_urlnoneOpens the page on archive.org.
iiif_urlnoneThe page image through IA's IIIF image service ($<display_n + 1>: that service counts the displayed pages from 1). v0.5 used the OCR leaf and showed the page before on about a third of pages; fixed in v0.6.
page_exactnoneTrue when the archive.org page number was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
n_claimsnoneClaims citing the page.

person_names (9,251 rows) (qipu_sf.db (table))

Each name as printed in roll calls, with the years seen and the person it resolves to.

columnprivacymeaning
person_idnoneThe supervisor (see persons).
name_printedpublic_officialThe name as printed in the roll call.
fromnoneFirst year this printed form appears in a roll call.
tononeLast year this printed form appears in a roll call.
nnoneRoll-call votes with this printed form.
matchnoneHow this printed form was matched (see x_roll_call_votes.match).

persons (294 rows) (qipu_sf.db (table))

People resolved in v1: the members of the Board of Supervisors (official roster: the Wikipedia list, with Wikidata ids), plus four supervisors printed in the Journals but missing from that list (journal_only).

columnprivacymeaning
person_idnoneqipu:sf/person/<slug>.
display_namepublic_officialName as on the roster.
wikidatanoneWikidata id.
wikidata_urlnoneThe Wikidata page.
wikipediapublic_officialTitle of the English Wikipedia article.
is_public_officialnoneTrue on every row: all are supervisors.
roster_sourcenonewikipedia (the Wikipedia list of SF supervisors) or journal_only (a surname printed in 100+ roll calls that the list lacks).
first_yearnoneFirst year served (journal_only: first year the name is printed).
last_yearnoneLast year served (journal_only: last year the name is printed).

place_names (2,274 rows) (qipu_sf.db (table))

Names of places (official, alias). The historic names index starts here; v1 holds today's names and the search aliases.

columnprivacymeaning
place_idnoneThe place (see places).
namenoneThe name.
name_kindnoneofficial (street and neighbourhood names from DataSF EAS) or alias (a name matched in Internet Archive full-text search).
fromnoneEmpty in v0.4. Meant for the first year the name was in use.
tononeEmpty in v0.4. Meant for the last year the name was in use.
sourcenoneWhere the name comes from.

place_records (2,005,407 rows) (qipu_sf.db (table))

Ready-joined: every record about a place (decisions, claims, media), one line each, with its link.

columnprivacymeaning
place_idnoneWhere (a qipu place id; qipu:sf/place/city for citywide).
whennoneWhen (YYYY, YYYY-MM or YYYY-MM-DD).
kindnoneThe kind of record.
whatfree_textWhat was decided or recorded, in one line (model-written for Board items; check the scan).
outcomenonepassed / refused / rejected / vetoed / pending / unknown.
precisionnoneHow exactly the source places it.
linknoneOpens the source: the archive.org page for scans, else the source URL.
sourcefree_textThe source, in words.
record_idnoneThe decision, claim subject or item id.
from_tablesnoneThe tables the row was read from.
topicnoneTopic label from the run.

place_relations (740,856 rows) (qipu_sf.db (table))

How places relate, computed from geometry each build (plus declared links): an address within a block, a block within a neighbourhood, a street crosses a creek ...

columnprivacymeaning
from_idnoneplace ids
relationnonewithin, overlaps, crosses, on_street ...
to_idnoneplace ids
basisnonegeometry or declared
valid_fromnonewhen the relation holds (historic places)
valid_tononewhen the relation holds (historic places)
overlap_rationonethe geometric measure behind it
notenonehow it was computed

places (470,596 rows) (qipu_sf.db (table))

Today's places with stable qipu ids.

columnprivacymeaning
place_idnoneqipu:sf/place/address/eas-<EAS id>, .../parcel/<block>-<lot>, .../block/<block>, .../street/<name-type>, .../street/<name> (printed without type, street_name), .../hood/<slug>, .../landmark/<slug>, .../city.
type_idnonePlace type (see place_types): parcel, address, assessor_block, street, street_name, zoning_district, landmark, ...
kindnoneaddress, parcel, block, street, street_name, neighbourhood, landmark, city.
namenoneReadable name: the address (26 REARDON RD), <block>/<lot> (<addresses>), Assessor block <n>, the street, neighbourhood or feature name.
parent_idnoneaddress -> parcel -> block -> neighbourhood -> city.
eas_idnoneDataSF Enterprise Addressing System base id.
wikidatanoneWikidata id, for named features.
gnisnoneUSGS GNIS feature id.
latnoneLatitude: the EAS point for addresses, the mean of address points for parcels, blocks and streets, the Wikidata point for features.
lonnoneLongitude: the EAS point for addresses, the mean of address points for parcels, blocks and streets, the Wikidata point for features.
radius_mnoneRadius in metres of the circle qipu draws around a feature's Wikidata point.
valid_fromnoneEmpty in v1 (the historic place index comes later).
valid_tononeLast day the place existed; only the 1906 burn zone has one.
specificitynone-log10 of the clickable footprint in m² (place_geometries.hit_area_m2); higher = smaller, ranked first by places_at.
geometry_notenoneSays when the geometry is approximate (a circle around a Wikidata point).
street_idnoneThe street place (qipu:sf/place/street/<name-type>).
blocknoneAssessor block.
lotnoneAssessor lot.
hoodnoneDataSF Analysis Neighborhood (point in polygon).
sourcenoneWhere the place comes from (DataSF Enterprise Addressing System (3mea-di5p), PDDL, DataSF parcels, Wikidata, ...).

refused (11,664 rows) (qipu_sf.db (table))

Ready-joined: decisions refused, rejected or vetoed, with their places.

columnprivacymeaning
yearnoneYear.
decadenoneThe decade (1970 = 1970-1979).
datenoneThe meeting date (YYYY-MM-DD) when known.
outcomenonepassed / refused / rejected / vetoed / pending / unknown.
topicnoneTopic label.
plainfree_textOne-line plain summary (model-written; check the scan).
placefree_textThe place as written.
neighbourhoodnoneDataSF Analysis Neighborhood(s) of the places it names.
scan_urlnoneOpens the scanned page on archive.org.
decision_idnoneThe decision id.
knoneInternal: duplicate rank (1 = kept).

roles (318 rows) (qipu_sf.db (table))

Supervisor terms (contiguous years served, from the roster).

columnprivacymeaning
person_idnoneThe person (see persons).
rolenonesupervisor.
org_idnoneThe body (see orgs).
fromnoneFirst year of an unbroken run of years served.
tononeLast year of that run.
sourcenoneWikipedia: Members of the San Francisco Board of Supervisors, or printed in the Journal roll calls only.

roll_calls (171,123 rows) (qipu_sf.db (table))

Printed roll calls found in the Journal text, with printed and parsed counts and what was decided.

columnprivacymeaning
rollcall_idnoneId of the roll call: hash of the item id and the roll call's position in the item.
decision_idnoneThe decision id.
yearnoneYear.
datenoneMeeting date, where the corpus gives one within a year of the volume's year.
outcomenonepassed / refused / rejected / vetoed / pending / unknown.
outcome_textfree_textThe printed outcome phrase before "by the following vote" (Adopted, Finally passed, ...), up to 120 characters.
ayes_nnoneCount as printed.
noes_nnoneNoes count as printed.
absent_nnoneAbsent count as printed.
ayes_parsednoneNames parsed.
noes_parsednoneNames parsed after Noes.
absent_parsednoneNames parsed after Absent or Excused.
counts_matchnoneTrue when every printed count equals the names parsed (94% of roll calls).
whatfree_textWhat was decided or recorded, in one line (model-written for Board items; check the scan).
instrument_idnoneThe ordinance or resolution the roll call is on (see instruments).
page_idnoneThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document.
scan_urlnoneOpens the scanned page on archive.org.
page_exactnoneTrue when the archive.org page number was converted from the OCR leaf with the per-volume leaf map; false = may be a page or two off.
contextraw_textUp to 300 characters of item text before the roll call. Empty (withheld in the public files for records under the privacy embargo (75 years in SF, 92 in Vancouver)).
quoteraw_textThe roll call as printed, from 60 characters before it (<= 600 characters). Names supervisors, who are public officials.

runs (43 rows) (qipu_sf.db (table))

What made each table: rules, hand work, or a model run (model, prompt).

columnprivacymeaning
run_idnoneThe run's id, as used in run_id elsewhere.
kindnoneHow the run worked: llm, rules, llm+hand, llm+rules, rules+hand, hand, search.
modelnoneModel used (claude-haiku-5-5, claude-sonnet-5-5); empty for rule, hand and search runs.
prompt_versionnonePrompt file or script the run used.
schema_versionnoneOutput schema version (1, v2.1) where set.
settingsnoneEmpty in v0.4.
startednoneWhen the run started (YYYY-MM-DD or YYYY-MM).
pagesnoneEmpty in v0.4.
cost_usdnoneEmpty in v0.4.
gold_scoresnoneEmpty in v0.4.
notesnoneWhat the run made, in a line; model runs with no gold end with [unmeasured: no gold for this run].
gold_idnoneThe gold set the run was scored against (see field_scores); empty when unmeasured.
prompt_idnoneSame as prompt_version.
extraction_tablenoneEmpty in v0.4.
citynonesf or van.

showcase_items (18,351 rows) (qipu_sf.db (table))

Ready-joined: what the Archive holds about each showcase place, across collections.

columnprivacymeaning
showcasenoneThe showcase place (slug).
yearnoneYear.
kindnoneThe kind of record.
titlefree_textTitle (catalogue title for archive items; the plain line for decisions).
collectionnoneThe collection group.
linknoneOpens the source: the archive.org page for scans, else the source URL.
rights_notecatalogueWhat a reuser must know about the source's rights, in words (archive.org search hits, or a licence text longer than 80 characters moved here from licence).
linked_vianoneHow the item is linked to the place.
confidencenone0-1 where a run gives one (votes: 0.95 when the printed counts match the names).
from_tablenoneThe table the row came from.
outcomenonepassed / refused / rejected / vetoed / pending / unknown.
variantsnoneNear-identical catalogue records folded into this line.
tiernonenamed (matched by name) or nearby (by location only).

sources (6,377 rows) (qipu_sf.db (table))

Every source cited. archive.org items carry their collections and Democracy's Library membership.

columnprivacymeaning
source_idnoneThe source: an archive.org identifier, or web:<url> for other sources.
titlecatalogueTitle from archive.org, else a citing claim's source label.
kindnoneboard_journal, board_minutes, council_minutes, report, plan, eir, book, film, audio, photo, open_data, encyclopedia, map, web ...
collectionnoneFirst archive.org collection of the item.
collectionsnoneAll archive.org collections of the item.
in_democracys_librarynoneTrue when one of the item's collections is in Democracy's Library scope: the DL pools (instituteofgovernmentalstudieslibrary, USGovernmentDocuments, fedlink, governmentpublications, us_census, nasa, ...) or one of the 830 child collections of democracys-library (DL_INVENTORY.md section 1). SF Public Library scans are not in DL.
dl_rulenoneWhich collection made it DL, or why not.
creatorcatalogueCreator as given by archive.org.
publishercataloguePublisher as given by archive.org.
year_fromnoneYear of the item (archive.org date), else the earliest year of the claims citing it.
year_tononeLatest year of the claims citing it, else the item's year.
pagesnonearchive.org imagecount.
licencenonearchive.org licence URL or rights text (<= 300 characters); for web sources the citing claims' licence code.
holdercataloguearchive.org contributor: the library that gave the copy (San Francisco Public Library, ...).
on_archive_orgnoneTrue when the source is an archive.org item.
urlnoneLink to the source: the archive.org item page, or the web page.
n_claimsnoneClaims citing it.

street_zoning (13,666 rows) (qipu_sf.db (table))

Ready-joined: zoning decisions by street.

columnprivacymeaning
street_idnoneThe street place id.
streetnoneStreet name.
yearnoneYear.
datenoneThe meeting date (YYYY-MM-DD) when known.
outcomenonepassed / refused / rejected / vetoed / pending / unknown.
plainfree_textOne-line plain summary (model-written; check the scan).
streetsfree_textStreets the item names ("\"-separated).
place_textfree_textThe place as written in the item.
instrument_idnoneOrdinance/resolution number printed in the item (see instruments).
scan_urlnoneOpens the scanned page on archive.org.
decision_idnoneThe decision id.

supervisor_totals (220 rows) (qipu_sf.db (table))

Ready-joined: votes on record per supervisor (yes / no / absent).

columnprivacymeaning
person_idnoneqipu:sf/person/<slug>.
display_namepublic_officialThe supervisor.
first_yearnoneFirst year served (journal_only: first year the name is printed).
last_yearnoneLast year served (journal_only: last year the name is printed).
votes_on_recordnoneRoll-call votes found.
yesnoneYes votes.
nononeNo votes.
absentnoneAbsent or excused.
pct_nononeShare of no among yes + no, %.
first_vote_yearnoneFirst roll call found.
last_vote_yearnoneLast roll call found.
wikidata_urlnoneThe Wikidata page.

table_counts (28 rows) (qipu_sf.db (table))

The tables of this file, their row counts and what one row is.

columnprivacymeaning
table_namenoneA table of this file.
rowsnoneIts row count.
aboutnoneWhat one row is.

vote_claims (qipu_sf.db (view))

A view: every vote in claim shape (one supervisor, one roll call).

columnprivacymeaning
claim_idnoneStable id: c: + 32 hex (128 bits, hashed from the slot: subject, property, object, page, role); votes v:<rollcall_id>:<n>.
subject_idnoneWhat the statement is about: a decision (qipu:sf/decision/...), a place, a person (qipu:sf/person/...) or an archive item (ia:<identifier>).
subject_labelpublic_officialReadable label of the subject.
propertynoneControlled list: outcome, voted, concerns_place, built, depicted_in, recorded_at, happened_at, ballot_result.
value_textnoneText value: the outcome, the vote (yes/no/absent/excused), the line as written.
object_idnoneThe other entity, when there is one (the decision a supervisor voted on; the place an archive item concerns).
t_fromnoneWhen: YYYY-MM-DD, YYYY-MM or YYYY.
t_precisionnoneday, month or year.
place_idnoneWhere (a qipu place id; qipu:sf/place/city for citywide).
page_idnoneThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document.
linknoneOpens the source: the archive.org page for scans, else the source URL.
quoteraw_textShort quote of the source (<= 300 characters). See privacy_flag.
extraction_tablenoneWhich table or file the statement came from (bos_records, resweep, x_roll_calls, map_blocks, site_decisions, ...).
run_idnoneThe extraction run (see runs).
confidencenone0-1 where a run gives one (votes: 0.95 when the printed counts match the names).
statusnoneextracted (machine-read), record (from an official register: assessor, DataSF), curated (written or checked by qipu for the map). No verified rows yet.

votes (2,071,147 rows) (qipu_sf.db (table))

One row per supervisor per printed roll call (stored by person, then date).

columnprivacymeaning
person_idnoneThe supervisor the name was matched to (see persons); empty when unmatched or ambiguous.
yearnoneYear.
datenoneThe meeting date.
votenoneaye, no, absent, excused or not_voting.
rollcall_idnoneThe roll call (see x_roll_calls).
name_printedpublic_officialThe name as printed in the roll call.
resultnoneThe roll-call outcome.
tallynonePrinted yes-no counts.
whatfree_textWhat was decided or recorded, in one line (model-written for Board items; check the scan).
instrument_idnoneThe ordinance or resolution voted on.
pagenoneOpens the page on archive.org.

x_appraisals (3,189 rows) (qipu_sf.db (table))

Extraction table: the SF Redevelopment Agency property files of the Western Addition A-2 project (SFPL scans on archive.org), one row per parcel page (claude-haiku-5-5, sfra_extract.py), matched to today's parcels by sfra_build.py.

columnprivacymeaning
run_idnonesfra-appraisals-haiku55-2026-10 (see runs).
page_idnoneThe archive.org page: <identifier>:<leafNum> (IA's leaf number, the jp2 / IIIF number), or <identifier>:d<n> where only the BookReader index is known, or <url>:<page> for a web document.
seqnoneLine number of the row in the run's rows file.
itemnonearchive.org identifier of the property file (SFH371-...).
pagenonearchive.org BookReader page index in the item.
urlnoneLink to the page on archive.org.
yearnoneYear of the report (for a sale, the sale year when it is close).
blocknoneAssessor block of today it was matched to.
lotnoneAssessor lot, when matched to an address.
precisionnoneaddress (door matched to an EAS address), block (matched by its street hundred), near (old door gone: nearest door of today within 60 m), printed block.
address_printedfree_textAddress as printed, read by a model from the page image and OCR.
block_printednoneBlock as printed, read by a model from the page image and OCR.
lot_printednoneLot as printed, read by a model from the page image and OCR.
kind_pagenoneKind of page: appraisal, sale, property_summary, folder, interview, rent_schedule.
buildingfree_textBuilding description as printed, read by a model from the page image and OCR.
unitsnoneUnits or rooms as printed, read by a model from the page image and OCR.
rent_examplenoneA sample rent line as printed, read by a model from the page image and OCR.
rent_totalnoneTotal rent as printed, read by a model from the page image and OCR.
appraised_valuenoneAppraised value as printed, read by a model from the page image and OCR.
assessed_totalnoneTotal assessed value as printed, read by a model from the page image and OCR.
sale_pricenoneSale price as printed (sales study pages), read by a model from the page image and OCR.
sale_datenoneSale date as printed, read by a model from the page image and OCR.
present_usefree_textPresent use as printed (Flats, Apartments), read by a model from the page image and OCR.
ownerperson_nameOwner as printed (for a sale, the grantee). Under the 75-year privacy filter the public files show a owner (name withheld until <year>).
confidencenoneThe model's legibility rating: high or medium (low rows are dropped).
textfree_textPlain line built from the fields (Redevelopment Agency appraisal: 3-story frame structure; appraised at $...). Person-like names are withheld for records under the 75-year privacy filter.

x_dl_tags (1,131 rows) (qipu_sf.db (table))

Extraction table: Democracy's Library (IGS) items about SF, with the neighbourhoods, streets and places each is about (claude-haiku-5-5 on metadata + first OCR, dl_tag.py).

columnprivacymeaning
run_idnonedl-tags-haiku55-2026-10 (see runs).
identifiernonearchive.org identifier of the document.
urlnoneThe item on archive.org.
about_sfnoneTrue when the document is about San Francisco, chosen by a model from the catalogue record and the start of the OCR.
doc_typenoneDocument type (study or report, plan, environmental impact report, budget, ...), chosen by a model from the catalogue record and the start of the OCR.
scopenonecitywide, neighbourhoods, site, regional or not San Francisco, chosen by a model from the catalogue record and the start of the OCR.
hoodsnoneNeighbourhoods (from the map's fixed list) the document is about, chosen by a model from the catalogue record and the start of the OCR.
streetsnoneStreets the document is about, chosen by a model from the catalogue record and the start of the OCR.
placesnoneNamed sites or facilities the document is about (at most 4), chosen by a model from the catalogue record and the start of the OCR.
evidencefree_textShort quote (<= 160 characters) from the title or text showing what the document is about, picked by a model.

Claim reliability (claim_reliability)

A claim says what a record states, not that it is true. Truth needs corroboration. Every claim gets a tier from signals the build can check; the tier says how much evidence stands behind the claim, not whether it is true.

tierwhenwhat it does NOT mean
verifieda person checked it against the scan (a hand-check verdict "right"), or 2+ independent documents (different source_id) state the same subject, property, value and datethat it is true: two records can repeat one error
quotedthe quote is in the cited page's OCR (first words in order, 80% of its words), the run measured >= 0.9, no consistency check failedthat the reading is right: the run's score is an average
unverifiedeverything else; tier_reason says whythat it is wrong

Signals: quote_check (found, not_found, no_ocr, no_quote); run_accuracy with run_accuracy_against (human, model key or model scan check, always shown separately) and run_accuracy_n; support_count (readings of the same page, not independent); independent_sources; checks_failed (printed tally against the extracted counts or outcome, OCR tally, a date outside the volume); human_verdict; flag_status (a pending flag changes nothing; only an accepted correction downgrades a claim).

Counts in v0.7.1 (SELECT tier, count(*) FROM claim_reliability GROUP BY 1):

tierclaims
unverified5,403,521
quoted2,962,695
verified889
quote_checkclaims
found5,300,057
no_quote2,541,197
not_found409,191
no_ocr116,660

Reliability by field

How each field was made and how well it is known. "Unmeasured" means no gold exists yet; nothing here is a guess.

fieldmade byreliability
x_roll_calls: counts (ayes/noes/absent)rules (20_rollcalls.py)Rule check on all 171,123 roll calls: printed counts equal the names parsed in 90.5% (1,402 print no counts). SF gold (decisions_bench/gold.jsonl, written by Opus 5.5, no record of a hand check): counts exact 40/46 (87%) where the roll call is in the item text; 12 of 58 gold roll calls not found (mostly outside the gold text span).
x_roll_call_votes.person_id (who voted)rules: surname + years served, official roster99.4% of 2,084,507 printed names matched to a person (659 ambiguous, left empty). Gold names: 536/541 matched. Correctness of each match: unmeasured (no gold of names to persons yet); confidence in claims drops to 0.6 when the counts do not match.
claims voted: value_text (yes/no/absent)rulesSame as the roll-call counts above; unmeasured separately.
decisions.block, concerns_place (block level)rules (map block index)Measured 2026-10-06 on 3,195 checks (accuracy.json): 88.9% on the exact block, 91.6% within one block face, 95.5% within 250 m. By tier: address 92.8%, corner 51.9%, segment 71.4%. Street-tier placements (a street, not a block) are not scored.
pages.display_n / page linksper-volume leaf map: the audited Journal map, IA scandata for the other items (qipu_data.leafmap_ia)179,043 of 180,775 pages are mapped OCR page -> viewer page (page_exact); the rest keep n = OCR page and may be a page or two off. iiif_url is $<display_n + 1> (that IIIF service counts the shown pages from 1). Gate L1 checks the numbering; L2 checks that a fixed sample of quotes is on the cited page.
decisions.topic / subtopic / action (bos_corpus)rules + title classification (build_core_table.py)unmeasured
decisions from the re-sweep: outcome, topic, plain, place (claude-haiku-5-5, RESWEEP_PROMPT.md)LLM, one item at a timeunmeasured for this prompt. Indicative only (same model, page-level prompt, SF gold, L4_TEST.md): action 0.97, topics F1 0.84, places F1 0.89.
decisions.plain_best (the map's one-line summaries)LLM + accuracy pass (CHECK_PROMPT.md)unmeasured as a rate; lines the accuracy pass found wrong were rewritten or dropped.
instruments (numbers)regex on the item textunmeasured. OCR can garble numbers (1G2 for 162); those are not parsed.
address_resolutionexact text match to DataSF EASexact matches only, by construction; unmatched texts are not resolved.
sources.in_democracys_libraryrule: the item's collections vs DL scope (DL_INVENTORY.md)exact by definition, as of the metadata fetched 14/10/2026.
built (assessor year built), fire_1906, sanborn linesofficial records (DataSF, Sanborn via OldInsuranceMaps)record values, not extracted; the Sanborn line wording is a convention of the map (unmeasured).
dl_documents links (archive items to places)IA full-text search + relevance scoreunmeasured; confidence holds the search relevance score.
x_dl_tags (places a DL item is about)LLM on metadata + first OCRunmeasured (no gold of document places yet).
media rights_noterules by holder, on top of the licence the map recordedrule output; the item page is the authority. 17 items have no holder rule (rights not recorded: link only).
x_decisions v2 money currency (SF)fixed in the buildthe run's writer stamps CAD on every amount; SF amounts are relabelled USD in the release (run files unchanged); gate M1 fails any SF amount in CAD.
stories, timelines, doors, datelinewritten for the map (LLM + hand review on demo streets)unmeasured; each line cites its source.
x_decisions run sf-v21-haiku-1014 / van-v21-haiku-1014 (decisions v2)LLM, one call per pageagreement with an Opus-written key (L4_TEST.md, SF gold; not hand-checked; n = 115, a Wilson 95% interval on 0.95 is about 0.89-0.98): finds 0.95, number 1.00, action 0.95, vote counts 0.99, all three 0.95, vote names 0.95, mover 0.93, money F1 0.80, places F1 0.66, parties F1 0.61, dates F1 0.55, related F1 0.17 (new fields scored against an Opus key, not hand-checked).
x_appraisals (SFRA property files), claude-haiku-5-5LLM, one call per pagemeasured on 18 pages (ia_records/sfra/bench/score.json): address 18/18, parcel 18/18, owner 18/18, present_use 17/18, rent 16/18, appraised_value 18/18.

Measured field scores (from field_scores)

runfieldmetricvaluegold
andrews-sonnet55-2026-10andrews ownersconfirmed on the linked page image / checked (Wilson 95% 0.83-0.99); re-checked on v0.6 after the page-link fix (v0.5 links were one page off)0.97eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
bos-corpus-2026-09outcomesconfirmed on the linked page image / checked (Wilson 95% 0.25-0.84)0.57eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
bos-corpus-2026-09placesconfirmed on the linked page image / checked (Wilson 95% 0.70-0.96)0.88eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
dl-sf-facts-v1.1-haiku55-2026-10dl factsconfirmed on the linked page image / checked (Wilson 95% 0.79-0.96); re-checked on v0.6 after the page-link fix (v0.5 links were one page off)0.91eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
rollcall-parser-v1countsexact where the roll is in the text0.87decisions_bench/gold.jsonl roll calls (Opus-written key), scripts/22_rollcall_gold.py
rollcall-parser-v1names to personsmatched0.99decisions_bench/gold.jsonl roll calls (Opus-written key), scripts/22_rollcall_gold.py
rollcall-parser-v1votesconfirmed on the linked page image / checked (Wilson 95% 0.70-0.99)0.93eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
sf-v21-haiku-1014actionexact0.95decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014datesF1 (vs Opus key)0.55decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014findsrecall0.95decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014interestSpearman0.78decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014moneyF1 (vs Opus key)0.80decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014moneyconfirmed on the linked page image / checked (Wilson 95% 0.85-0.99)0.96eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
sf-v21-haiku-1014moverexact0.93decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014numberexact1.00decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014number+action+votesall exact0.95decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014outcomesconfirmed on the linked page image / checked (Wilson 95% 0.73-0.94)0.87eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
sf-v21-haiku-1014partiesF1 (vs Opus key)0.61decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014placesconfirmed on the linked page image / checked (Wilson 95% 0.70-0.97)0.90eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
sf-v21-haiku-1014placesF1 (vs Opus key)0.66decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014relatedF1 (vs Opus key)0.17decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014topicsF10.90decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014vote namesexact0.95decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sf-v21-haiku-1014votesconfirmed on the linked page image / checked (Wilson 95% 0.85-0.99)0.97eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
sf-v21-haiku-1014votes (counts)exact0.99decisions_bench/gold.jsonl (SF, 40 pages: an Opus-5.5-written key, no record of a hand check) + v2 Opus key
sfra-appraisals-haiku55-2026-10addressnormalized exact (18 pages)1.00ia_records/sfra/bench (18 pages)
sfra-appraisals-haiku55-2026-10appraised_valuenormalized exact (18 pages)1.00ia_records/sfra/bench (18 pages)
sfra-appraisals-haiku55-2026-10ownernormalized exact (18 pages)1.00ia_records/sfra/bench (18 pages)
sfra-appraisals-haiku55-2026-10parcelnormalized exact (18 pages)1.00ia_records/sfra/bench (18 pages)
sfra-appraisals-haiku55-2026-10present_usenormalized exact (18 pages)0.94ia_records/sfra/bench (18 pages)
sfra-appraisals-haiku55-2026-10rentnormalized exact (18 pages)0.89ia_records/sfra/bench (18 pages)
sfra-appraisals-haiku55-2026-10sfra appraisalsconfirmed on the linked page image / checked (Wilson 95% 0.74-0.95), after 6 checker-prompt errors were corrected (see ACCURACY_v0.6.md)0.89eval/model_scan_check (300 public claims re-read against the page image by claude-opus-5-5; no person checked them)
van-v21-haiku-1014moneyF1 (vs Opus key)0.73decisions_bench Vancouver gold (30 pages, 48 decisions: Opus-written, 21 decisions hand-checked)
van-v21-haiku-1014moverexact1.00decisions_bench Vancouver gold (30 pages, 48 decisions: Opus-written, 21 decisions hand-checked)
van-v21-haiku-1014number+action+votesall exact0.98decisions_bench Vancouver gold (30 pages, 48 decisions: Opus-written, 21 decisions hand-checked)
van-v21-haiku-1014vote namesexact0.98decisions_bench Vancouver gold (30 pages, 48 decisions: Opus-written, 21 decisions hand-checked)

Public SQLite copy (qipu_sf.db)

The same tables for browsing, plus ready-joined tables for the showcase questions (place_records, street_zoning, refused, hood_archive_items, supervisor_totals) and compact votes / roll_calls with the view vote_claims (votes in claim shape). In this copy the outcome claims of Board items live in decisions, and Board quotes from 1952 on are left out (privacy rule).