gridpulse / deploy /README_SPACE.md
adwitiyashukla's picture
Sync from GitHub e84e64a
18a63f1 verified
|
Raw
History Blame Contribute Delete
2.77 kB
metadata
title: GridPulse
emoji: 
colorFrom: green
colorTo: purple
sdk: docker
app_port: 7860
pinned: true
license: mit
short_description: Day-ahead grid demand forecasting benchmarked vs the EIA

⚡ GridPulse

Day-ahead electricity demand forecasting for US balancing authorities, benchmarked against the EIA's own published day-ahead forecast.

Model MAPE vs EIA
LightGBM hybrid (+ EIA forecast as input) 2.771% +25.0%
LightGBM (global, from first principles) 3.676% +0.6%
EIA official forecast 3.696% benchmark
Seasonal naive (24h) 5.677% -53.6%
Weekly naive (168h) 9.117% -146.7%

Measured over 25,927 out-of-sample hours across 12 balancing authorities, using a strictly chronological split.

What you can do here

Tab What it does
Forecast Make a live 24-hour forecast with a P10-P90 range for any of the 12 regions, using the current weather forecast
Explorer Past demand, the V-shaped link between temperature and demand, and how weekdays differ from weekends
Model Leaderboard Every model scored against EIA's own forecast on exactly the same test hours
Anomalies Hours that look wrong, found by three detectors that have to agree
Data Quality A scorecard covering six categories of data quality
Ask the Grid Ask a question in normal English and get SQL and a chart back

What is behind it

This Space is just the website. Behind it there is a full data pipeline:

  • Downloads data from the EIA and Open-Meteo APIs a bit at a time, remembering where it got to so it never re-downloads the same thing
  • Stores it in bronze, silver and gold layers, ending in a star schema in DuckDB
  • Runs 16 data quality checks covering completeness, validity, consistency, timeliness, duplicates and accuracy
  • Trains LightGBM with P10/P50/P90 bands, plus an LSTM and a Transformer in PyTorch so I could compare them properly
  • Finds unusual hours using three different detectors that have to agree: a seasonal z-score, an Isolation Forest, and an autoencoder trained on daily demand shapes
  • Has an LLM that writes SQL, wrapped in guardrails (read-only connection, SELECT only, a list of allowed tables, and a row limit)

Setup

The Ask the Grid tab needs a GROQ_API_KEY under Settings, Variables and secrets. Keys are free at console.groq.com/keys. Everything else works with no setup at all.

Source

Full pipeline, tests, orchestration and documentation: github.com/adwitiyashukla/gridpulse

Data: US EIA Form 930 and Open-Meteo.