Inspiration
Sperry's Gridlock challenge at ShellHacks pointed at a quiet, expensive problem: every utility publishes its capital plan, but nobody reads their neighbours'. Two companies can rebuild lines a few kilometres apart in the same season, each paying for its own crews, cranes, permits and outages. The information to prevent that is already public. It's just buried in hundreds of pages of PDFs and spreadsheets that nobody cross-reads.
What it does
GridMerge is a coordination radar for utility capital planners. It reads public capital plans, puts every planned project on one map (2,231 projects nationwide today), and flags pairs from different companies that are close in both place and time: within 40 km, both still future work, and building at the same time for at least 30 days.
For each of the ~1,900 potential opportunities it shows:
- Why it was flagged: closest-point distance, both build windows on one timeline, and a score breakdown
- What they could share, ranked by Sperry's tiers: touching → one outage and crossing design; under 1.6 km → land and permits; under 8 km → a laydown yard; under 40 km → crews and equipment
- A rough coordination value and links to the exact source pages
- A one-click coordination brief (Gemini) a planner can forward
Planners can also search by company, state or ZIP code, ask plain-English questions ("Which pairs are in Texas?"), upload a new plan to extract its projects, and export everything to CSV or PDF.
How we built it
- Data: parsers for EIA-860M planned generators, the SERTP 10-year transmission plan, Dominion Energy South Carolina, Georgia Power's IRP, and Florida's FRCC and Tallahassee plans. Public filings are parsed without an AI model, so every project is reproducible and cites its page.
- Locating projects: transmission plans name substations, not coordinates, so we match names against an OpenStreetMap substation gazetteer, with Census county centres as a fallback. Locations are marked approximate when that's all we can do.
- Backend: FastAPI with Postgres + PostGIS. The spatial matching runs in SQL (closest points between lines and sites), then timing, ownership and scoring rules are applied.
- AI: Gemini extracts projects from uploaded plans, drafts coordination briefs, and answers questions by calling our own search tools, so answers cite real projects.
- Frontend: React, TypeScript and Leaflet, with custom canvas rendering for thousands of markers, a live power-grid layer from OpenInfraMap, and a timeline view.
- Shipping: GitHub Actions runs lint and tests (including property-based tests with Hypothesis and fast-check) against a real PostGIS database, then deploys a Docker stack to AWS Lightsail at gridmerge.us.
Challenges we ran into
- Real filings are messy. Tables split across pages, the same company spelled five ways, and dates like "12/3033". Each source needed its own careful parser.
- Near isn't enough. Our first version flagged on distance alone and produced pairs years apart. Requiring projects to be building at the same time made the results much more useful.
- Sister companies look like strangers. "Atlas Solar IV" and "Atlas BESS IV" are the same developer. We built an ownership registry for audited companies and name-family rules for the rest, and we label anything unverified instead of hiding it.
- Placing substations by name. Plenty of places share a substation's name. Getting that wrong puts a project in the wrong state, so we added sourced overrides.
- Performance and feel. Rendering thousands of markers smoothly while flying across the map meant writing our own canvas redraw logic.
Accomplishments that we're proud of
- A working, deployed product at gridmerge.us, where every merge to master is tested and shipped automatically
- Every flagged project traces back to the page it came from
- Going from one regional pair (Dominion SC ↔ Georgia Power) to a nationwide dataset without losing the audited regional results
- AI features that stay grounded: briefs always state the real distance and dates, and Ask answers cite project IDs
What we learned
- For infrastructure data, being traceable matters more than being clever. Planners need to see where a number came from.
- Deterministic parsing plus targeted AI beats sending everything through an LLM: it's cheaper, faster, reproducible, and works without an API key.
- The hard part of "find overlaps" is deciding what counts as one: distance, timing and ownership rules shape the results more than the algorithm does.
What's next for GridMerge
- Add transmission plans from PJM, MISO and ERCOT (nationwide coverage today is mostly generation)
- Grow the corporate ownership registry so fewer opportunities are "ownership unverified"
- Snap planned lines to the real corridors they rebuild, instead of straight segments between substations
- Measure extraction accuracy against a hand-labelled set of plans
- Alerts when a new filing creates a match with your projects
Built With
- actions
- amazon-web-services
- claude
- docker
- fastapi
- gemini
- github
- leaflet.js
- lightsail
- openstreetmap
- postgis
- postgresql
- python
- radar
- react
Log in or sign up for Devpost to join the conversation.