The "Congress Tracker" Engine

Copy the trades of power—and build an audience doing it.

The Play: Politicians file financial disclosures with 45-day delays. By the time the public sees them, the trades are old news. This system scrapes, parses, and delivers the top 10 most notable trades daily—turning regulatory filings into a signal stream your audience actually wants.

Why This Works: STOCK Act disclosures are public but buried. The data is scattered across multiple sources, filed in inconsistent formats, and nearly impossible to parse at scale. Anyone who surfaces this information cleanly becomes the trusted source. And everyone wants to know what Nancy Pelosi bought.

The Implementation Stack:

Category

Tool

Notes

Scraping

Puppeteer + Browserbase

Handles CAPTCHA-protected gov sites

Parsing

GPT-4 via API

Extracts structured trade data from PDFs

Storage

Supabase

PostgreSQL with real-time subscriptions

Delivery

Beehiiv + GPT

Auto-generates daily briefings

Extension

Chrome MV3

Surfaces trades in real-time while browsing

Step 1: Browserbase (The Scraper)

// scrape_disclosures.js
const { chromium } = require('playwright');

async function scrapeDisclosures() {
  const browser = await chromium.connectOverCDP(process.env.BROWSERBASE_URL);
  const page = await browser.newPage();
  await page.goto('https://disclosures-clerk.house.gov/');
  const filings = await page.$$eval('.filing-row', rows => 
    rows.map(r => ({
      name: r.querySelector('.name').innerText,
      date: r.querySelector('.date').innerText,
      pdf_url: r.querySelector('a').href
    }))
  );
  return filings;
}

Step 2: GPT-4 (The Parser)

// parse_disclosure.js
const prompt = `Extract all stock trades from this disclosure:
- Ticker symbol
- Transaction type (buy/sell)
- Approximate amount range
- Transaction date
Return as JSON array.`;

const trades = await openai.chat.completions.create({
  model: "gpt-4",
  messages: [{ role: "user", content: prompt + pdfText }],
  response_format: { type: "json_object" }
});

Step 3: Supabase (The Database)

CREATE TABLE trades (
  id SERIAL PRIMARY KEY,
  politician TEXT,
  ticker TEXT,
  type TEXT,
  amount_range TEXT,
  trade_date DATE,
  disclosure_date DATE,
  created_at TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_trades_ticker ON trades(ticker);
CREATE INDEX idx_trades_politician ON trades(politician);

Step 4: Daily Signal Generation

// generate_daily.js
const topTrades = await supabase
  .from('trades')
  .select('*')
  .gte('disclosure_date', yesterday)
  .order('amount_range', { ascending: false })
  .limit(10);

const newsletter = await openai.chat.completions.create({
  model: "gpt-4",
  messages: [{
    role: "user",
    content: `Write a 300-word briefing on these trades: ${JSON.stringify(topTrades)}`
  }]
});

Step 5: Chrome Extension (The Surface)

Build a MV3 extension that highlights any ticker on any webpage with politician trading activity. When users see $NVDA mentioned, they instantly see: "Rep. X bought $500K–$1M on Jan 15."

The Result:

  • Audience growth: Congressional trading content gets 10x engagement versus standard market analysis

  • Trust building: You become the transparency source—not just another finance commentator

  • Monetisation: Premium tiers for real-time alerts, API access for quant funds, sponsorship from fintech apps

One cold-call PDF. One automated pipeline. One audience that grows itself.

Comments

Avatar

or to participate