Skip to content

hearing_transcripts

Hearing transcripts

One row per captured GovInfo hearing transcript. bill_id is always NULL: a hearing can concern several bills, represented in hearing_bill_links. All columns are stored as VARCHAR.

Coverage. Sampled. Selected hearing packages from GovInfo, each with its native event identifiers checked: package and body metadata, not speaker turns or complete hearing history. (measured 2026-09-28)

Data quality. Cover bills come from the package's MODS and cost no extra requests. BODY mentions do not become hearing links. event_id is the meeting the Congress.gov hearing record names (its associatedMeeting), carried as the publisher pairs them. NULL means that record names no meeting, or was refused, and committee_report_reads says which (its outcome). It does not mean no meeting exists: a meeting can list the transcript's jacket in committee_meetings.hearing_jackets_json without the hearing record naming it. That jacket route is the publisher's many-to-many listing, not a declared join: on committee-meetings generation 31e62420… (2026-10-03) 1,021 meetings list two or more distinct jackets and 1,075 (congress, jacket) values sit on two or more meetings. The declared event_id join reads complete because every event_id names a meeting row; that does not check the pairing: CHRG-118hhrg63377 names meeting 116369, an Oversight and Investigations hearing the same day, while its MODS and docs.house.gov place it at 116330. body_completeness says what the read text states about itself: a publisher_placeholder body is the publisher's notice that the document is only in the PDF. When the package offers that PDF it is read instead (pdf_extracted, with text_derivation naming the extraction); when it offers none, the notice is published as it stands. NULL on rows not re-read since the column was added.

  • Parquet file: hearing_transcripts.parquet
  • MCP query_sql support: Configured; requires an available artifact.
  • Publication status: Not established by this schema page or its measurement date.
  • Row count: Not stated here; the MCP describe_table reply gives the live count under publication.
Column Type Description
package_id VARCHAR The GovInfo package id, which is this row's identity.
collection VARCHAR The GovInfo collection the package belongs to (CRPT, CHRG).
congress VARCHAR The numbered Congress, parsed from the package id's own grammar.
hearing_type VARCHAR The hearing's document-type code (hhrg, shrg, jhrg).
jacket_number VARCHAR The hearing's printing jacket number, leading zeros kept because it is opaque.
chamber VARCHAR The chamber, from the package id's document-type code rather than from its first letter.
title VARCHAR The package title as the keyed summary states it.
date_issued VARCHAR The date GovInfo issued the package; for CHRG packages this is the (first) held date: the summary's dateIssued equals the MODS's first heldDate on 185 of 185 published transcripts (2026-10-03), and the meeting's date on 117 of 117 matched to committee_meetings. held_date states it from the MODS itself.
last_modified VARCHAR When the publisher last modified the package; the merge prefers the larger value.
bill_id VARCHAR Always NULL here, and NULL for a stated reason: a legislative hearing is held on a list of bills -- twelve of them on CHRG-118hhrg56198 -- so a scalar column would have to pick one of twelve. The relationship is one-to-many and hearing_bill_links hosts it, one row per hearing, bill and source, the way event_id names committee_meetings. The column stays because this table shares its shape with committee_reports, where a report is filed against one bill.
format VARCHAR Which rendition was read (htm, xml, txt, pdf).
media_type VARCHAR The response media type, proved against the format before the body was accepted.
requested_url VARCHAR The URL the body fetch asked for.
resolved_url VARCHAR The URL the body actually came from.
byte_size VARCHAR Length in bytes of the captured body.
sha256 VARCHAR Digest of the captured body bytes.
observed_at VARCHAR When the body was captured.
page_count VARCHAR How many pages the extraction read, where a page-based extractor ran.
text_sha256 VARCHAR Digest of the extracted text, so a re-extraction that changed nothing is visible as such.
event_id VARCHAR The committee-meeting event id the Congress.gov hearing record names as its associatedMeeting, which committee_meetings.event_id joins on; NULL where the hearing names none or was not looked up.
body_completeness VARCHAR What the read text states about itself (sources.govinfo.bodies.publisher_body_status): publisher_placeholder where it is the publisher's own notice that the text is only in the PDF, so text_sha256 digests that notice, not the document; pdf_extracted for text extracted from a PDF, including one read in place of a placeholder; not_flagged otherwise. No value asserts the text is complete. NULL on a row not re-read since the column was added.
text_derivation VARCHAR The derivation that produced the text text_sha256 digests (markup-reader, text-rendition-cleanup or pdf-extraction-gpo-normalized), from the body sha256 digests; NULL on a row not re-read since the column was added.
witnesses_json VARCHAR Every witness the package's GovInfo MODS states, as a JSON array of its <witness> strings verbatim in document order -- name, position and organization as GPO wrote them, unsplit, because the record joins them in one string and spells them differently by chamber. NULL where the MODS states none, never []: MODS has no element for an empty witness list, so its silence is absence. The Congress.gov meeting record lists no Senate witness at all, while the MODS lists them for 63 of 85 published Senate transcripts (2026-10-03).
held_date VARCHAR The day the hearing was held, as the package's MODS states it in <heldDate>; NULL where the MODS states none. A compiled volume states several (2 of 185 published transcripts, 2026-10-03; CHRG-117shrg56721 states eleven) and this is the first: it dates the package, as date_issued does, so there it is when the series began, not each session's date. hearing_bill_links.held_date is NULL on the same volume for a different reason: a link pairs a date with a bill, and the volume pairs none.
mods_event_id VARCHAR The committee-meeting event id the package's GovInfo MODS states in <eventId> (the first, where it states several), which committee_meetings.event_id joins on with congress and chamber. A second publisher's statement beside event_id, never overriding it: a consumer may fall back to it where event_id is NULL. 43 of 185 published transcripts state one, 22 where Congress.gov names none, 21 of them Senate; where both state one they agree 21 of 21 (2026-10-03), including a misassignment both make (CHRG-118hhrg63377 names 116369, another subcommittee's hearing that day), so agreement is not independent confirmation.
committee_system_codes_json VARCHAR The committees the package's GovInfo MODS names as holding the hearing: each congCommittee authorityId, the system code committees.system_code and committee_meetings.committee_system_code key on (hswm00), lower-cased the way they key it, once each in the order the MODS first states it, as a JSON array. Read from the record and then each of its granules, because a hearing published as several states its committee only there (15 of 185 published transcripts, 2026-10-03); a joint hearing names two (3 of 185). [] where the MODS names none (1 of 185); NULL on a row not read since the column was added.