back to today
methodology · v1.0

how we read the weather

Every reading on the front page is computed from public data, sourced from organizations whose work we did not write and could not replace. This page shows the math.

What this is

The Civic Forecast treats democracy like weather. It pulls live numbers from six independent civic-monitoring sources every morning, runs them through documented thresholds, and publishes a single page showing what the day's conditions look like.

Six indicators were chosen because each measures a different system that healthy democracies need to be working: a free press, functional courts, transparent government, a deliberative legislature, freedom of assembly, and rule-making accountability. When any one of them is under unusual stress, the page reflects that.

The vocabulary is meteorological by design. Words like elevated and turbulent describe pressure systems, not partisan judgments. The same word would appear under any administration if the underlying numbers warranted it.

The six indicators

Each indicator is a computed reading from a public dataset. Here are the sources, the math, and the status thresholds.

indicator 01

PRESS — Press freedom incidents

Counts of journalist arrests, assaults, equipment seizures, subpoenas, and denials of access in the United States.

Source
U.S. Press Freedom Tracker (a project of the Freedom of the Press Foundation and the Committee to Protect Journalists).
API
Public JSON feed at pressfreedomtracker.us/api/. Updated continuously.
Pull cadence
Every 6 hours.
Computation
Sum of incidents in the past 7 days, compared to a rolling 90-day average.
Vocabulary
clear · routine · elevated · severe
indicator 02

COURTS — Federal court rulings

Rulings on civil rights, voting access, executive power, and First Amendment matters.

Source
CourtListener by the Free Law Project.
API
REST API at courtlistener.com/api/ — free with registration, 5,000 calls/day.
Pull cadence
Daily at 04:00 ET.
Computation
Count of relevant rulings in the past 7 days. Each ruling is tagged by category (civil-rights, voting-rights, executive-power, First Amendment) and classified as expanding or restricting with a confidence score. Status reflects both balance and volume.
Vocabulary
settled · routine · unsettled · turbulent
indicator 03

SUNLIGHT — FOIA response patterns

How transparent the federal government is, measured by FOIA response rates and denial patterns.

Source
MuckRock.
API
muckrock.com/api_v1/ — free.
Pull cadence
Daily at 04:00 ET.
Computation
Percentage of FOIA requests filed in the past 30 days that were denied, redirected, or stalled past statutory response deadlines. Federal level only for v1.
Vocabulary
clear · translucent · opaque · sealed
indicator 04

CHAMBER — Functional state of Congress

Whether the deliberative body is deliberating.

Sources
ProPublica Congress API and GovTrack.
API
Both free; ProPublica requires a free key.
Pull cadence
Daily at 04:00 ET.
Computation
Composite of: days in session this week + count of recorded votes + ratio of party-line vs bipartisan votes + presence of any quorum-call irregularities.
Vocabulary
in session · recess · stalled · paralyzed
indicator 05

STREETS — Civic activity outside institutions

Protests, demonstrations, and any associated use-of-force incidents.

Source
ACLED — Armed Conflict Location & Event Data Project.
API
Free with registration for non-commercial use.
Pull cadence
Daily at 04:00 ET. (ACLED has roughly a 1-week reporting lag for U.S. events; the reading reflects this.)
Computation
Count of protest events in the past 7 days · count of cities with events · count of use-of-force incidents reported. Geographic distribution feeds the atmospheric map.
Vocabulary
quiet · active · turbulent · convulsing
indicator 06

RECORD — Federal Register activity

The rule-making and executive-action pulse of the administrative state.

Source
Federal Register.
API
federalregister.gov/developers/api/v1 — free, no key.
Pull cadence
Daily at 04:00 ET.
Computation
Count of new rules issued, comment periods opened/closed, executive orders, and presidential proclamations in the past 7 days. Compared to rolling 90-day baseline. Status reflects pace, not direction.
Vocabulary
steady · accelerating · surging · floodtide

Status vocabulary & color mapping

Status words are deliberately archaic-poetic-meteorological. They are calibrated so that no individual word reads as partisan. The same vocabulary applies regardless of who is in power.

clear · quiet · settled · steady · in session · translucent CLEAR
routine · mild · recess MILD
elevated · active · unsettled · accelerating WATCH
turbulent · opaque · surging · stalled WARNING
severe · sealed · floodtide · paralyzed STORM
historic · convulsing · unprecedented SEVERE

SEVERE-level readings are reserved for genuine multi-decade outliers. They appear rarely. Their presence on the front page is itself news.

The daily reading sentence

Each morning at 06:00 ET an LLM (Anthropic Claude Haiku) is given the day's six readings and asked to produce one sentence. The sentence:

  • Is always grammatically a weather report.
  • Never names a party, person, or administration.
  • Is always under 18 words.
  • Always describes geographic and atmospheric pattern, not specific events.

The full prompt template is versioned in the project repository. Any change to the prompt is logged in the changelog below. The advisory paragraph is generated by the same architecture with the same constraints, picking the single most consequential delta of the past 24 hours.

The Civic Pressure Index (CPI)

The single number you see at the top of the page (e.g. 62) is the Civic Pressure Index. It is a weighted composite of the six indicators, normalized 0–100, where 0 is calm under all conditions and 100 is historic on all six axes simultaneously.

It is not a quality-of-democracy score. It is a pressure reading. A high CPI means many systems are under unusual stress at once. A low CPI means most systems are running near baseline. CPI does not say whether the country is well-governed. It says whether the air pressure is rising.

Weights are documented in the open-source pipeline. Default weights are 1.0 for each indicator, but PRESS and SUNLIGHT carry a slight uplift in volatility because their effects compound the others.

The atmospheric map

The map is not a state-by-state choropleth. It renders each indicator's events as atmospheric pressure regions — soft, blurred, semi-transparent color zones that overlap and blend additively. A region that is both press-incident-elevated and protest-active will show a richer mixed color where the regions overlap. The whole thing drifts and pulses gently because weather is alive.

Geography is rendered with the Albers USA projection from the d3-geo / us-atlas library. Storm centers (the most intense cells) are marked with a small pulsing dot. The map updates whenever the underlying data updates.

What the page does not do

  • It does not interpret events. It reports conditions.
  • It does not endorse or oppose any party, candidate, or policy.
  • It does not track international civic conditions. (V1 is U.S. only.)
  • It does not save anything about your visit. There is no account, no email capture, no analytics, no third-party tracking.
  • It does not predict tomorrow. Forecasts of the future would require a different methodology and a much higher burden of evidence.

The integrity of this practice depends on the methodology being open. Every claim on the front page is traceable to a specific line on this page. If you find an error, the source repository is public — file an issue.

Changelog

2026-05-01 v1.0 published. Six indicators, daily cadence, U.S. only. No prior versions in production.
future State-level breakouts, ambient sound layer, no-account email subscription.

Credits

This project would not exist without the daily, often unfunded work of the organizations whose data feeds it. None of these organizations endorse the Civic Forecast; their work simply makes it possible.

The geography is drawn with us-atlas by Mike Bostock. The site is built and maintained by Civic Designers, a 501(c)(3). Source code is open under Apache 2.0.