AI-powered congressional satire. We track real bills from Congress.gov, score them on an editorial Absurdity Index (1-10), and pair them with satirical alternatives that somehow make more sense.
Live site: absurdityindex.org
Follow along: @CartelPirate on X
A static site built with Astro that catalogs real congressional legislation alongside satirical "not-bills." Each real bill gets an absurdity score, a plain-English summary, and a breakdown of what it actually does vs. what its name implies.
- 39 bills tracked (29 real, 6 sensible satire, 4 absurd historical)
- Full-text search via Pagefind
- Embed widget and JSON API for developers
- Dark mode, mobile-friendly, government-parody aesthetic
An autonomous social media management system for X/Twitter. Generates satirical content about congressional bills, runs it through a 5-layer safety system, and posts it — all driven by Claude.
cli/
├── commands/ # post, draft, engage, monitor, review, schedule, analytics, status
├── modules/
│ ├── content/ # Claude-powered content generation with 7 prompt types
│ ├── safety/ # "Hot Pot Detector" — blocklist, partisan lean, toxicity, quality
│ ├── x-api/ # Twitter API client + Playwright browser automation
│ ├── trends/ # RSS + X API trend aggregation and scoring
│ ├── engage/ # Congressional tweet scanning + quote-tweet engine
│ ├── scheduler/# Queue management and cooldown tracking
│ └── state/ # SQLite database for posts, analytics, safety logs
The CLI is designed to run as a Ralph Loop — an iterative AI development pattern where Claude Code receives the same prompt repeatedly and sees its own prior work. See RALPH-PROMPT.md for the full autonomous prompt.
Each iteration, Claude:
- Checks account status (posts today, queue, trends, engagement opportunities)
- Decides what to do based on a priority framework
- Generates content, runs safety checks, posts or drafts
- Signals completion with a promise tag
A Chrome extension (extension/) that overlays Absurdity Index scores on Congress.gov bill pages. Manifest V3.
A Python menubar app (k8s-monitor/) that monitors the self-hosted CI/CD pipeline running on Kubernetes with Argo Workflows.
| Layer | Technology |
|---|---|
| Site | Astro 5, MDX, Tailwind CSS v4 |
| Search | Pagefind |
| CLI | TypeScript, Commander.js, better-sqlite3 |
| AI | Claude (Anthropic SDK) for content generation + safety |
| Social | X/Twitter API v2 + Playwright for browser automation |
| Hosting | Cloudflare Pages |
| CI/CD | Argo Workflows on self-hosted Kubernetes |
- Node.js 20+
- npm
npm install
npm run dev # Dev server at localhost:4321
npm run build # Production build + search indexing
npm run preview # Preview production buildcd cli
npm install
cp .env.example .env # Fill in your API keysRequired environment variables (see cli/.env.example):
X_BEARER_TOKEN— X API bearer token (read-only operations)ANTHROPIC_API_KEY— Claude API key (content generation + safety)- Browser auth — Run
npx tsx src/index.ts loginto authenticate for posting
Optional:
CONGRESS_API_KEY— Congress.gov API (for fetching new bills)
# From the cli/ directory
npx tsx src/index.ts status # Full state snapshot
npx tsx src/index.ts post bill --slug real-hr-25 --type bill-roast --dry-run
npx tsx src/index.ts monitor once # Scan trends
npx tsx src/index.ts engage scan # Find engagement opportunities
npx tsx src/index.ts analytics summary # View performance metrics# From the project root
CONGRESS_GOV_API_KEY=<key> npm run fetch-bills
npm run fetch-bills -- --bill 119/hr/25 # Fetch a specific bill
npm run fetch-bills -- --bill=119/hr/25 # Equivalent inline form
npm run validate # Validate all bill MDX files
npm run validate:ci # CI gate (warnings fail in strict mode)npm run verify
npm run validate:ci
npm run security:ci
npm run build
npm run build --prefix cli
npm test --prefix cliBills live in src/data/bills/ as MDX files. Three types:
- Real bills (
real-*.mdx) — Fetched from Congress.gov with absurdity scores - Sensible bills (
hr-*.mdx,s-*.mdx) — Satirical alternatives that make more sense - Absurd bills (
ra-*.mdx) — Historical laws that are genuinely absurd
Templates for new bills are in src/data/bills/_templates/.
The CLI's "Hot Pot Detector" runs every generated post through 5 checks before it can go live:
| Check | Score Range | What It Catches |
|---|---|---|
| Blocklist | 0 or 100 | Slurs, threats, banned terms |
| Tragedy Radar | 0–30 | References to recent tragedies |
| Partisan Lean | 0–25 | Content favoring one party |
| Toxicity | 0–25 | Mean-spirited or inflammatory tone |
| Content Quality | 0–20 | Low-effort or unfunny content |
Verdicts: SAFE (0-20) posts automatically, REVIEW (20-40) goes to human queue, REJECT (40-100) is blocked.
├── src/
│ ├── components/ # Astro components (bills, layout, UI)
│ ├── data/bills/ # MDX bill content
│ ├── layouts/ # Base and bill layouts
│ ├── pages/ # Routes, API endpoints
│ └── styles/ # Tailwind v4 theme
├── cli/ # Autonomous social media CLI
├── extension/ # Chrome extension for Congress.gov
├── k8s-monitor/ # Kubernetes CI/CD monitor
├── scripts/ # Bill fetching and validation
├── RALPH-PROMPT.md # Autonomous Ralph Loop prompt
└── AGENTS.md # Architecture reference