Climate Sentiment Meter
A dashboard that visualizes daily climate news sentiment as an animated gauge dial. Scores articles from 15 RSS sources with a RoBERTa transformer and displays results in a three-column Negative / Neutral / Positive layout.
| Live Dashboard | Source Code |
Climate Sentiment Meter aggregates climate news from 15 sources — including Carbon Brief, The Guardian, Inside Climate News, Grist, Yale Climate Connections, and Canary Media — scores each article’s sentiment, and renders the daily average as an animated D3.js gauge dial ranging from “Alarming” to “Hopeful.”
A cron-driven Python pipeline fetches articles via RSS, runs them through a RoBERTa transformer model fine-tuned on news and social text, and stores results in Supabase. The frontend reads directly from the database — no backend server.
Tech: React, Vite, D3.js, Python, Supabase (Postgres), RoBERTa (cardiffnlp/twitter-roberta-base-sentiment-latest).
Features:
- Semi-circular D3.js gauge with color-coded segments and animated needle
- Three-column article layout: Negative / Neutral / Positive
- Automated RSS ingestion from 15 climate news sources via daily cron job
- Per-article sentiment scoring with a transformer model (P_pos − P_neg mapped to a 7-class label scale)
- Daily sentiment aggregation (average, min, max, article count)
Documentation:
- Sentiment Scoring Methodology — how articles are scored, labeled, and aggregated
- VADER vs. Transformer Analysis — bootstrap comparison (n=526, 10k iterations) showing the transformer scores ~0.21 lower on average, with 95% CI entirely below zero
- Project Plan — original design and architecture decisions