Inspiration
Every year, utilities spend more money, time and resources than they need to on building the grid.
Two utilities plan power lines a few miles apart, on opposite banks of the same river, in the same years. Each brings in its own cranes, sets up its own laydown yard and puts its own crews in hotels. They could share all of that, but neither knows the other is close. Ratepayers cover the bill for the duplicated work.
The waste is serious enough that in 2024 federal regulators issued FERC Order No. 1920 to push utilities to plan together. The information is public. It's just buried in 400-page PDFs and spreadsheets that nobody has time to dig through.
Crewly finds that waste and helps utilities cut it. (help is an understatement, Crewly literally holds their hand and walks them through the process)
What it does
π Reads the filings so you don't have to. Crewly scrapes regulatory filings, ten-year plans and the project lists of about 20 regional planners (PJM, MISO, ERCOT, CAISO, SERTP and more), and turns them into clean, mapped projects.
πΊοΈ One map of every project. Dominion, Georgia Power and every planner's projects sit on a single interactive map, each with its route, voltage and timeline.
π Every overlap, ranked. Crewly finds projects within 40 km of each other and in the same years, then shows what they could share: outage windows, right-of-way, laydown yards, or crews and equipment. It checks real road drive time, not just distance on a map.
π° Savings you can verify. Every estimate is built from published government prices (MISO, BLS, GSA, FEMA, USDA) and cites its source and page. No number comes from an LLM.
π Storm intelligence. Live feeds from NWS, NHC, SPC, USGS and more show which sites are in a storm's path. You can replay Hurricane Helene against today's projects, or use ten years of weather history to find the cheapest months to build
π€ An agent that does the work. It has 68 tools. It ranks overlaps, builds a joint schedule, and drafts the emails, call agendas and cost-sharing memos. Nothing is sent until a human taps Confirm, and requests show up in the other utility's app instantly.
ποΈ Community bounties. Utilities pay residents in SOL for on-the-ground photos after a storm, through an on-chain escrow, because visually confirming a simple damage should not take 3 days and thousands of dollars.
Live at crewly.miami.
How we built it
Scraping the chaos. A Python pipeline pulls filings and planner project lists from dozens of sources. Each format gets its own parser: pypdfium2 plus targeted regexes for the PDFs, and dedicated readers for the spreadsheets and planner sites. Pages that don't match any known pattern go to Gemini for structured extraction.
Finding overlaps. Projects live in PostgreSQL + PostGIS, which computes true closest-point distances between routes. Timelines are compared phase by phase, drive times come from real road routing, and OR-Tools schedules the joint plan.
Pricing it honestly. Every unit price lives in config with its source document, page number and a verified flag. A reconciliation test checks our model against MISO's published totals, so the numbers can't quietly drift.
Watching the weather. Live hazard feeds and ten years of history are stored in TimescaleDB, then matched against every job site.
An agent you can trust. A Gemini tool-calling loop runs over 68 tools, each scoped to the user's company. Every tool returns data for the model and UI cards for the person, and a guard flags any number the model didn't get from a tool.
The app. React 19, TypeScript, Vite, Tailwind and MapLibre, plus a hand-built three.js beaver mascot. Supabase handles auth and realtime messaging between utilities, and Resend sends the emails.
On-chain bounties. An Anchor program on Solana devnet holds each bounty in a PDA escrow, released by 1 to 3 reviewer wallets and tested with LiteSVM. The frontend uses @solana/kit, Wallet Standard and a Codama-generated client.
Everything ships as one Docker image on DigitalOcean.
Challenges we ran into
Figuring out what data mattered. The hardest part was deciding what to scrape and how to organize it cleanly. Every utility publishes differently, so we had to work out which sources actually hold project locations and timelines, turn them into one consistent format, and decide which features a real planner would use rather than just demo.
Putting a price on it without making things up. We refused to show a savings number we couldn't back up. Every estimate counts only the work one partner would no longer pay for twice, priced line by line from published sources (MISO cost guides, BLS wages, GSA per diem, FEMA equipment rates), and a test checks our quantities against MISO's published totals.
Finding a fresh angle on a simple problem. "Utilities should talk to each other" is obvious. The challenge was brainstorming what would actually make it happen: an agent that drafts the outreach, storm replays that show when building together pays off, and community bounties that put eyes on the ground.
Phantom rejected transactions that passed every test. Its injected safety checks didn't fit inside the wallet library's compute budget. We found that by rebuilding and simulating the exact transaction Phantom received.
Accomplishments that we're proud of
In 36 hours, we went from not fully understanding the track to shipping a product that works end to end and is live at crewly.miami.
It works, all the way through. Scraping, mapping, overlap detection, savings, a joint plan and outreach to the other utility all run in one flow, on real public data, with no mock screens.
It's built to hold up. Every dollar figure traces back to a public document and is checked by tests. The overlap rules match the brief exactly. Our 68-tool agent only uses numbers that come from its tools, and nothing is sent without a human confirm. Feel free to push it to its limits.
We pushed outselves to overdeliver Disaster Intelligence, live coordination between utilities, and on-chain community bounties on Solana are all shipped and working,
We thought outside the box All the different ways of streamlining collaboration between utilities, and expanding the meaning of collaboration itself to have the general public collaborating with a utility; we allowed ourselves to propose the most audacious ideas and actually build them.
We grew together. Over 300 commits and hours of sleepless work, we taught each other new tools, from PostGIS to Solana, and each of us walked away able to do things we couldn't before the weekend.
What we learned
Grid planning is a data problem before it's a math problem. We expected the overlap algorithm to be the hard part. It wasn't: PostGIS answers "how close are these two routes?" in a single query. The real work was getting 20 planners' PDFs, spreadsheets and websites to agree on what a "project" even is.
Trust beats cleverness. Planners don't want a confident number. They want one they can check. Tying every unit price to a source, a page number and a
verifiedflag, then testing against MISO's published totals, ended up shaping the whole product, not just the savings screen.Agents should coordinate, not be the source of truth. Our agent became useful the moment we stopped letting it know things and made it call things. With 68 deterministic tools behind it and a guard that flags any number it didn't get from one, it can draft a cost-sharing memo without inventing a single figure.
Use LLMs only where the rules run out. Regexes and dedicated parsers handle most filings quickly and predictably. Gemini only sees the pages nothing else can read, which made the pipeline cheaper, faster and far easier to debug.
"Passes every test" doesn't mean "works for the user." Phantom rejected transactions that ran perfectly in LiteSVM because its injected safety checks blew past our compute budget. Now we test the exact transaction the user's wallet receives, not the one we think we sent.
You can learn a domain in a weekend if you start from the source. We began without fully understanding the track. Reading FERC Order 1920 and real planner filings early kept us from building features that look good in a demo but that no planner would use.
What's next for Crewly
More utilities and regions as Order 1920 takes effect, live crew sharing during storms, Solana mainnet bounties, and pilot conversations in the SERTP region.
Built With
- anchor
- digitalocean
- docker
- fastapi
- gemini
- maplibre
- postgresql
- python
- react
- rust
- solana
- solana-kit
- three.js
- typescript




Log in or sign up for Devpost to join the conversation.