Find the best places on the US grid to build a data center or hydrogen electrolyzer.
AI compute and clean-hydrogen demand are exploding, and the hardest part of building the infrastructure to serve them isn't the building — it's siting: where on the grid can you actually get cheap, clean, available power without waiting years in an interconnection queue? GridScout ranks ~30,000 US grid nodes across 10 ISO/RTO regions on the factors that decide that question, and returns a ranked shortlist with a plain-English explanation for each site.
Built at an MIT hackathon (2025). Python/Flask ranking engine + React/Mapbox front end.
Give it a load type (data center, electrolyzer, etc.), a size, and a preference for cost vs. emissions, and GridScout scores every node and ranks the best sites. Each node is evaluated on six weighted components:
| Factor | What it captures |
|---|---|
| Energy cost | Locational marginal price (LMP) at the node |
| Land | $/acre in the surrounding county |
| Emissions | Grid carbon intensity (county-level, mapped to a 150–700 kg CO₂/MWh range) |
| Policy fit | Incentive/regulatory friendliness for the chosen load type |
| Interconnection-queue pressure | A 4-metric composite (pending MW, advanced-stage share, queue pressure, renewable/storage share) — how hard it'll be to actually connect |
| Price variability | Volatility penalty from historical price spread |
The weights adapt to the load type, the load size, and an emissions-vs-cost slider, so a 24/7 data center and a flexible electrolyzer get different rankings from the same map.
React + Mapbox front end ──HTTP──> Flask REST API ──> ranking engine (pandas/numpy)
(interactive map, /api/rank 29,998-node dataset,
filters, results) /api/submit 6 weighted factors,
/api/health load-aware scoring
backend/node_ranking_engine.py— the core. Vectorized pandas/numpy scoring with robust (quantile-clipped) min-max normalization, load-type/size-aware weighting, an emissions-preference control, baseline-vs-scenario comparison for on-site solar/battery/ firm generation, and auto-generated ranking explanations.backend/api_server.py— Flask REST API (/api/rank,/api/submit,/api/weights,/api/health). Live athttps://gridscout.onrender.com.frontend/— React + Vite + Mapbox GL interactive map and results UI.
Data: 29,998 nodes across PJM, CAISO, MISO, NYISO, SPP, ISO-NE, ERCOT, and non-RTO West / Southeast / Rockies, with LMPs, county land and emissions data, and interconnection- queue metrics.
Backend
cd backend
pip install -r requirements.txt
python api_server.py # serves the ranking APIFrontend
cd frontend
npm install
cp .env.example .env # add your own Mapbox token (VITE_MAPBOX_TOKEN)
npm run dev # opens the map UIGridScout/
├── backend/
│ ├── node_ranking_engine.py # the scoring engine
│ ├── api_server.py # Flask REST API
│ ├── api_wrapper.py # request/response translation
│ └── final_csv_v1_new.csv # the ~30k-node dataset
└── frontend/
└── src/App.jsx # React + Mapbox UI
MIT — see LICENSE.