Skip to content
Serafin Sanchez
Assembly Required — plain-language coverage of the Colorado legislature preview

Assembly Required — plain-language coverage of the Colorado legislature

A free, nonpartisan news site that tracks every bill in Colorado’s 2026 legislative session — plain-English summaries, daily status updates, and business-opportunity analysis — written by a 15-agent AI newsroom and published as a weekly newsletter.

Next.js 16
React 19
InstantDB
Claude Agent SDK
AI Agents
SEO/AEO

Project Overview

Assembly Required is a free, nonpartisan news site that covers the Colorado state legislature. It tracks every bill in the 2026 General Assembly session and turns each one into a plain-English read: what the bill actually does, where it stands, who's behind it, and — for entrepreneurs — what business opportunity it might create. It's built for busy Colorado residents who want to know what their legislature is doing without reading statute.

The premise is that statehouse news is both important and unreadable. The real action is at the state level — housing, healthcare, taxes, schools — but it's buried in bill text, fiscal notes, and committee calendars that no normal person has time to parse. Assembly Required does the parsing: it watches the whole session, explains each bill in human language, and ships the week's most important moves as a newsletter.

The live site — a newspaper-style bill tracker for the 2026 Colorado General Assembly assemblyrequired.co — every bill gets a headline, a status, and a plain-language story.

How It Works

The product is two systems sharing one database. A backend AI newsroom does the reading and writing; a public Next.js site does the publishing.

🏛️ Track the whole session

  • A daily Vercel cron scrapes the bill index from leg.colorado.gov, diffs it against the database, and pulls fresh details for anything that changed — so status, sponsors, and committee assignments stay current without anyone touching it
  • Each bill carries its status and history, sponsors, committee, subject tags, a link to the official text, and its fiscal note

✍️ Explain it in plain language

  • Every bill gets a plain-English summary and a full analysis article — the legalese translated into what it means and who it affects
  • An opportunity signal flags bills that open a door for businesses and entrepreneurs, which is the angle most legislative trackers ignore
  • Bills are organized into topic pages — education, healthcare, housing, taxation, criminal justice, and more — so readers can follow only what they care about

📰 Publish and send

  • The site is a clean, newspaper-style front page: a featured story, a "latest" rail, topic filters, and search across the session
  • The same analysis is assembled into a weekly newsletter (Beehiiv) for readers who'd rather have it land in their inbox than check a site

The Newsroom Behind It

The writing isn't a single prompt. The analysis and the newsletter are produced by a 15-agent newsroom built on the Claude Agent SDK — an Editor-in-Chief (Opus) that orchestrates fourteen subagents across four stages: content acquisition, intelligence, creative, and production.

The model is matched to the job — Haiku for high-volume, low-reasoning work (feed scanning, transcription, production), Sonnet for writing and analysis, and Opus for the high-leverage calls (orchestration, voice review, editorial assignment). Agents reach the outside world through the Model Context Protocol — seven pre-built MCP servers for the database, RSS, transcription, social, and web search — so each agent stays small and does one thing. The newsroom writes its bill analysis straight into the shared database, where the public site picks it up.

SEO & AEO — built to be found by people and by AI

A statehouse tracker is only useful if people (and now AI agents) can find the right bill. So discovery is a first-class feature:

  • Structured data on every bill — JSON-LD using schema.org Legislation, Article, FAQPage, NewsMediaOrganization, and Dataset, so search engines and assistants can read a bill page as data, not just prose
  • Answer-engine optimization — a llms.txt site overview and a dynamic llms-full.txt that serves the entire bill dataset as plaintext, plus robots.txt explicitly welcoming the major AI crawlers (GPTBot, ClaudeBot, PerplexityBot, and others)
  • AI-referral analytics — GA4 is wired to track traffic arriving from ChatGPT, Perplexity, Gemini, Claude, and Copilot, so the AEO work is measured, not assumed

Technical Architecture

  • Next.js 16 (App Router) with React 19 and TypeScript (strict) for the public site — server components fetch bill data, interactive filtering and search live in client components
  • InstantDB is the shared spine: the newsroom writes bill analysis (articleContent, plainEnglishSummary, opportunitySignal) and the site reads it — two repos, one database, one INSTANT_APP_ID
  • ISR keeps bill pages fast and fresh — pages revalidate on a timer, and the cron route calls revalidatePath after each daily update, with an on-demand revalidate webhook for external tools
  • Tailwind CSS 4 with a custom editorial theme — DM Sans and Source Serif 4 on a cream/navy palette for a newspaper feel
  • Deployed on Vercel, with the daily scrape running as a scheduled cron and the newsletter delivered through Beehiiv

Tech Stack Breakdown

Public site

  • Next.js 16 (App Router), React 19, TypeScript (strict)
  • Tailwind CSS 4, DM Sans + Source Serif 4 editorial theme
  • ISR, daily Vercel cron scraping leg.colorado.gov, Beehiiv newsletter

Newsroom (backend)

  • 15-agent newsroom on the Claude Agent SDK (Opus / Sonnet / Haiku by task)
  • 7 MCP servers (InstantDB, RSS, AssemblyAI, TwitterAPI.io, Exa, and production)
  • Writes plain-English summaries, full analysis, and opportunity signals

Data & discovery

  • InstantDB as the shared spine between both repos
  • JSON-LD (Legislation, Article, FAQPage, Dataset), llms.txt + llms-full.txt
  • robots.txt for 11 AI crawlers; GA4 AI-referral tracking

Why I Built It

State politics decides most of what touches daily life, and almost no one follows it — not because people don't care, but because the source material is unreadable and there's too much of it. The bet behind Assembly Required is that an AI newsroom can do the unglamorous 80% — reading every bill, tracking every status change, translating the legalese — so a Colorado resident only has to do the part that's actually worth their time: deciding what they think.

Related Projects

Other projects you might find interesting

Copydesk produces your weekly newsletter for you. Fifteen AI agents pull from your sources, decide what is worth covering, write it in your voice, edit it, and render a finished HTML email. You review it and hit send.
Next.js 16
React 19
Claude Agent SDK
+3
An open-source kit — a CLAUDE.md, a few skills and subagents, and a backlog format — that keeps AI coding agents on task, plus the site and 15-chapter manual that ship it.
Next.js 16
React 19
Neon Postgres
+3
A live polling app for the classroom. Ask a question, students join by link or QR with no account, and answers land in real time — so you hear from everyone, not just the loud ones. Formerly Cognivote.
Next.js 15
React 19
InstantDB
+3