What's new with the Political Temperature Index.
May 7, 2026
Better Recognition of US Foreign Policy Stories + Top Driver Detail Restored
- Stories about US military and intelligence action abroad are now correctly recognized as US-relevant. Previously, the foreign filter only treated diplomatic verbs (talks, negotiations, sanctions, treaties) as US-relevant when paired with a US identifier. So a headline like "US fires on Iranian-flagged tanker" or "U.S. Navy intercepts attack in Strait of Hormuz" would fail the test and get filtered as foreign even though the US is the actor. The recognition now also accepts military-action verbs (strikes, attacks, fires, intercepts, deploys, raids, troops, navy, destroyer, airstrike, war, hostilities) and intelligence/legal action verbs (intelligence, surveillance, cyber, investigation, designation, indictment, seizure). Plus a new structural pattern catches "U.S. + named institution" naming ("U.S. Navy", "U.S. Intelligence", "U.S. Central Command", "American Forces", "State Department") without enumerating each institution as a keyword. Foreign-only stories (Iran economy, Russia-Ukraine war without US involvement) still drop correctly.
- Top Driver story counts and source-breakdown counts are reliably populated again. When the post-publication review removed a driver and reranked the rest, the rerank step was rebuilding each surviving driver row but accidentally dropping the link to its source story cluster, the story count, and the freshness indicators. Result: every driver on a day with any rerank came back with no story count, no rising/declining indicator, and broken left/center/right coverage figures. The rerank now preserves every column it reads, with a regression test pinning down the column set so it can't silently shrink again.
- Post-publication review now respects search-discovery provenance before removing a story as foreign. When the search-grounded discovery layer injects or confirms a story at major or critical severity, the upstream search provider had the full source URL, summary, and page context. Previously the local foreign filter could overrule that based on a 5-word cluster name. Now if a flagged story's name appears in the same day's search-discovery results (injected or confirmed major/critical), the review logs the conflict for an operator to look at but does not auto-remove. Defense in depth on the broader US-actor recognition above.
- Search discovery now also extends its trust to moderate-severity stories with high US-relevance scores. The May 6 update opened the trust gate for major and critical stories at relevance 0.6 or above. Several legitimate moderate-severity stories (a Democratic mayor's resignation, an intra-party policy debate, a Secretary of State briefing) were still getting held back because they read as entity-vocabulary on the cluster name alone. The gate now also opens for moderate-severity stories at relevance 0.7 or above, which compensates for the weaker severity signal while keeping protection against stories where the upstream classifier had less confidence.
- Auto-generated cluster names now preserve the topic country reference when a colon split would otherwise drop it. A headline like "Iran Tensions: US Military Responds to Tehran Attacks" was previously being shortened to its first clause "Iran Tensions", which the foreign filter then rejected, leaving the dashboard to fall back to the original LLM-generated name (which could have been hallucinated). The shortening now keeps the full headline whenever the first clause is foreign-only and the full headline carries a US-actor reference, so the topic country and the US framing both survive.
May 6, 2026
Search Discovery Surfaces More Major Stories + Cleaner Cluster Names
- Search-grounded story discovery now correctly surfaces stories that previously got filtered as non-political when their headline included a familiar institution name. Stories like "FBI searches Virginia Senate leader's office" or "Education Department investigates Smith College" were being held back by an over-eager non-political filter that scored the headline against name-only context (the words "college", "school", or a streaming service in the title were outweighing the political verbs). The filter now trusts the search provider's own classification when the story is rated major-severity with high US relevance, while continuing to catch foreign stories, generic page titles, and vague names. Replaying today's discovery, 12 stories that should have been on the dashboard previously (including a federal corruption probe of a sitting state senate leader, multiple Title IX investigations, and a $1B funding plan currently a Top Driver) are now correctly surfaced.
- Newsletter and feed boilerplate can no longer leak into Top Driver names. A driver showed up earlier today with a name that was a verbatim NPR newsletter footer ("You're reading the Up First newsletter.*Subscribe*here to get it") because no existing structural check looked for embedded markdown asterisks, HTML tags, newsletter-opener phrases, or "Subscribe...here" patterns. Cluster names with these shapes are now structurally rejected at every pipeline stage. Conservative enough to not flag legitimate names with possessives or single asterisks.
- More consistent treatment of breaking-event decay across the scoring pipeline. Each breaking event has a stored decay rate (how quickly its boost contribution fades over days). Three internal calculation paths along the boost stack were using inconsistent decay values for the same event: the active-event filter honored the stored rate, while two summary calculations fell back to the severity-default rate. All three now go through a single canonical residual function that respects the stored value. No visible change to today's published temperature (today's signals trip the crisis detection independently); the cleanup matters most on days that should be transitioning out of high-tension regime, where stale events were holding crisis status open.
- Several scheduled monitoring jobs are firing on schedule again after a runtime registry resync. The provider-health monitor (catches outages of upstream search/sentiment APIs every 10 minutes), the publish watchdog (verifies the dashboard actually received a complete temperature score after each scoring run), the alert email pipeline, the higher-fidelity ensemble sentiment scorer, the daily recap generator, and several others had drifted off the runtime registry. They're back to firing on their normal schedules. Catches the case where one upstream service goes dark or a scoring run fails to publish, earlier and more reliably than the next-morning visual check.
May 5, 2026
Better Story Deduplication + Cleaner Driver Names
- Same-arc breaking events now collapse into one. Previously, when the same underlying news story was detected and named differently in two pipeline runs (e.g., one named after the lead article, another named after a quoted organization), they could both end up on the dashboard as separate "critical" events. The system now compares the underlying articles between events and folds them together when they cover the same story arc, so the event ledger reflects the true number of distinct stories rather than the number of detection cycles.
- Top Driver names no longer appear as sentence fragments. A subtle bug allowed driver names like "Once Republican-led states started shifting district lines" to be saved with the main clause cut off. Names that begin with a dependent clause and lack a main clause are now structurally rejected so what readers see on the Top Drivers list reads as a complete topic label.
- Improved trailing-word handling on auto-generated names. Previously, a driver name like "Helena ex-mayor appealing his removal, setting up" could pass the gate because the trailing "up" wasn't recognized as mid-sentence. The trailing-word check now catches verb particles (up, down, out, off) so names that were truncated mid-phrase are caught before they hit the dashboard.
- Each Top Driver now reliably links back to the underlying story cluster. Previously, after a driver's name was repaired (regrounded against its real headlines), the link to its source cluster could be left pointing at a different cluster, which broke the left/center/right coverage breakdown for that row. The link is now resolved at save time using the final driver name, so coverage figures are consistent with the headline.
- More accurate article counts on merged events. When the same story arc is detected in multiple pipeline runs, the system used to add the article counts together, which double-counted because each run rediscovers most of the same articles. The merged count now uses the larger of the observations rather than the sum, producing article totals that match what readers see in the underlying coverage.
- Article-count integrity restored on topic clusters. The recalculation script (used to recompute prior days from existing data) was inserting cluster rows with the article count carried over in memory but without linking the articles to the new cluster row, which left some clusters claiming hundreds of articles even though zero actually pointed at them. The script now links each article to its cluster on insert and derives the article count from the live database row, and a one-time backfill cleaned up 68 affected cluster rows from the past week.
- Internal alerts no longer duplicate. A subtle race condition let two concurrent pipeline runs each insert their own copy of the same operational alert (provider unhealthy, accuracy below threshold, etc.), which sent duplicate emails. A database-level uniqueness constraint now ensures one alert per day per type per source, regardless of how many runs detect the condition.
- The pipeline's post-run cleanup of foreign breaking events now runs before the breaking-summary generator, so summaries are only generated for events that survive the cleanup. Previously a foreign event could be cleaned up by one step while a later step still tried to generate a summary for it.
May 4, 2026
Track Record Transparency + Sub-Score Detail + Story Freshness
- New "Operational Quality" section on the Track Record page. Shows 30-day rolling figures for how often the dashboard caught the day's top stories, how many of our Top Drivers matched independently-verified real-world events, how often a driver was a stale repeat from the prior day, and any major events that were missed. Each daily score is independently graded against the ground truth, and these numbers are that grade.
- New "Recent Corrections" section on the Track Record page. Whenever the post-publication review system removes a foreign-content driver, demotes a stale narrative, downgrades a misclassified severity, or reranks the list, every adjustment is logged with the model's reasoning, the target story, and a confidence score. The last 30 days of corrections are now public on the Track Record page so readers can see exactly when and why something was changed.
- Two new expandable detail panels under the SUB-INDICES strip on the homepage. Volume now shows articles tracked today vs. the 30-day average, the same-day-of-week baseline, the volume ratio, and any partial-day, holiday, or polling-volatility adjustments applied. Polarization now shows the left/center/right breakdown for news articles and social posts, plus narrative divergence and topic siloing scores. These figures were being computed every run but only the overall sub-score was visible until now.
- Top Drivers list now shows a small freshness indicator on each story: an upward triangle for rising stories, a dot for stable, a downward triangle for declining, and a circle for stale. Expanding a driver shows whether the story is in its first day on the list, the day after, or has been running multiple days. Story age is one of the most-requested context signals from journalists and researchers.
- Breaking event cards now expand to show extra context when available: the trending search queries that surfaced the event (for events detected from Google Trends spikes) and a sample-headlines list (for events detected from article volume in our news ingest). Most events have one signal or the other depending on how they were detected, and the card now shows whichever applies.
- Fixed a small display bug on the Historical Events timeline. Rare events with a negative temperature impact (those that lowered tension rather than raised it) were rendering with a leading + instead of the natural minus sign.
Better Story Grouping + Severity Calibration
- Stories now group together more reliably when they're really about the same news event. The Voting Rights Act ruling, the related Supreme Court decision, and the state-level redistricting moves it triggered (Texas, Tennessee, Alabama) now show up as a single Top Driver with full coverage instead of fragmenting into several smaller drivers covering pieces of the same story.
- Tightened how the dashboard rates a story's significance. Previously, a fast-moving local story (e.g., a state legislature passing a niche bill) could land at the same severity level as a major national event purely because article volume spiked sharply over a short window. The system now requires both meaningful article volume and a real spike before classifying a story as critical, so the Top Drivers list reflects national consequence rather than just publishing tempo.
- Improved how stories are named for the dashboard. Occasionally the system would pick an organization's name (e.g., the name of an advocacy group quoted in one article) as the cluster's headline, even when the underlying coverage was about a different event entirely. Cluster names now require event-conveying language before they're accepted, so what you read on the Top Drivers list describes what happened, not just who was mentioned.
- Fixed a display bug where a Top Driver could occasionally appear with no associated headlines or article count visible. The driver now reliably shows the supporting headlines, article volume, and source breakdown.
- Search-grounded story discovery is back to full capacity. A subtle text-truncation issue in the discovery pipeline had been causing roughly half of the discovered same-day stories to be quietly rejected during de-duplication. Real-time discovery now contributes the full set of stories it finds.
- Cleaner internal alerts. Previously, a misleading internal warning fired on every scoring run and didn't correspond to any real issue. Replaced with two calibrated alerts (one on clustering throughput, one on cluster-save rate) that only fire when something is actually wrong, and now reach the operator's inbox via email.
- Diagnostic transparency: when search providers are intentionally not invoked (e.g., a less-trafficked monitoring run that uses fewer providers), the dashboard's internal status now records that as an intentional skip rather than a failure. Easier to spot real provider outages.
May 3, 2026
Reliability Hardening + Story Scoring Correction
- Fixed a scoring bug that was sometimes filtering out major stories. A safety check meant to remove non-political topics from the Top Drivers list had been overly aggressive on certain headlines (including Supreme Court cases, foreign policy stories, and high-profile endorsements), quietly demoting them and depressing the day's overall intensity score. The check now requires more evidence before removing anything and surfaces what it would have removed for review. May 2 has been recalculated; the score updated from 64.0 (Hot) to 82.4 (Boiling) once the correct top stories were back in the ranking.
- New monitoring layer for upstream data providers. The system now runs a synthetic check against each external data API (HuggingFace, Brave Search, OpenAI Moderation) every 10 minutes and alerts within ~30 minutes if any provider goes dark for an extended period, instead of waiting until the next morning's update is missing to discover the problem.
- New publish-time integrity check. After each scheduled scoring run, a watchdog verifies the dashboard actually received a complete temperature score, sub-scores, top drivers, and topic clusters. Missing or malformed output triggers an alert.
- External uptime heartbeat. An independent uptime monitor (BetterStack) now pings the health endpoint every few minutes and listens for a heartbeat from each completed scoring run. Catches the case where our internal scheduler itself fails to fire, an outside-of-stack signal so a single-system failure can't go unnoticed.
- Migrated HuggingFace sentiment scoring to their new API endpoint. The previous endpoint was deprecated and silently returning errors for an unknown period, which had degraded ensemble sentiment from 3-model to 2-model accuracy. Ensemble scoring is back to full strength.
- Heavy ensemble sentiment scoring (3 models per social post) moved to its own scheduled job, running 10 minutes before the main scoring run. Prevents one slow upstream API from blocking the temperature from publishing.
- Email alerts wired up. Operational alerts now reliably reach the operator's inbox via the same email service used for contact-form responses, so reliability issues get human attention quickly.
Apr 30, 2026
Election Race Signals + Race Card Readability
- Election race cards now factor in real-time campaign spending from the Google Political Ads transparency report and event activity from Mobilize, on top of polling, prediction-market odds, FEC independent expenditures, news volume, and rating-shift signals, giving a fuller picture of where money and ground-game effort are concentrating
- Added FEC electioneering communications (broadcast ads mentioning candidates near elections) to our campaign finance ingestion: a high-signal late-cycle indicator that complements direct independent expenditure tracking
- Race card "Latest News" sections now show the full news summary and key development without truncation, so you can read the complete one-paragraph context for each competitive race instead of having sentences cut off
Apr 27, 2026
Twice-Daily Pipeline + Stronger Search Discovery
- Moved the main PTI pipeline to two full scoring runs per day: 7 AM and 7 PM ET. The removed midday run mostly duplicated morning coverage, while independent breaking-news detection still watches for intra-day spikes
- Primary story discovery now starts with Brave News Search plus Brave Web Search, runs Tavily news search in parallel for corroboration, and reserves Gemini search grounding for semantic fallback and audits
- Breaking-news monitoring now runs every 2 hours instead of every 30 minutes, reducing redundant discovery calls while preserving frequent spike detection through the separate detect-breaking-events job
- Daily, weekly, and monthly recap generation is now scheduled through Inngest. Weekly and monthly research summaries use Tavily Research with a reserved monthly budget so routine news discovery cannot consume recap capacity
Apr 25, 2026
Election Tracker: Updated Incumbent Statuses
- Updated 8 incumbent listings on the 2026 Election Tracker to reflect the latest retirement and candidacy announcements: Sen. McConnell (KY), Gov. Walz (MN), Gov. Reynolds (IA), Reps. Golden (ME-02), Bacon (NE-02), and Issa (CA-48) are retiring; Reps. Schweikert (AZ-01) and James (MI-10) are running for governor instead of seeking House reelection
- Cross-referenced every one of the 117 races in our 2026 tracker (35 Senate, 36 Governor, 46 competitive House) against current Ballotpedia, Wikipedia, and major news sources, and published the row-by-row verification trail for transparency
- When today's top stories haven't been published yet, the API now correctly reports the actual fallback date alongside the data instead of always saying "today", preventing downstream consumers from caching yesterday's stories under today's label
- The metrics endpoint now properly validates the date range parameter and rejects bad input with a clear error, rather than silently defaulting to 7 days
- Recap pages now use type-safe database queries and properly filter prev/next navigation to skip dates that contain only breaking-event alerts
Apr 24, 2026
Major Architecture Upgrade: Single Source of Truth for Story Validation & Heat Scoring
- Consolidated story validation into a single gate that every part of the pipeline now passes through: discovery, deduplication, web search injection, breaking events, and the recalculation script all use the same rules in the same order. Previously these were scattered across multiple files, which meant a fix in one place wouldn't always apply elsewhere
- Heat scoring (which determines story ranking) is now computed through a single registry where every multiplier is named, sourced, and explained, so when you wonder "why is this story ranked here?", the answer is fully traceable instead of hidden across thousands of lines of code
- Stacked penalties on heat scoring now take the strictest single penalty rather than multiplying them together, so a story can't be invisibly buried by the compounding effect of multiple small dampeners
- The live pipeline and the recalculation script (used to recompute historical days) now share their core logic, eliminating the recurring problem where a fix in one would silently fail to apply to the other
- Added empirical calibration for the heat ranking ceiling. The cap is now derived from real historical data instead of guessed
- Added runtime invariant checks that fail loudly when something impossible happens (heat exceeding theoretical max, drivers not summing correctly), so issues surface immediately instead of quietly corrupting the dashboard
- New data sources now mandatorily route through the unified gate and heat registry, closing a loophole where a new source could bypass quality checks by writing directly to the dashboard
- Added 794 new tests covering the new shared modules to prevent regressions
Apr 21, 2026
Cleanup Tools Hardening
- Tightened detection of mismatched breaking events to use multiple signals instead of a single heuristic, reducing both false positives and missed events
- The bad-event cleanup script is now transactional, so an interrupted run won't leave the database in a partially-cleaned state
- Fixed an edge case where the daily quality check would throw an error on the first day of the month before rolling baselines had been seeded
Apr 20, 2026
Pre-Publish Quality Check + System Alerts + Web Search Hardening
- Added a pre-publish quality check that runs immediately before top stories are made visible, looking for fictional event counts, drivers with no recent article activity, and skewed left/right/center coverage on top stories. Failures are logged for investigation
- New system_alerts table replaces the prior pattern of stuffing alerts into general logs. Alerts are now queryable, severity-tagged, and don't age out with routine log cleanup
- Unified retry policy across all three web search providers (Brave, Tavily, Gemini-grounded). Consistent exponential backoff with jitter eliminates the prior inconsistencies where one provider gave up immediately on transient errors
- Web search failures now propagate detailed status into the diagnostic logs instead of being silently swallowed, making it much faster to figure out which provider was unavailable when a search came back empty
- Top Drivers section gained a coverage breakdown bar (left/center/right), source diversity indicator, freshness ("Updated 2h ago"), and a momentum arrow showing whether the story is accelerating or fading
- Page-title detection (used to filter out navigation crumbs and article landing pages) moved into its own shared utility so all parts of the pipeline use identical patterns
- New backfill tool fills in left/center/right coverage breakdowns on prior dates for the Top Drivers section, mirroring the breaking-events backfill from earlier this month
Apr 18, 2026
More Accurate Breaking Events + Media Bias Coverage
- Fixed an issue where breaking event article counts could be overstated, sometimes showing volumes that couldn't match the actual articles on file. Counts are now tied directly to the articles in each story cluster
- Articles are now more reliably linked to their story clusters, so the dashboard can accurately track how much coverage each event is getting
- Added a left/center/right coverage breakdown to breaking events. Expand any event to see how balanced the coverage is across the political spectrum
- Added a safety cap that prevents any single event from claiming more articles than exist across all sources for the day
- Each pipeline run now tracks how many articles got matched to clusters and surfaces warnings when the rate drops unexpectedly
Reliability & Self-Tuning Improvements
- The accuracy monitoring system is now more resilient. A failure in the historical evaluation step no longer prevents the dashboard from running its self-corrections for the day
- Automated tuning of internal thresholds (like foreign-story filtering and event decay speed) now requires explicit human approval before taking effect, rather than adjusting silently
- When these tuned values are approved, they now actually reach the scoring pipeline. Previously, approved tuning could be recorded but never applied to real scoring
- Improved diagnostics for when web-grounded story searches return no results, making it easier to distinguish temporary provider outages from genuinely quiet news days
- Fixed a silent data-persistence issue where several accuracy-tracking fields were being computed but never saved to the database
Apr 17, 2026
Smarter Social Media Sentiment Analysis
- AI sentiment analysis now prioritizes high-engagement, recent posts across all social platforms instead of processing them in arrival order. This makes better use of limited AI capacity and improves accuracy on the posts that matter most
- Each social platform (Bluesky, Mastodon, Lemmy, and others) now gets a fair share of AI analysis, so one busy platform can't crowd out the others
- Added automatic detection for social sources that stop returning posts. If a platform silently goes dark for several runs in a row, it's now flagged in the ingestion logs for quick investigation
Scoring & Data Quality Improvements
- Fixed an issue where multiple overlapping events could compound and push the temperature higher than intended during busy news periods
- The temperature now responds more accurately on days with lower data confidence, instead of becoming sluggish
- The Story Intensity sub-score (20% of the total) now appears in the dashboard breakdown. It was previously calculated but not displayed
- Improved how the system decides which breaking events are significant enough to feature as top stories
- Fixed an issue where the same social media post could appear as duplicates if shared across different Mastodon servers
- News sources that experience temporary outages no longer interrupt the entire data collection process
- Several date and timezone consistency fixes that improve accuracy around midnight boundaries
- The rhetoric fallback score now more accurately reflects current political language when primary analysis is temporarily unavailable
Social Media Source Updates
- Reddit data is no longer available due to changes in Reddit's API access policies that block independent projects from obtaining credentials
- Trending topic discovery now relies on Mastodon and Bluesky, which continue to provide strong signals for emerging political stories
- The pipeline now clearly reports when a social source is unavailable instead of silently showing zero posts
Social Pulse Improvements
- The Social Pulse section now shows a 4-tier heat distribution (Low, Moderate, Warm, High) that better reflects how discourse heat maps across posts
- The trend indicator (Rising/Cooling/Stable) is now more accurate and less likely to show false signals during periods of stable activity
- When no posts have been scored today, the dashboard clearly shows it is displaying the 7-day average instead of silently falling back
- Added a tooltip explaining what the Discourse Heat percentage means when you hover over it
- The lean badge now shows percentage-point differences (e.g., "L +29pt") for clarity
- Improved accessibility: respects system reduced-motion preferences, better screen reader support, and proper heading structure
- Yesterday's stories now naturally fade from the dashboard rather than competing at full strength with today's news
Driver Selection & Story Accuracy Improvements
- Improved how the dashboard ranks stories by importance. High-volume stories now receive stronger weighting, ensuring major stories with many articles rank above minor ones
- Better merging of related stories about the same topic. When multiple government branches are involved in a single issue (like foreign policy), the dashboard now consolidates them instead of showing fragments
- Added a coherence check that verifies headlines displayed for each story actually match the story topic, preventing mismatched headlines
- Non-political content (local crime, entertainment) is now filtered more reliably using a general signal-based check rather than topic-specific rules
Apr 15, 2026
Methodology Transparency Update
- Added a full Technical Parameters appendix to the Methodology page. Every scoring parameter (EMA rates, event boost caps, interaction thresholds, sub-index weights, CI calibration) is now documented with live values pulled directly from code
- Added documentation for the new rating-market divergence detection feature in the Election Tracker methodology section
- All seven parameter sections are collapsible on screen and auto-expand when printing to PDF
Election Tracker Accuracy Overhaul
- Fixed a bug where expert ratings for single-digit House districts were silently not loading, affecting around 20 competitive races
- Governor races are now properly categorized in article matching and news search queries. Previously they were being treated as House races
- Updated Cook Political Report Senate ratings to reflect the April 13 shifts: Georgia and North Carolina moved to Lean Democrat, Ohio moved to Toss-up, and Nebraska moved to Likely Republican
- When expert ratings and prediction markets strongly disagree, an orange indicator now shows both signals side-by-side so you can see the full picture
- Election data now falls back to the most recent snapshot within 7 days instead of just yesterday, preventing blank data during brief pipeline gaps
- Added new data sources: campaign event tracking, Google political ad spending data, real-time 24/48-hour FEC spending notices, and election law news coverage
- The race linker now prioritizes competitive toss-up races over safe seats when connecting daily news stories to election races
- Prediction market matching now works for markets that use party labels (Republican/Democrat) instead of candidate names, fixing coverage gaps for several Senate races
Political Recap Pages
- New Recap section with daily, weekly, and monthly political summaries. Browse an archive of past analysis or read the latest
- Daily recaps provide a comprehensive end-of-day analysis of what drove the temperature, with top drivers and active events
- Weekly and monthly recaps combine our tracked data with external research to provide deeper analysis of political trends and developments, complete with source citations
- Each recap page is fully shareable with its own URL, designed for journalists, researchers, and anyone following US political dynamics
Smarter News Discovery
- Added a new web search provider (Tavily) specialized for real-time news discovery, improving our ability to find same-day political stories that generic search engines miss
- The system now uses a three-tier search strategy: primary search, news-focused fallback, and grounded AI search, ensuring comprehensive coverage even when one provider has issues
- Added a new tool for generating weekly and monthly political summary reports powered by multi-source research
Better Story Gap Detection
- Important stories discovered by web search are now more likely to appear as separate drivers instead of being silently absorbed into loosely related existing topics, fixing a gap where zero new stories were being added despite being found
- Newly added stories are now protected from being merged back into existing topics, ensuring they stay visible on the dashboard
- When the quality review flags a missing story, that signal now directly helps the story get added in the next update cycle, closing the feedback loop between quality checks and story discovery
- The safety net that catches unrepresented major stories now uses stricter matching, giving it more room to promote genuinely missing coverage
- Added detailed tracking for why stories are accepted or rejected during web search processing, improving our ability to diagnose and fix gaps in coverage
Apr 13, 2026
Smarter Story Detection & Naming
- When related stories are merged, the system now picks the name that best matches the combined headlines, fixing cases where an outdated framing persisted even after a story evolved significantly
- Major breaking stories found by web search are now added to the dashboard without requiring confirmation from older data sources, closing a gap where same-day stories were systematically missed
- When web search confirms an existing story with a more current name, the dashboard adopts the updated framing automatically
- The final driver list now checks for related stories that should have been combined, catching fragments that survived earlier merge stages
- Existing top stories placed by the full pipeline can no longer be displaced by minor topics during recalculation
Transparency & Accuracy Metrics
- Detection accuracy is now shown live on the Track Record page instead of a static percentage. Metrics update automatically as new events are evaluated
- Added same-day detection rate alongside the existing windowed rate, showing how quickly the index responds to breaking events by severity level
- The methodology page now explains how top stories are selected, ranked, and validated, including topic clustering, heat scoring, web-search cross-validation, and quality filters
- All six AI providers (Groq, Cerebras, Gemini, Mistral, OpenAI, Anthropic) are now listed on the methodology page with their roles in the pipeline
- Source count across the site now pulls from a single source of truth, ensuring the press page, methodology, and about page always show the correct number
- The pre-publication audit now checks left-right source balance and flags skewed article distributions for investigation
- False positive detection now uses a rolling 7-day average instead of a global average, providing more accurate quiet-day evaluation
- Expired breaking events older than 31 days are now automatically cleaned up each pipeline run, preserving the full 30-day dashboard window
- Added a note on the methodology page explaining that rapid-onset events take 1-2 update cycles to fully register due to smoothing
Apr 12, 2026
Scoring Engine & Quality Improvements
- All temperature calculations now use a single, unified scoring engine with full smoothing, regime detection, and confidence-weighted sub-indices, eliminating inconsistencies between scheduled runs and manual recalculations
- Confidence intervals are now calibrated from 60 days of historical data instead of fixed brackets, providing more accurate uncertainty ranges that adapt to recent conditions
- A new pre-publication quality check catches foreign stories, non-political content, duplicate topics, and stale drivers before they appear on the dashboard. No more waiting for post-publication review to fix obvious issues
- Each scheduled scoring run now tracks its own quality metrics separately, allowing us to identify and fix time-of-day patterns in accuracy
- Missing stories now retry up to 3 times across consecutive scoring runs before being marked as unrecoverable, instead of expiring after a flat 24-hour window
- Quality metrics now break down by news source, story severity, and issue category, making it easier to identify which signal sources need attention
- The system can now automatically test and adopt parameter improvements when it detects persistent patterns in its quality reviews, with safeguards requiring 7+ days of validation before any change takes effect
7 New Data Sources & Enhanced Coverage
- Added 8 federal agency press release feeds (DOJ, SEC, DHS, Federal Reserve, Census Bureau, USDA, State Department, and EPA) for real-time regulatory and policy announcements
- Added congressional hearing and research report tracking from the govinfo API for deeper legislative analysis
- Added House and Senate floor schedule monitoring for precise session detection and legislative activity tracking
- Added Voteview congressional voting pattern analysis for more accurate polarization measurement
- Added Treasury fiscal data (national debt, receipts, outlays) for economic context in scoring
- Added federal spending data from USAspending.gov for fiscal policy cross-validation
- Added Bureau of Labor Statistics employment data for economic signal cross-validation
- Total unique data sources expanded from 149 to 164 across 38 integration types
Smarter Story Ranking & Soft News Filtering
- Stories are now ranked by their political tension contribution, not just how often a politician is mentioned. Routine ceremonies, space events, and entertainment involving political figures are automatically deprioritized
- Top stories that cannot be confirmed by independent news sources or trending signals are now demoted, making room for genuinely important political developments
- The system now detects and flags non-political content (tabloid stories, ceremonies, entertainment) in its post-publication quality checks and can automatically remove them
- Wire service duplicate detection is now more thorough for high-volume stories, giving more accurate article counts instead of inflating numbers from AP/Reuters republication
Apr 11, 2026
More Accurate Story Recovery & Source Matching
- Accuracy reviews can now feed missing stories back into the next dashboard update with specific story titles, source evidence, and targeted search terms
- The system now confirms that a queued missing story actually appears in the saved driver list before marking it resolved
- Older or thinly sourced stories now lose prominence faster when they are no longer confirmed by current news or web search signals
- Source matching is more reliable for Google News links, publisher short links, and unresolved redirect URLs, reducing the number of articles with unknown source attribution
- Post-publication reviews now track clearer quality metrics, including story recall, driver precision, stale-driver rate, and source match rate
Security, API & Reliability Hardening
- Removed credential-like values from local project files and expanded environment variable documentation with safer placeholders
- Improved API caching behavior so dynamic endpoints return fresh data while stable public endpoints still cache efficiently
- Embed pages now use route-specific frame permissions, while regular pages stay protected from being framed by other sites
- CSV and JSON exports now return only published dashboard data, preventing draft scoring runs from appearing in public downloads
- The contact endpoint now has stronger validation, spam protection, and request-size limits
- Refreshed tests and build checks across the dashboard, API routes, and scoring jobs
Apr 9, 2026
Smarter Story Detection & Self-Correcting Pipeline
- Driver summaries now automatically verify they match their story topic. If a summary describes a different story than its headline, it gets regenerated from the correct source material
- The system now pre-flags potential duplicate stories for the quality check step, making it much better at catching when the same event appears as two separate drivers
- When our primary news search provider is unavailable, the system now automatically supplements from multiple backup sources instead of running with reduced coverage
Election Tracker Accuracy Improvements
- Updated House race ratings to reflect the latest Cook Political Report changes, including shifts in Pennsylvania, Ohio, and Colorado districts
- Added two newly competitive House districts (NJ-09 and FL-27) to the election tracker
- The weekly rating refresh now automatically checks for updates across all race types (Senate, House, and Governor), not just Senate
- Competitive governor races now show real candidate matchups instead of placeholder data, making the Governor tab much more useful
- House races now use expert ratings from Cook and Sabato to determine competitiveness, rather than relying solely on fundraising data
- If a new competitive district emerges between updates, it is now automatically added to the tracker
- Added Manifold Markets as a third prediction market source. The election tracker now blends odds from Kalshi, Polymarket, and Manifold for more comprehensive coverage
Major Reliability & Accuracy Improvements
- Fixed a data ingestion issue where some Congressional Record statements could be silently dropped, ensuring more complete legislative coverage
- Corrected the precision metric on the accuracy tracker to use the proper statistical formula, giving a more accurate picture of detection quality
- Polling data now correctly preserves the approval and disapproval order from source data instead of assuming which number is which
- Historical temperature momentum calculations now use the correct 7-day window instead of an unintended 8-day window
- Foreign policy stories involving the US (like tariff negotiations) are no longer incorrectly scored as irrelevant when the data shows zero US relevance
- Eliminated duplicate log entries that were being created during each pipeline run, improving monitoring clarity
- Over 50 database queries across the dashboard now properly detect and report failures instead of silently returning empty data
- All external API calls are now protected by timeouts, preventing the pipeline from stalling on unresponsive services
- Rate limiting improved across several data sources to stay within API quotas
Dashboard Polish & Accessibility
- Improved keyboard navigation throughout the dashboard — modals, navigation menus, and sortable tables now work properly with screen readers and keyboard-only browsing
- The date history page now displays dates correctly regardless of your timezone
- Election day countdown now correctly shows "0d" on election day instead of hiding the countdown entirely
- Added a custom 404 page so broken links show a helpful message instead of a generic error
- Fixed a race condition where rapidly switching time periods on the dashboard could briefly show data from the wrong period
Apr 7, 2026
Smarter Local vs. National Story Detection
- Local government stories (city council races, county judge elections, school board votes) that lack national significance are now automatically filtered from the dashboard, preventing them from appearing as top political drivers
- Breaking event titles are now validated against their actual underlying news articles. If a title doesn't match the content, it's automatically corrected to reflect what the stories are actually about
- These checks apply to all pathways that can create breaking events, including the real-time news monitor that runs between full pipeline updates
Better Filtering of Ceremonial Events & Cleaner Story Names
- Annual ceremonial events at political venues (like holiday traditions) are now properly recognized as non-political and no longer appear as top drivers or breaking events, even when they generate high article volume
- Story names that are clearly truncated mid-sentence are now automatically detected and filtered, preventing incomplete or nonsensical headlines from appearing on the dashboard
- All pathways that can add stories to the dashboard now apply the same quality checks, closing a gap where lower-quality story names from backup data sources could bypass validation
- The breaking events feed now checks whether a spike in coverage is actually about politics before flagging it, preventing high-volume non-political stories from consuming limited event slots
Apr 6, 2026
Improved Scoring Accuracy & Smarter Event Calibration
- The temperature now responds more accurately during periods when political tension is sustained at high levels but gradually cooling — previously, the system could miss important events during these transitions
- Breaking event impact is now calibrated with diminishing returns: one major event makes a meaningful difference, but a flood of overlapping stories no longer inflates the temperature to the same extreme degree
- The threshold for activating crisis-level scoring has been tightened to require multiple confirming signals, preventing routine high-volume news days from being treated as genuine political crises
- Reduced noise in the pipeline activity logs, improving system monitoring and diagnostics
Apr 5, 2026
Smarter Story Validation & Better Foreign Policy Coverage
- The dashboard now cross-checks its final story list against real-time news sources, catching important stories that the automated pipeline may have missed or miscategorized
- Major national stories confirmed by multiple news sources now receive a stronger signal boost, making it harder for wire-syndicated local stories to outrank genuinely significant national events
- US foreign policy stories involving other countries (like congressional debates over military strategy) are no longer over-penalized — they now receive appropriate prominence when US political actors are clearly involved
- The system now detects when the same wire service article is republished across dozens of local outlets and adjusts article counts accordingly — a single AP story picked up by 70 local sites no longer outranks genuinely significant national stories
- Website page titles and navigation text can no longer slip through as story names in any part of the pipeline, not just the breaking events feed
Breaking Event Display Fix & Expanded Quality Assurance
- Fixed an issue where website page titles (like "NBC News - Breaking Headlines...") could appear as breaking event names instead of actual story descriptions
- Fixed special characters appearing as raw codes in breaking event descriptions (e.g., " instead of quotation marks)
- Added comprehensive quality checks covering the scoring engine, self-healing system, election data pipeline, and all public data endpoints
Apr 4, 2026
Better Coverage of US Foreign Policy & Smarter Story Merging
- Stories about US foreign policy actions (like presidential ultimatums or military operations) now receive proper prominence on the dashboard, even when they involve other countries
- The system now recognizes that "defense budget" and "military spending" refer to the same topic, preventing duplicate stories about the same budget proposal from appearing separately
- When the main scoring pipeline encounters temporary issues, the fallback system now checks for important stories that may have been overlooked and promotes them to the dashboard
Smarter Scoring, Better Story Detection & Self-Improving Pipeline
- The system now tracks how long each story has been active, how its coverage peaked, and whether it is trending up or down — this context helps it decide when to promote, keep, or retire stories from the dashboard
- Stale stories that have been declining in coverage are now retired more quickly, but genuine multi-day stories (like ongoing legislative battles) are kept as long as they remain active in the news
- Events that persist past their natural lifespan are now flagged and gradually faded out instead of lingering at full strength
- Morning temperature readings are now more accurate — the system knows which pipeline run it is (morning, midday, or evening) and adjusts its confidence accordingly instead of guessing from the time of day
- Fixed an issue where the polarization score could drop to zero on slow news days. The system now falls back to broader tone analysis when detailed per-story data is limited
- Heated political language patterns like "deep state," "witch hunt," and "stolen election" are now recognized as escalation signals, contributing to the rhetoric score even when other sentiment data is sparse
- Story names and summaries are now validated against real headlines before appearing on the dashboard — preventing AI-generated names or descriptions that don't match what's actually being reported
- Government agencies with multiple common names (like DHS and "Homeland Security," or SCOTUS and "Supreme Court") are now recognized as the same entity, reducing duplicate stories about the same topic
- Related political terms (like "investigation" and "probe," or "ban" and "prohibition") are now treated as synonyms when grouping stories, so the same topic isn't split across multiple dashboard entries
- A new safeguard prevents unrelated stories from being incorrectly merged just because they mention the same institution — "Senate Tax Vote" and "Senate Impeachment Vote" now stay separate
- The scoring system now automatically adapts during crisis periods by giving more weight to story intensity and less to raw article volume, better reflecting the severity of major political events
- A new trend analysis system monitors scoring patterns over a rolling 7-day window and identifies systematic biases like consistent over-heating or under-heating, enabling continuous self-correction
Apr 3, 2026
Smarter Story Grouping & Cleaner Event Detection
- Related political stories are now grouped together more reliably — different headlines about the same topic (like a cabinet shakeup and the related congressional testimony) are recognized as one story instead of appearing as separate drivers
- The system now handles natural language variations better when connecting stories: headlines using words like "threatens," "threatening," or "threat" are all recognized as part of the same topic
- Breaking event tracking is now capped at a reasonable daily limit, preventing the same developing story from being counted multiple times across detection cycles
- Web search results are now filtered more carefully — generic page titles and navigation text no longer slip through as injected stories
Historical Temperature Recalibration
- Recalibrated all historical temperature readings using our latest scoring methodology, producing more accurate day-to-day differentiation between genuinely heated political moments and routine news cycles
- Improved how the system distinguishes between high-volume but low-impact news days versus genuine political crises — routine Congressional activity no longer inflates the temperature the same way a major policy confrontation does
- Breaking event detection is now more selective — only the most significant events of each day are tracked, reducing noise from minor stories that were previously inflating the score
- Temperature now cools down more naturally after events pass, rather than staying artificially elevated due to accumulated past detections
Apr 1, 2026
Scoring Sensitivity Improvements
- Temperature now responds faster to breaking political events — major stories register in the score more quickly and proportionally to their significance
- Back-to-back events are detected more reliably, with faster baseline recovery between consecutive stories
- Crisis-level events receive a stronger temperature boost, ensuring critical political moments are properly reflected in the score
- Track Record metrics now use stricter, spike-based detection — events only count as "detected" when the system produced a measurable response, not just when temperature happened to be above a threshold
- Velocity (the rate of article acceleration) is now weighted more heavily, since it is the strongest real-time signal of a developing political event
Mar 31, 2026
Data Export, VIX Cross-Validation & Citation Tools
- New Data Export page — download up to a year of daily temperature scores, sub-indices, and top drivers as CSV or JSON. Includes a live preview and data dictionary
- Cross-validation on the Track Record page now shows PTI temperature alongside the CBOE Volatility Index (VIX) in a dual-axis chart, with Pearson correlation and a table of days where both spiked
- One-click citation button on the dashboard — click "CITE" next to the LIVE badge to get APA, AP/Chicago, or plain text formats with copy buttons
- Confidence interval band on the trend chart — toggle "CI BAND" to see a shaded region showing the uncertainty range around each day’s temperature reading
- Confidence scores and interval bounds are now stored with every temperature reading for historical tracking
Mar 30, 2026
Smarter Story Summaries
- Top story descriptions are now automatically refreshed when they become stale or generic, so every driver on the dashboard includes a meaningful explanation of what's happening
- Breaking news events are now deduplicated across pipeline runs, preventing the same story from appearing multiple times in the breaking events feed
- Related stories are merged more accurately across daily updates, improving continuity for multi-day events like ongoing legislative debates
Mar 25, 2026
2026 Election Tracker
- New dedicated Election Tracker page with tabs for Senate, House, and Governor races
- Each race shows a composite heat score combining news coverage, prediction market odds, campaign spending, and polling data
- Prediction market integration with Kalshi and Polymarket for real-time race-level odds and chamber control forecasts
- Campaign finance data from FEC filings including total raised and independent expenditures
- Expert ratings from Cook Political Report and Sabato's Crystal Ball mapped to competitiveness scores
- Race cards expand to show candidate details, sub-topics, sentiment trends, and recent news narratives
- Dashboard widget highlights the 5 hottest races with at-a-glance odds and polling data
- Races are auto-discovered from FEC filings — new candidates and races appear automatically as they file
Mar 22, 2026
Pipeline Reliability & Self-Monitoring
- New pipeline health monitoring that tracks job execution, data freshness, and source reliability in real time
- Anomaly detection automatically flags suspicious patterns like frozen scores, missing data, or unexplained temperature spikes
- When any scoring component falls back to a secondary method, the event is now tracked and logged for transparency
- Temperature accuracy is now validated nightly against real-world events to catch and correct drift over time
- New end-to-end test suite validates the full scoring pipeline from data ingestion through final temperature output
Better Story Descriptions & Topic Merging
- Top story descriptions now show substantive summaries instead of generic placeholders. Each driver includes a real explanation of what happened and why it matters
- Related Iran war stories (sanctions, troop deployment, congressional oversight, exit strategy) now merge into a single unified driver instead of fragmenting across multiple entries
Scoring Accuracy & Detection Improvements
- Sarcasm detection now correctly handles inflammatory political content. Previously, genuinely heated rhetoric could be misidentified as sarcastic and have its intensity reduced
- Minor and moderate political events are now properly distinguished, so smaller stories like committee hearings are detected separately from major legislative actions
- The polarization score now transitions smoothly as the number of active political topics changes, eliminating sudden jumps when a new story enters or leaves the news cycle
- Political poll numbers (like "52-48") are no longer confused with sports scores, improving data quality
- Sentiment analysis now correctly tracks which AI model scored each article, ensuring the accuracy metrics reflect real model performance
- Summary generation is faster with reduced redundant database queries
Mar 21, 2026
Scoring Accuracy & Data Quality Hardening
- Top story rankings now properly factor in AI-assessed significance ratings, ensuring the most impactful stories appear first
- Congressional Record floor speeches are now correctly captured and contribute to the temperature calculation
- The crisis detection system now properly activates during high-velocity events, preventing the temperature from being artificially suppressed by low publishing volume
- Lemmy community discussions are now included in the social media analysis alongside Reddit, Bluesky, and other platforms
- Consistent date handling across all scoring components improves calculation accuracy
- The legislative activity tracker now shows the correct day's data regardless of what time you view it
Smarter Scoring & Better Accuracy Tracking
- Temperature readings on federal holidays (Thanksgiving, Christmas, July 4th, etc.) are now adjusted so low publishing volume doesn't falsely show a calm political climate
- Social media sentiment now contributes directly to the rhetoric score when enough posts are available, giving the temperature reading a more complete picture of public discourse
- The multi-model sentiment system now activates automatically when multiple AI providers are available, improving scoring accuracy through consensus
- When sentiment models disagree significantly, the system now reduces its confidence in the rhetoric score rather than blindly averaging conflicting signals
- The Track Record page now tracks false positives (days where the temperature spiked but no real political event occurred) alongside the existing event detection metrics
- When a political event is missed, the system now diagnoses exactly why: whether the temperature spike was too small, the absolute level was too low, or data was insufficient
- An automated nightly review now monitors detection accuracy and alerts when the hit rate drops below acceptable levels
- All severity thresholds used across the system are now unified in a single location, eliminating inconsistencies between detection and validation
Mar 20, 2026
Improved Data Quality & Pipeline Reliability
- The scoring system now uses smooth mathematical transitions instead of hard cutoffs when combining sub-indices, eliminating cases where a tiny change in input could cause a disproportionate jump in the final temperature
- Stories discovered through web search are now verified against at least one independent source (trending headlines, breaking events, or gap detection) before being promoted to top drivers
- Event severity is now validated in both directions: stories initially classified as "moderate" are flagged for upgrade review if temperature data shows they had major impact
- Morning temperature readings are more accurate with better safeguards against over-extrapolating when early data is still coming in
- All RSS feeds are now pre-screened for US political relevance before entering the analysis pipeline, reducing noise from international or non-political content
- The system now monitors itself in real-time to catch data inconsistencies, missing scores, and unusual patterns across scheduled runs
- A new pipeline health endpoint tracks job execution status, data freshness, and source reliability in real time
- Event detection now uses time windows tuned to each category: legislative events are expected same-day while economic impacts are tracked over multiple days
Mar 19, 2026
Better Coverage of US Foreign Policy & Judicial Stories
- Stories about US policy toward foreign countries (like the Iran conflict) are no longer accidentally filtered as "foreign" when they clearly involve the White House, Pentagon, or other US institutions
- Headlines about judges, the Supreme Court, and the judiciary are now properly recognized as political content instead of being filtered out
- Prediction market data now excludes sports and entertainment markets (NHL, NBA, Oscar predictions, etc.) that were incorrectly appearing in the political temperature calculation
- Previously missing stories like the DHS confirmation hearing, Illinois Senate primary, and Chief Justice Roberts statements now correctly appear as top drivers
Mar 17, 2026
Social Pulse Discourse Heat Now Shows Real Variance
- The Discourse Heat gauge in Social Pulse now reflects actual day-to-day changes in social media tone instead of showing a flat reading
- Social media posts are now scored using language patterns specific to how people talk on Reddit, Bluesky, YouTube, and other platforms, not generic news headline patterns
- Posts are analyzed by three independent scoring models that run simultaneously, with their results combined for higher accuracy
- The heat display now uses a wider visual range so you can actually see differences between calm and heated days
- Sparkline charts for daily heat now show meaningful movement across the 7-day window
Driver Accuracy & Story Separation Improvements
- Fixed an issue where unrelated stories sharing common political terms (like "Senate") were incorrectly merged into mega-topics, causing important stories to disappear from the dashboard
- Key stories like the DHS/TSA Shutdown, SAVE America Act debate, and Kristi Noem criminal referral now correctly appear as distinct top drivers
- Topic merging now requires stronger evidence that two stories are actually related before combining them, using both name similarity and shared specific details
- Breaking event descriptions now display readable summaries instead of raw data statistics
- Promoted stories now show properly matched headlines instead of pulling unrelated articles
- Story merging limits tightened to prevent any single topic from absorbing too many other stories
Mar 16, 2026
Self-Adapting Keyword Intelligence
- The system now automatically discovers trending topics, foreign leaders, and related story groups from its own data instead of relying on manually maintained keyword lists
- Related topic detection (e.g., recognizing that two different stories about trade policy are connected) now learns from historical co-occurrence patterns rather than a fixed list
- Foreign story detection adapts as new international figures and events emerge in the news cycle, no manual updates needed
- Topic merging stop words and generic name filters now adjust dynamically based on the current day's story landscape
- Intensity keyword tiers (critical, major, moderate, minor) now auto-expand based on recent significant events
- Synonym detection for topic deduplication now learns from keyword co-occurrence across multiple days
Smarter Topic Merging & Reliability Improvements
- Real-time story enrichment is now more reliable with automatic retries when the initial search times out
- Top story article counts are now properly differentiated instead of showing identical numbers across multiple drivers
- Iran war coverage is now split into distinct sub-stories (military operations, diplomacy, energy impacts) instead of being lumped together
- Topic merging is now smarter about distinguishing stories involving different government institutions, preventing unrelated stories from being combined
- Stronger safeguards against low-profile stories being incorrectly promoted to top driver positions
Expanded Coverage: 7 New Data Sources
- Added Polymarket prediction markets as a new cross-validation signal for political uncertainty
- Added Snopes fact-checks alongside PolitiFact for broader misinformation detection
- Added SCOTUSblog for real-time Supreme Court coverage and decisions
- Added GAO reports for government accountability and oversight tracking
- Added Regulations.gov for tracking contentious federal rulemaking activity
- Added Wikipedia pageview tracking as a public attention proxy for political topics
- Added GDELT TV News for television coverage volume tracking
- Total data sources now 30+ across news, social media, legislative, judicial, and cross-validation categories
Smarter Story Merging & Morning Data Resilience
- Related stories about the same event are now automatically merged when web search confirms they belong together, reducing fragmentation in top drivers
- Story article counts are now more accurate: each pipeline run preserves its own discovery count instead of inflating across runs
- Headlines on promoted stories now go through a relevance check, preventing unrelated articles from appearing under the wrong topic
- Morning temperature readings are more resilient. When only partial data is available, the system carries forward yesterday's volume score as a floor instead of dropping sharply
- Story velocity detection now uses web search severity as a safety net, preventing ongoing crises from showing zero momentum when cluster names change daily
- High-impact stories like wars and crises need less word overlap to match across days, improving continuity tracking
Mar 15, 2026
Legislative Tracker Redesign
- Vote titles are now smarter: bare bill numbers show their full title, and procedural votes display clean tags like CLOTURE or AMENDMENT
- Chamber pills are now clickable filters that let you toggle between All, Senate, and House
- Pass/fail results are now visible at a glance without expanding each row
- Left border on each row is color-coded by partisanship level for quick visual scanning
- Split bars are wider with clearer labels showing exact party counts (e.g. "5D-48R")
- Expanded view now shows a side-by-side Democrats vs Republicans breakdown with total vote tallies
- Independent votes are shown when they exist
Scoring & Performance Fixes
- Fixed rhetoric scoring: GDELT tone was contributing ~5x less than intended due to incorrect normalization
- Fixed polarization scoring: tone normalization was too aggressive, losing nuance between moderately and very negative articles
- Improved early crisis detection so escalation signals at low article counts register more accurately
- Fixed a circular reference in adaptive score normalization that could produce self-reinforcing values
- Standardized GDELT tone normalization across all scoring files for consistency
- Reduced unnecessary API polling for breaking events (5-minute interval changed to 30 minutes)
- Reduced social data loading from up to 20,000 records to 5,000 for faster page loads
- Coverage distribution in driver details now shows center coverage estimates instead of always zero
- Corrected Left/Right comparison display so color dots now match their category colors
- Added error handling to the breaking events API to prevent crashes from network failures
Integrated Navigation & Better Story Counts
- Navigation now lives inside the dashboard and page content instead of a separate top bar
- Logo and grouped dropdown menus (Explore, About, Integrate) integrated into the hero card header
- Secondary pages get an inline nav with logo and dropdowns for easy navigation
- Fixed a bug where all top stories showed the same article count instead of differentiated values
- Expanded real-time story discovery to cover 10 topic areas including regulatory actions, press freedom, and state-level politics
- Added tracking to verify which AI provider handles each pipeline run
Mar 14, 2026
Smarter Event Classification
- Improved historical event severity accuracy (was over-classifying 85% as "major")
- Added temperature-based validation to catch misclassified events
- Recurring saga topics now decay appropriately
Mar 11, 2026
Trending Story Detection
- Top stories now cross-validated against Google News, Memeorandum, Reddit, and AP/Reuters
- Stale stories naturally demoted as they lose trending confirmation
- Driver freshness tracking with age-based decay
Feb 9, 2026
Dynamic Keywords & Accuracy Tuning
- Search terms now auto-update from recent coverage instead of static lists
- Fixed temperature smoothing to preserve multi-day memory
- Improved cluster deduplication
- Production timeout fixes
Feb 8, 2026
Data Quality & Foreign Story Filtering
- Tightened international story filtering (dropped from 87% to 48% of coverage)
- Fixed breaking event severity inflation
- AI summary chaining between morning and evening updates
- Expanded to 50+ YouTube channels and 12 Substack feeds
- Added weekly data quality monitoring
Feb 7, 2026
YouTube, Social Pulse & Legislative Tracker
- Added YouTube comment tracking (55 political channels)
- New Social Pulse dashboard section with platform breakdown and toxicity gauge
- New Legislative Tracker showing partisan congressional votes
- Expanded independent media RSS feeds
Feb 6, 2026
Event Detection & Weekly Drivers
- Replaced keyword-based event detection with AI-driven cluster analysis
- Added "This Week" tab for 7-day driver aggregation
- Embeddable widgets (compact and standard sizes)
- Breaking events now appear in top drivers
- Redesigned breaking news cards
Feb 5, 2026
AI Intensity Scoring & Dashboard Polish
- AI-powered story intensity scoring
- Fixed volume signal inflation
- Temperature-based trend chart coloring
- Heat source intensity comparison
Feb 4, 2026
Multi-Source Scoring Engine
- Five sub-index scoring system (Volume, Polarization, Intensity, Rhetoric, Friction)
- Added CourtListener judicial data, LegiScan state legislation, and Google Civic election data
- Expanded source database from 564 to 1,347 outlets
Feb 3, 2026
Initial Launch
- Daily temperature dashboard with gauge, trend chart, and top story drivers
- 20+ data sources across news, social media, and legislative records
- Historical event catalog and launch-time validation framework (see Track Record for current verified-only metrics)
- Launch-time detection optimization; current response metrics are live on the Track Record page