Loading
Loading
An accountability tool that parses executive branch financial disclosure data into searchable, sortable and visual formats — tracking stock trades and potential conflicts of interest.
Last updated April 12, 2026
What the STOCK Act requires, how divestiture works and what happens when officials miss their deadlines.
The Ethics in Government Act of 1978 (Pub. L. 95-521) created financial disclosure requirements after Watergate. The STOCK Act of 2012 (Pub. L. 112-105) added periodic transaction reporting — requiring officials to disclose individual stock trades over $1,000 within days, not just annually. The law covers both Congress and the executive branch.
Officials must file a 278-T Periodic Transaction Report within 30 days of being notified of a trade or 45 days after the transaction itself — whichever comes first (5 U.S.C. §13105(l)). The 45-day mark is the hard backstop. If both deadlines pass, the filing is late.
Before confirmation, nominees sign an ethics agreement pledging to divest holdings that conflict with their new role. They have 90 days from confirmation to complete the sales. Divestitures may qualify for tax deferral under a Certificate of Divestiture (26 U.S.C. §1043). This only covers conflicting assets — officials can keep and trade non-conflicting stocks.
OGE can grant extensions on divestiture deadlines. Some assets — especially private equity, real estate LLCs and illiquid holdings — take longer to sell. Officials must request the extension and demonstrate good-faith effort. The ethics agreement remains binding.
A "late filing" means the official knew about a trade for more than 30 days before reporting it. The penalty is a $200 fee (5 U.S.C. §13106(a)) — routinely waived. A 2022 Business Insider investigation found at least 72 members of Congress violated the same deadline. No executive branch official has ever been meaningfully sanctioned for late 278-T filings.
Late disclosure carries a $200 fee (5 U.S.C. §13106(a)). But taking official action on matters affecting your financial holdings is a potential criminal violation under 18 U.S.C. §208. The distinction matters: late reporting is a paperwork problem; participating in decisions while financially conflicted is a federal crime carrying up to five years in prison.
From government PDFs to searchable data — the pipeline behind Open Cabinet.
The Office of Government Ethics maintains a public API listing all financial disclosure filers (5 U.S.C. §13107). It returns 16,857 records — names, titles, agencies, filing types and links to PDF documents. No authentication required. This is the entry point.
We filter for 278-T Periodic Transaction Reports — the ongoing stock trade disclosures. The most senior officials (Level I and II) have PDFs directly downloadable from OGE. We currently track 34 of them. Hundreds more officials have filed reports that require individual written requests to access.
Each 278-T is a PDF containing a table: asset description, transaction type (sale, purchase, exchange), date, amount range and whether the filing was late. We use natural-pdf — an open-source Python library by data journalist Jonathan Soma (github.com/jsoma/natural-pdf) — to extract text from every page, then send each page to Claude Opus for structured parsing. This page-by-page approach handles large filings and scanned documents without losing data.
Before any parsed data goes live, it runs through automated checks: valid transaction types, amount ranges and dates; ticker symbol verification; comparison against hand-checked sample filings and outlier detection. We maintain samples for five officials (ranging from two to 1,315 transactions) to catch errors.
Parsed transactions go into a Neon PostgreSQL database with built-in duplicate detection that catches repeated entries from amended filings. Each transaction links to its source PDF — if bad data gets in, it can be traced and removed.
The structured data powers D3 visualizations: scatter-plot timelines for each official, a swim lane chart showing all 3,200+ trades on one canvas, treemaps for asset categories and bar charts for company lookups. D3 computes the math; React renders the SVG.
A Vercel Cron job checks the OGE API weekly for new filings. The pipeline parses new PDFs, validates the data and inserts it into the database. Email alerts notify the admin of new filings, errors, credit exhaustion or low-confidence parses. A public feedback form lets anyone report data errors.
Initial data extraction used Claude Opus for maximum accuracy on scanned documents. Ongoing parsing uses Claude Sonnet with OpenAI cross-verification. Official summaries are AI-generated from parsed data and reviewed for accuracy. The application was built by Trevor Brown with the assistance of Claude Code. All AI outputs are verified against source documents — no AI-generated data is presented without a human-verifiable source.
Key facts about executive branch financial disclosure, sourced from federal law, OGE data and published investigations.

Built by Trevor Brown, investigative data journalist turned web developer. 15 years of political reporting, most recently six years covering elections, dark money, financial disclosures and government accountability at Oklahoma Watch. This project bridges both worlds — journalism instinct driving a developer tool.
This project uses AI at several stages. In the interest of transparency, here is exactly where and how.
We use natural-pdf (by data journalist Jonathan Soma) to extract text from every page of every PDF, then Claude Opus parses each page into structured data. This page-by-page approach handles scanned documents and avoids token limits. All parsed data is validated against source PDFs through automated checks.
The plain-English summary on each official's page is AI-generated from their parsed transaction data. Summaries describe what the data shows — they do not make editorial judgments. Each is reviewed for factual accuracy.
Articles in the "In the News" sections are collected via AI-assisted web search across major outlets (ProPublica, CNBC, NOTUS, Bloomberg, etc.). Every linked article is a real, published piece — no AI-generated news content.
Built by Trevor Brown with the assistance of Claude Code, Anthropic's CLI development tool. Architecture, design and editorial decisions are human-directed.
AI does not generate or fabricate transaction data. It does not make editorial judgments about whether trades are legal or ethical. It does not determine which officials to track or how to present findings. All data traces back to a government-filed PDF.
The full dataset is available for journalists, researchers and anyone who wants to work with it. Download as CSV or JSON. Includes all transactions, official metadata and ticker mappings. Federal government data carries no copyright.
Open Cabinet is open source under the MIT License. The code, data pipeline and research are available on GitHub. Found a bug or data error? Open an issue or email trevorbrown.web@gmail.com.
Found a data error, missing official or bug? We review every submission. Your feedback helps keep this tool accurate.
This tool is for informational and journalism purposes only. Nothing here constitutes investment advice. Asset values and transaction amounts are reported in ranges as required by federal law. This database may not include all executive branch filers. Data sourced from the U.S. Office of Government Ethics under the Ethics in Government Act (5 U.S.C. Section 13107). Federal government documents carry no copyright (17 U.S.C. Section 105).