Skip to Content
Back to blogs

I Built a Platform to Make Sense of Industrial Emissions Data

2 min readNext.jsTypeScriptClimateTRACETimeSeriesForecastingCCUSDataVizRecharts

The Problem That Started It All

Last fall I was looking at Climate TRACE, the open dataset that tracks emissions from industrial facilities worldwide. The data is incredible: thousands of facilities across dozens of sectors, broken down by region. But actually using it? That was a different story.

A regulator trying to figure out which sectors are getting worse over time would have to download CSVs, pivot tables, and squint at trendlines. An operator wanting to forecast their reduction targets had no tooling at all. And the public? They got static PDFs that were outdated before the ink dried.

I thought: what if all three audiences could log in and immediately see what matters to them?

Building CarbonLedger

The core idea was straightforward. Pull real Climate TRACE data, layer forecasting on top of it, and give each user role a focused experience.

Starting with the data layer. I built API routes that fetch and aggregate facility, sector, and timeline data from Climate TRACE using GADM administrative regions (Louisiana, Texas, Gulf Coast, etc.). Early on I learned that the API goes down more often than you'd expect for a demo, so I added deterministic synthetic data generation seeded by facility ID. Same fake numbers every time, which meant my demo worked whether Climate TRACE was up or not.

Then the forecasting. This was the part I was most excited about. I implemented four methods: Linear Regression, Exponential Smoothing, Trend Decay (for CCUS scenarios), and a simplified ARIMA. Each one generates 95% confidence intervals so you're not just looking at a line, you're seeing the range of what's plausible. The platform auto recommends a method based on trend direction and volatility, but users can switch and compare all four side by side.

The regulator dashboard shows sector summaries, timeline charts, and KPIs. I spent more time than I'd like to admit getting the chart styling right: axis labels that are actually readable, ticks that don't overlap, margins that breathe.

The review queue was a late addition that turned out to be one of the most useful features. Each card shows status, submission deadline, sector, and recent activity at a glance. Quick actions (Remind, Fix, Approve) work on mobile without opening a separate page.

Community rankings let anyone compare regions and sectors. Getting the administrative mapping right was trickier than expected. My first version had a bug where different filter selections returned identical data. Embarrassing, but a good reminder to always sanity check your query params.

What I Learned

Letting users pick their forecasting method builds trust. My first instinct was to just show "the forecast." But when I added the method selector and comparison view, every person who tested it immediately started toggling between methods. They wanted to understand the range of possible outcomes, not just one prediction. That interaction taught them more about the data than any chart alone.

Smart defaults reduce friction without removing control. Simple heuristics (is the trend steep? is the data volatile?) pick a reasonable starting method. Users who care can override it. Users who don't get a good answer without thinking about it.

Chart readability is a feature, not polish. White labels on dark backgrounds, rotated tick marks, generous margins. These feel like cosmetic choices but they're the difference between a dashboard people actually use and one they screenshot once and forget.

Graceful fallback is non negotiable for demos. The deterministic synthetic data generator saved me in three separate presentations where the external API was unreachable. Consistent stories, zero surprises.

The Stack

Next.js App Router with TypeScript for the frontend and API layer. Tailwind for styling. Recharts for all the data visualization. The whole thing is designed to work as both a live connected platform and a standalone demo.

Try It Out

I'd love to hear what you think about the forecasting experience or if there are regions and sectors you'd want to see added.