XISLABS

Case study · Data platform · Claude agents and MCP

SavingAmerica.ai: the engine behind a live civic reading of all 50 states

SavingAmerica.ai reads public United States data as it is published, scores where civic activity is rising in each state, and answers questions about it with links back to the source. We built the engine that runs it. It has been live in all fifty states since 4 July 2026.

What is rising in State A this week?123Sources1Public record · Sample Register2News report · Sample Daily3Filing · Sample Commission
Illustration
Client
SavingAmerica.ai
Industry
Civic data and media
Engagement
Live since 4 July 2026
Our team
One engineer
What we built
Data ingestion, the scoring engine, enrichment, a knowledge graph, a REST API, an MCP server, and broadcast automation on Claude Managed Agents
What is the client's
The scoring method itself, which is its trade secret
AI in the product
Claude Managed Agents
Status
Live and running continuously
  • 50states covered, continuously
  • 11public data sources
  • 1,274state-and-topic readings
  • About 115,000evaluations a day

Operating figures as published by SavingAmerica.ai on its own site.

What SavingAmerica.ai is

SavingAmerica.ai measures civic activity in the United States. It reads public conversation and public records across all fifty states and scores how much civic movement is happening in each state and topic. A second score estimates how likely that movement is to be coordinated. The two are kept separate, so a loud state and a manipulated state are never confused.

The company takes no political side. In its own words: “We're not left. We're not right. We're Americans.”

The public product is a live national map, a signals feed, a published REST API and an assistant that answers questions from the record.

The SavingAmerica.ai home page: a live map of the United States with each state shaded and signal markers on several states, under the headline “For the first time in history, America can see itself.”
The public product at savingamerica.ai, captured in November 2026. We built the engine behind the reading.

The brief

The scoring method was fixed and confidential. Our job was the machine that runs it: everything from the moment a public record is published to the moment an answer cites it. That machine had to do three things at once.

  • Take new data sources without a rewrite. The source list was expected to keep growing.
  • Score continuously without re-reading history. At this volume, re-reading the archive on every cycle is too slow and too costly.
  • Make every number traceable. A published figure has to be rebuilt afterwards from the records behind it, so the company can defend it.

What we built

New sources by configuration.

Every source enters through one shared format. How often to read a source, its rate limits and how a publisher maps to a record are settings. Adding a publisher is a new row in a registry, and the list has grown into the thousands with the same ingestion code.

Source registrySourceKindSettingsNewswire feednewsevery 5 min · 60/minFederal registerrecordshourly · 30/minCampaign filingsfinancedailySample Gazettepublisherevery 15 minNew+ Add sourceSame ingestion code for every row
Illustration

Scores that do not re-read history.

Each state, topic and time window keeps a running baseline that updates as events arrive. The work per cycle stays the same on day one and day one thousand. Where the data is thin, the system lowers its own confidence and can decline to publish a figure.

Re-read the archiveeach cycleWork per cycle →Update asevents arriveWork per cycle →
Illustration

Enrichment that starts when a story does.

When detection opens a story, that event starts the work behind it: the narrative, the places, the people and organisations, and how they relate. A revision re-runs the same steps for that story alone, so no backlog builds between scheduled runs.

One record, and a graph built from it.

PostgreSQL holds the record: events, baselines, scores with their breakdowns, and the audit trail. The knowledge graph that users explore is built from that record and can be rebuilt from scratch at any time. A defect is fixed once, in the record.

Answers with citations.

A retrieval layer gives Claude agents search, lookup and graph tools over the Model Context Protocol and through the product's own API. Meaning-based search and keyword search run together. Every answer points to records the reader can open.

What is rising in State A this week?123Sources1Public record · Sample Register2News report · Sample Daily3Filing · Sample Commission
Illustration

Backfills as a routine job.

A replay layer re-processes any dated window. It runs as a dry run first, keeps a journal, and reports its cost before anything is written. Repair, fill and replace are separate kinds of run, so one job cannot overwrite another source's work.

From a public record to a cited answer

7 steps. Use the arrows to go through them.

How the AI is kept in check

  • Every answer has sources. The assistant answers from the record and links to the records it used.
  • It can say no. When the record cannot support an answer, the system says so and does not compose one.
  • Spending has a ceiling. Model and data costs are tracked per result against hard caps.
  • Answers are tested. An evaluation suite runs against the assistant, and the runs are published.

Broadcast automation

Three agents on Claude Managed Agents work together: one detects and scores signals, one decides when they go out, and one writes the script. Every signal passes a human approval step before anything is published. Approved signals go through an automated voice and video pipeline and stream to four platforms at once.

Results

What the client neededWhat runs today
National coverage from launch dayAll fifty states, live since 4 July 2026 and running continuously
A source list that can keep growing11 sources and thousands of publishers, added by configuration
Numbers it can defendEvery published figure can be rebuilt from the audit trail
An assistant people can trustAnswers link to their sources, and the assistant declines when the record falls short
A platform that runs unattendedAlarms checked against real production data, cost caps and a routine replay job
Under the hood: stack, API and how it was built

Stack: Python and FastAPI. PostgreSQL as the system of record, Neo4j for the graph, vector embeddings for search and object storage for archives. AWS, declared in Terraform, with an event bus and a queue per consumer.

API: a published, versioned REST API, public and gated. Examples: GET /map, GET /national, GET /signals/history, GET /graph/search. Endpoints with outside users are added or retired with notice.

AI: Claude Managed Agents with typed retrieval tools, served through a Model Context Protocol server.

How it was built:
  • Each rule's test is checked by breaking the rule and confirming the test fails.
  • Every alarm is confirmed to be receiving real data before it is trusted.
  • Anything tunable is a setting with a default, so calibration needs no deploy.
  • Queues, schedules, alarms and permissions are declared in code and reviewed before each change.
  • Claims with numbers in them are checked against production before they are made.

Confidentiality: the client's scoring method, including its formulas, weights and thresholds, is its trade secret and is not described on this page.

Need a data pipeline that runs without a team watching it?

Tell us what it has to read and what it has to produce on a 30-minute call. You leave with a plan and a cost, in writing.

Book a discovery call