How the Conflict Score works

ConflictScore reads a congressional stock trade, looks up the member's committee assignments and the traded company's industry, and measures whether the two overlap. The result is a 0–100 score with a plain-language explanation that links back to the original filing.

One rule, always: every score links back to the original disclosure filing. The scoring method below is public, documented, and applied the same way regardless of party.

What the number means

A Conflict Score uses a 0–100 scale, with the current base model assigning only 0, 18, 30, 50, or 65. Scores above 65 are not used in this release. This is not a probability of wrongdoing. Higher means a stronger overlap between what the member's committees oversee and the industry of the traded company. Two top-level outcomes:

  • Not scored — we could not determine an overlap. This is not a zero; it means a needed input is missing (see What we need). A trade never silently scores 0.
  • scored 0–100 — enough data existed, and the overlap strength maps to a tier.

The five tiers

Tiers are ranked by how directly a committee's jurisdiction covers the issuer's industry. The engine picks the single strongest tier that applies. Counts are from the current corpus (11,401 trades):

65
Direct committee-domain
Member sits on a full committee whose specific jurisdiction covers the issuer’s mapped industry domain. Strongest base signal.
722 trades
50
Subcommittee-domain
Overlap runs through a subcommittee the member sits on. The parent committee’s domain applies, but the path is the sub.
0 trades
30
Sector-only
Issuer’s broad sector (e.g. finance, utilities) overlaps a committee, but its specific SIC has no mapped industry domain.
0 trades
18
Cross-cutting
Overlap through a broad committee (Appropriations, Oversight, Rules). Touches every sector, so intentionally the weakest positive tier.
57 trades
0
No mapped overlap
Enough data existed and no committee jurisdiction maps to the issuer. A genuine zero, not a missing input.
5,524 trades

How the match is made

  1. Issuer domains. The traded ticker is matched to an SEC EDGAR filing, which gives an SIC industry code. That SIC maps to oversight domains (e.g. SIC 2836 → health, pharma) via a public lookup table.
  2. Committee domains. The member's committee and subcommittee assignments are resolved to oversight domains (subcommittees inherit the parent committee's domains).
  3. Overlap. If any issuer domain appears in any of the member's committee domains, that's a match. The strongest tier among all matches sets the score.

What we need

A trade is marked Not scored if any of these is missing. We never guess — the gap is named.

GapWhy it happensShare
missing_tickerNo ticker (common for Treasuries, bonds, real estate, private funds).12.6%
ticker_not_matchedTicker present but not found in SEC EDGAR (delisted, acquired, OTC).4.6%
missing_sicIssuer matched in EDGAR but has no SIC industry code.0.2%
sic_unclassifiedSIC exists but is not yet mapped in our domain table.23.1%
missing_memberFiler could not be matched to a current member (former member or name variant).6.9%
missing_committee_dataMember matched but has no committee assignments on file.0.5%

Shares are computed from the stored corpus and shift as coverage improves. One trade can have more than one gap, so shares may overlap. Unavailable counts are never shown as zero.

A source-linked example

Atmos Energy (ATO)65 · Direct jurisdiction

Rep. Rick Allen sits on House Energy and Commerce, whose mapped jurisdiction includes energy. Atmos Energy is classified as Natural Gas Distribution (SIC 4924), which maps to energy.

The shared energy domain produces a direct-jurisdiction score of 65. This filing discloses a spouse-owned purchase on Aug 19, 2025. The score uses the current committee roster, not historical assignments.

A zero means no overlap was found in the mapped domains, not an absence of all possible conflicts. A missing input is labeled “Not scored” instead.

How the less common tiers work

Subcommittee overlap (50) applies when no stronger full-committee match exists. Sector overlap (30) applies when an issuer has a mapped broad sector but no specific industry-domain match. Broad committees retain the lower cross-cutting weight of 18.

Coverage and freshness

House updates are scheduled daily at 06:00 UTC. A successful run means the pipeline completed; it does not guarantee every disclosure could be identified or scored. Filing dates and trade dates differ, so this is not a real-time trading feed.

Senate electronic Periodic Transaction Reports are imported separately and scored when the required member, issuer, and committee data are available. Paper reports and amendments requiring reconciliation remain pending review and are excluded from trade totals. Coverage is partial, not a complete historical archive; the status above reflects published trades and the latest import.

How scores are produced

  1. Disclosure scraping. Periodic Transaction Reports are scraped from the House Clerk system (PDF), parsed, and each trade archived with a SHA-256 checksum. Senate electronic PTR tables are archived as HTML with SHA-256 checksums and parsed by the scheduled pipeline. Missing tickers are preserved as missing rather than inferred from asset names.
  2. Company mapping. Tickers are matched to SEC EDGAR central index keys and SIC industry codes.
  3. Committee mapping. Members' committee and subcommittee assignments are resolved to oversight domains from official jurisdiction statements.
  4. Scoring. The engine produces a tier, a 0–100 score, and plain-language reasoning, linked to the original filing URL.

What this version does not yet include

This release is the base score only. The following inputs do not affect the current score:

  • Trade size relative to the member's disclosed net worth.
  • Timing relative to a related committee vote or hearing.
  • Owner flags — trades by a spouse or dependent (covered by the STOCK Act).
  • Options / derivatives — contract characteristics are not incorporated.
  • Government-contract overlap — whether the issuer holds contracts from an agency the member's committee oversees (USASpending).
  • Historical committee assignments — scores today use the member's current roster; assignment history at the trade date is on the roadmap.
Non-partisan by construction. A member's party is stored for display only. The scoring engine never reads it, and no scoring rule branches on it.
ConflictScore · Methodology v1.0 (base score) · Not affiliated with any political party or campaign.
Individual score explanations are free; this page documents the rules the engine applies.