Skip to main content

About

Monitor the trades politicians disclose

This project is deliberately narrow: collect congressional financial disclosures, extract the reported transactions, keep ownership and filing dates intact, and link the result back to the source document. It is a disclosure monitor, not a legislative database or a trading recommendation service.

Why this exists

The disclosure requirement already worked: the reports are filed and they are public. What failed was everything after that. A filing arrives as a document about one member, and the questions people actually have — which industries are being bought, in which month, by which filers and reported account owners — can only be answered by reading across thousands of them at once.

So the gap is not access, it is legibility. The intent here is a free, public, advertising-supported reference that does the reading-across and shows its work, rather than a paid terminal or a feed of trade-alert tips. The measure of whether it worked is whether a reader can click any number and land on the filing it came from.

The counterweight to that ambition is the rest of this page. A site like this fails in one specific way: it becomes more confident than its sources. Disclosures are coarse, late and self-reported, and dressing them up as precise portfolio intelligence would produce something worse than nothing — false numbers about named people, in a subject where they get repeated.

Where the data comes from

The trades come from one place: the periodic transaction reports published by the Clerk of the U.S. House of Representatives, filed under the STOCK Act of 2012. Those are the primary records, read directly. There is no scraped aggregator in the chain and no tip line.

The U.S. Senate Electronic Financial Disclosure system publishes the other half of Congress, and this site does not read it. Access to it is conditioned on the Ethics in Government Act’s restriction on using disclosure reports for a commercial purpose (5 U.S.C. app. § 105(c)), and that question is unsettled here. Until it is settled, nothing on this site covers a senator — so a count that looks like Congress is the House.

Two properties of the source shape everything downstream. A disclosure gives a dollar range in the standard form; rare amendments state an exact amount, which we retain as filed. And it is filed after the fact, with reporting and publication delays that can exceed 45 days. A site that quietly papers over either one can produce much more impressive-looking output than this one does.

The filings also contain ordinary mistakes, and those are kept too. Date anomalies are stored exactly as filed rather than silently corrected. Changing them would mean guessing at what was meant and then presenting that guess as a disclosure.

The sector itself is not in the filings at all. A disclosure names an asset and usually a ticker; it does not say what industry the company is in. That comes from the company’s own industry classification as published by the Securities and Exchange Commission, and the grouping of those classifications into ten sectors is an editorial judgement made here rather than something anybody filed. Trades in anything that is not company stock, and companies that grouping does not cover, are left out of the grid rather than assigned a sector by guesswork.

Five rules the code already enforces

These are not a mission statement. Each one is a constraint written into the schema, the page loader or the markup, and each was written before there was any data for it to govern — which is the only order in which such a rule ever survives contact with a deadline. They now have real filings to govern, and none of them was loosened to let those filings through.

Figures are counts of disclosed trades, not dollar estimates.
The table behind the sector page has no money column of any kind, and that is a deliberate schema decision rather than an oversight. A cell says how many transactions were disclosed in that sector that month. It does not say how much was spent, because the filings do not say that either.
A disclosed amount stays as filed; an estimate never replaces it.
The standard form reports a bracket; rare amendments can state an exact value. Any single number derived from a bracket is an estimate, and the only honest question is whether it is labelled as one. This public record preserves the filed range or exact amended value; it does not currently replace either with a modeled dollar amount. What we still refuse: a gain on a sale, because the record never showed us what it cost, and a portfolio total, because a transaction report records transactions and never holdings.
Trades are dated by when they happened, not by when they were reported.
The STOCK Act uses transaction and notification dates to set reporting deadlines. Late reports can arrive more than 45 days after a trade. Filing-month and trade-month totals therefore answer different questions: the sector grid groups activity by the month of the trade.
A page that cannot get its data refuses to render.
A missing cell and a real zero look identical to a reader, so the loader counts what it got back and throws if the window is incomplete. You get an explicit “we cannot show this right now” instead of a grid of zeros that reads as “Congress stopped trading.” Showing you nothing is a bug. Showing you a confident zero is a lie.
The menu only links to pages that exist.
Section names in the masthead that are not yet links are plain grey text, not links to a coming-soon page. A navigation bar full of dead ends is a worse promise than one that shows you exactly how much has been built.

What is not built yet

The specific version, because a vague one is just a nicer way of overstating things.

  • The Senate

    Half of Congress is missing. Only House filings have been read, for the reason given above, and there is no partial Senate coverage hiding anywhere on the site. Anything here that reads as a statement about Congress is a statement about the House.

  • Image-only reports that cannot be read automatically

    Image-only PTRs are recorded rather than dropped, and their current count is published in the validated coverage panel above. No unaudited OCR result becomes a public trade. Treat structured transaction counts as floors rather than totals.

  • Production refresh activation

    A nightly House ingest and independent freshness alert are implemented, but the hosted database must complete its documented schema reconciliation and the GitHub production secrets and billing gate must be verified before that schedule can be called active.

  • A correction channel

    Each rendered transaction now links to the original House document, but there is still no monitored corrections inbox for a parsing or identity problem. The source lets a reader verify the row; it does not yet provide a workflow for reporting a disagreement.

  • Profile, onboarding and administration screens

    The Supporter workspace includes watchlists, saved searches, collections, comparisons, alerts, exports, API access, teams and billing. The root profile, onboarding and administrative screens remain placeholders and are not represented here as finished features.

  • A way to contact us about anything but security

    There is no general inbox and no contact form — a message box needs somewhere to deliver to, and there is nowhere, so printing one would be sending your mail into a void. The contact page sets out what has a route and what does not; the security address below is the only one that works.

What it costs, and what it collects

The public record is free. Supporter is the only paid plan, at $9.99 per month. It sells convenience around the record: no ads, watchlists, personalized briefs and alerts, saved research, comparisons, exports, API access and shared collections. It does not unlock a filing a free reader cannot open.

Public reading requires no account, and the public pages set no analytics or account cookies and load no third-party analytics pixel. Optional first-party measurement, when enabled, stores only anonymous daily category totals and creates no reader profile. Optional account routes use necessary session cookies and hCaptcha. Carefully approved advertising may support free reading; the ad loader checks a signed-in user’s entitlement first and fails closed, so a Supporter session makes no ad-network request.

What this is not, and how to reach us

This project is not affiliated with, endorsed by, or connected to the U.S. House of Representatives, the U.S. Senate, or any other government body. It is an independent reading of records those bodies publish.

It is also not investment advice. Nothing here is a recommendation to buy or sell anything. A disclosure describes a trade that already happened, in a range, weeks late, and treating that as a signal to trade on is a decision you are making without us.

For security reports, email security@ourelectedportfolios.com. That is the only working address, and it is monitored for security issues only — a correction or a general question sent there will not reach the right place. There is no general inbox yet; the contact page says which requests have a route and which do not. If you came looking for somewhere to report that a number here is wrong, there is no route for that yet. That is a gap rather than a position: the sector grid now carries counts taken from real filings, and a real count can still be wrong.