Omnibuster

00 Method

Methodology

Omnibuster is an independent reading of large bills. It is not a government site, not a vote recommendation, and not legal or tax advice.

I. Which bills

The ingest worker asks the Congress.gov API, when CONGRESS_API_KEY is set, for recent House and Senate bills and joint resolutions in the congresses listed in the Worker config. A title match decides whether to download the text.

Strong title signals: omnibus, consolidated appropriations, further consolidated, minibus, full-year continuing, further continuing appropriations. Strong structure: four or more divisions, or at least 80,000 words. Medium signals: a continuing-appropriations or “making appropriations” title, two or more divisions, or at least 8,000 words or 25 sections. One strong signal, or two medium signals, puts a bill in the index. A single-agency appropriations bill with one division stays out.

II. How the text is split

Full text comes from GovInfo USLM XML when that file exists, and otherwise from the Congress.gov formatted XML, which is often the older bill DTD. The parser walks the real structure: divisions, then titles, then sections and appropriation accounts. Table of contents, metadata, and signature blocks are skipped. Each summary sentence cites one of those nodes.

III. One template

Section summaries are written outside this site and imported. A section summary is one to three plain sentences and names the record ids it uses. Until that import, a section page says “Summary pending” and shows the source text. The site does not paste appropriation paragraphs together and call that a summary.

When a model is available, it writes the section sentences and the executive summary is rolled up from those sentences. Otherwise the executive summary is a short overview counted from the bill: how many divisions and dollar appropriations it contains, the total of those appropriations when each account is counted once, how many provisions sit outside their division heading, and one line per division with its largest appropriation.

The same import writes typed provision records. The contract is the provision schema. Amounts are accepted only when the dollar figure is printed in the cited span.

IV. Citations

A sentence without a source node is dropped. The link goes to that node’s page, which shows the source text. If a check cannot find a dollar amount or date in the cited text, the check is stored and shown on the bill.

V. Loaded language

Summaries are supposed to say what a provision does, who it names, and which amounts and dates the text states. They do not assign motives or predict effects. These words are removed unless the sentence is a quotation of the bill:

  • wasteful
  • landmark
  • controversial
  • radical
  • giveaway
  • slush
  • bloated
  • pork
  • handout
  • draconian
  • reckless
  • unprecedented
  • historic
  • crucial
  • vital
  • commonsense
  • common-sense
  • socialist
  • extremist
  • partisan
  • boondoggle
  • gimmick
  • scheme
  • unfair
  • raid
  • massive

If the source uses one of these terms, the summary has to quote the bill instead of paraphrasing it:

  • abortion
  • unborn
  • fetus
  • gender
  • transgender
  • sexual orientation
  • immigration
  • alien
  • migrant
  • asylum
  • climate
  • greenhouse
  • firearm
  • vaccine
  • vaccination
  • critical race
  • amnesty
  • censorship
  • misinformation
  • election integrity

VI. Outside the division heading

This is the rule people sometimes call a rider test. It does not ask whether a provision is newsworthy.

  • R0. An appropriation account inside a division whose heading contains “appropriations” stays in subject. It is an account in that division’s funding list, even when the account name does not repeat the division heading.
  • R1. A section is outside its division heading when no subject term from that heading appears in the section heading or first 500 characters, and the section amends or repeals a named Act, carries its own short title, limits the use of funds, or names an eligibility category.
  • R2. If boilerplate removal leaves the division heading with no subject terms (“Other Matters”, for example), the same operative test is applied and the reason says the heading named no subject.
  • R3. Subject terms drop boilerplate such as appropriations, department, related agencies, fiscal year, and other matters. Two words match when they are equal or share a prefix of six letters, so agriculture matches agricultural.

VII. How this bill affects me

This is a reading of categories the bill text names. It is informational and not legal, tax, or benefits advice. It is not a determination that you qualify for anything.

Your answers stay in this browser. They are not sent to the server or stored. Sharing uses the bill link only and does not include your answers.

During ingestion, each provision is scanned for categories the text actually names. The categories are: filing_status, head_of_household, income, age, sex, veteran, military, state, student, medicare, medicaid, snap, social_security, homeowner, renter, business_owner, farmer, industry, federal_employee, dependents, wic, tribal. An agency heading such as “Department of Veterans Affairs” is not treated as “you are a veteran.” Each match keeps the sentence it came from.

The questions are “How old are you?”, “Which state do you live in?”, and two multi-select screens for household situation and benefits, plus income and filing status when the text uses them. Each includes “Not sure” and “Prefer not to say.” The list stops at six questions. Once provision records are imported, matching uses the audience on those records. Until then it uses categories named in the text. Answers stay in the browser and are not written into the link.

A provision with no personal category is labeled “General provision.” A full match is “Applies to you.” A “not sure” or unanswered category is “May apply.” A contradicted category is left off the list.

VIII. Dollar figures and CBO

Figures shown as money come from the bill text, or from a Congressional Budget Office link stored from the Congress.gov API. After records are imported, the page adds top-level APPROPRIATE amounts and subtracts RESCIND amounts. Lines marked as part of a parent (“of which”) are not added again. That sum is not a CBO score, and it is not a total of every dollar sign in the bill.

IX. Checks

Import checks each summary and record before anything is stored: schema, span hash, verbatim amounts, quoted amendment text, dates, citations, sentence length, and loaded wording. A dollar figure the records missed is flagged. A failed row is rejected and reported. It is not replaced with an extract.

X. Updates

Each text version is hashed. A new enrolled or engrossed file with a different hash is processed again. The page shows the version name, the text date, and when the summary was generated.