An AI Campaign That Never Sleeps

An AI Campaign That Never Sleeps

An AI Campaign That Never Sleeps

An AI Campaign That Never Sleeps: Better Than 95% of Static Sites

What if a political campaign could run itself? Not the strategy or the handshakes, but the relentless daily grind of content creation, social media posting, and website updates. I built a system that does exactly that—a fully automated campaign platform that crawls news, generates on-brand responses, creates images, and posts to social media, all without human intervention.

The proof of concept? Theodore Roosevelt running for President in 2028.

And here's the kicker: This automated campaign is already better than 95% of real campaign websites.

The Campaign Website Problem

Most campaign websites follow a predictable death spiral:

  • Day 1: Launch with excitement. Fresh design. Bio page. Donation form. A single blog post announcing candidacy.
  • Week 1: Campaign manager promises "we'll post weekly updates."
  • Month 1: Last blog post was 3 weeks ago. News section shows press release from launch day.
  • Month 3: Website becomes a static brochure. Volunteer signup form goes unchecked. Social media feeds embedded on homepage show tweets from May.
  • Election Day: Site still says "Join us at the Labor Day parade!"

Why? Because campaigns have no time for website updates. Staff are doing voter contact, fundraising calls, event logistics, and crisis management. Writing blog posts ranks somewhere below "organize the supply closet."

Meanwhile, this fully automated campaign updates itself every single day at 2pm with zero human intervention.

What the Platform Actually Does

The system operates as a complete content pipeline:

  • News Crawling - Every day at 2pm, the system crawls Politico for breaking political news
  • Story Selection - AI agents analyze and rank stories by relevance to the campaign's platform
  • Content Generation - Multiple AI agents collaborate to write responses in the candidate's voice
  • Image Creation - AI generates photorealistic campaign images tailored to each story's location
  • Social Distribution - Content posts automatically to Twitter/X and Bluesky
  • Website Updates - The campaign website pulls fresh content dynamically from Firebase—no rebuild needed

Check the live campaign: electteddy.netlify.app

@ElectTeddy on Twitter/X showing automated daily posts

Daily automated posts on Twitter/X

@electteddy on Bluesky with AI-generated campaign content

Cross-posted to Bluesky

Elect Teddy Roosevelt 2028 campaign website showing fresh AI-generated content

The Multi-Agent Architecture

This isn't a single AI doing everything. It's a coordinated team of specialized agents:

The Curator Agent analyzes incoming news articles and scores them based on:

  • Relevance to the campaign platform
  • Timeliness and news cycle position
  • Potential for meaningful candidate response
  • Geographic and demographic reach

The Content Generator takes the selected story and produces:

  • A full article written in the candidate's historical voice and policy positions
  • Social media posts optimized for each platform's character limits and culture
  • Hashtags and engagement hooks

The Image Director creates visual prompts that:

  • Place the candidate in location-specific settings from the story
  • Rotate through 5 different campaign scenarios (rallies, factory visits, diner stops, walking tours, community meetings)
  • Maintain consistent candidate appearance while varying composition
AI-generated image of Theodore Roosevelt at a campaign rally

The Distribution Coordinator handles:

  • Platform-specific formatting
  • Optimal posting times
  • Duplicate detection to prevent repeat content
  • Error recovery and fallback handling

How the Website Actually Works

Here's where it gets interesting. Traditional campaign websites require rebuilding and redeploying whenever content changes. This platform eliminates that entirely.

The website is a static shell that loads all content dynamically from Firebase:

  • Homepage shows the latest 3 news articles
  • News and Press sections query Firestore in real-time
  • Individual articles load by URL slug
  • A browser refresh shows new content instantly—no build, no deploy, no waiting

When the pipeline generates a new article at 2pm, it's immediately visible on the website. The Netlify redirects route any /news/* URL to a template page that fetches the right content from Firebase based on the slug.

This is the fundamental difference between a static campaign site frozen in time and a living, breathing campaign presence.

Why 95% of Campaigns Can't Do This

Real campaigns struggle with website updates for three reasons:

1. Technical Bottleneck - Most campaign websites are WordPress or SquareSpace. Adding content means logging into an admin panel, formatting in WYSIWYG editors, uploading images, and clicking publish. Then waiting for cache clearing. If the site is Jamstack (like most modern political sites), every update requires a rebuild and redeploy—10 to 30 minutes of waiting.

2. Human Bottleneck - Who actually writes the content? The candidate? Too busy. Campaign manager? Drowning in logistics. Communications director? Maybe, if they're not handling a crisis. Volunteer? Quality control nightmare. By the time someone writes, edits, gets approval, and publishes, the news cycle has moved on.

3. Strategy Bottleneck - What should the campaign say about breaking news? That requires candidate input, policy team review, and political calculus. By the time consensus is reached, it's tomorrow.

This automated system eliminates all three bottlenecks:

  • Technical: Firebase dynamic content = instant updates
  • Human: AI generates content in candidate's voice = zero staff time
  • Strategy: AI trained on candidate's platform = consistent message discipline

Duplicate Detection: Never Repeating Itself

One critical feature: the system never posts the same story twice. Before selecting a story, the pipeline:

  • Checks if the URL has already been processed
  • Compares titles for similarity (>50% word overlap = duplicate)
  • Maintains a 24-hour rolling window for recent content

This prevents the embarrassing situation of a campaign account posting the same take four times in one day—something human-run social media accounts do constantly.

Image Variety: Solving the Repetition Problem

Early versions had a problem—every image looked the same. Teddy Roosevelt pointing at a crowd, sleeves rolled up, over and over.

The fix was constraining the AI's creativity in the right places. Now the system randomly selects from 5 distinct scenario templates:

  • Outdoor Rally - Speaking from a platform, khaki field jacket
  • Factory Visit - Hard hat, shaking hands with workers
  • Community Center - Sitting in a circle with families
  • Walking Tour - Strolling main street with locals
  • Diner Stop - At the counter with coffee, chatting with patrons

The AI can only fill in location details—it can't override the scenario. This creates genuine visual variety while maintaining brand consistency.

The Tech Stack

  • Firebase Functions - Serverless compute for all pipeline stages
  • Firestore - Real-time database for content storage and state management
  • OpenAI GPT-4 - Content generation and story analysis
  • Google Gemini - Secondary AI for prompt engineering
  • Fal.ai (Imagen 4) - Photorealistic image generation
  • Twitter API v2 - Social posting with media upload
  • Bluesky AT Protocol - Decentralized social posting
  • Netlify - Static site hosting with dynamic content loading

What a Real Campaign Could Do With This

This isn't just a tech demo. A real campaign could deploy this platform and:

Save 20+ hours per week on content creation. No more morning meetings about "what should we post today?"

Respond to news in minutes, not hours. The pipeline can run on any schedule—hourly during breaking news cycles if needed.

Maintain perfect message discipline. The AI is trained on the candidate's positions, voice, and policy platform. Every piece of content stays on-brand.

Scale across platforms effortlessly. Add Instagram, Threads, LinkedIn—each just needs an API integration and platform-specific formatting rules.

Never miss a geographic moment. Story about flooding in Iowa? The system generates an Iowa-specific image and response automatically.

Free up staff for high-value work. Let humans do strategy, fundraising, and voter contact. Let AI handle the content treadmill.

Try It Yourself

The Roosevelt 2028 campaign runs live at electteddy.netlify.app. Check the news section—everything you see was generated and posted automatically.

Follow the campaign on social media:

The codebase demonstrates that a fully automated campaign presence isn't science fiction. It's a Firebase project, a few API keys, and some well-orchestrated AI agents.

The future of political communication isn't humans versus AI. It's humans with AI, doing more with less, reaching more voters, and responding faster than ever before.

Bully!

Built with Firebase, OpenAI, Fal.ai, and an unhealthy obsession with automating everything. This project was part of my ongoing exploration of multi-agent AI systems—see also Campaign Agents In A Box and Ship Week.