Inspiration
Grundfos reps spend weeks cold-calling building owners without knowing which rooftops are actually worth pursuing for rainwater harvesting.
We wanted to remove that guesswork and replace it with a map that shows exactly where the opportunity is, building by building.
What it does
Terrasight is a map-based prospecting tool that surfaces commercial buildings across the US that are strong candidates for rainwater harvesting.
Each building gets a 0–100 viability score based on:
- roof area (satellite data)
- cooling tower presence
- local rainfall
- water costs
Reps can:
- zoom into any region
- see ranked prospects with estimated savings and breakeven
- inspect buildings via Street View
- export leads to CSV
What used to take weeks now takes minutes.
How we built it
Frontend
- React + TypeScript
- MapLibre GL JS (dark, light, satellite modes)
- Zustand (state management)
- TanStack Query (data fetching)
Backend
- FastAPI + PostGIS
- Preprocessed building data
- YOLO-based CV pipeline to detect cooling towers and rooftop equipment
Data
- Building footprints: OpenStreetMap
- Rainfall: Open-Meteo
- Water rates: state datasets
- Financials: EPA benchmarks (15–25 gal/sqft/year) + industry cost models
Challenges
Geospatial accuracy A centroid-based approach placed a Texas building in Oklahoma. Fixed using ray-casting with state boundary GeoJSON.
Financial model issues Early formulas canceled out roof area, giving identical ~16.5-year breakeven for every building. Reworked to include cooling demand, water pricing, and install costs.
Map rendering Handling nested GeoJSON without duplicate source conflicts in MapLibre required careful layer management.
What worked
- End-to-end flow: national view to building-level insights with Street View and financials in under 30 seconds
- CV-detected cooling towers and roof polygons rendered directly on the map
- Financial outputs vary meaningfully across buildings
What we learned
- Preprocessing is critical for CV-heavy applications
- Small formula errors scale fast across large datasets
- MapLibre is powerful, but source and layer management needs discipline
What’s next
- Expand coverage to the full US
- Add ESG signals (SEC EDGAR, SBTi)
- Integrate with Salesforce and HubSpot
- Include rebates and stormwater offsets in ROI
- Build a mobile-friendly experience for field reps
Built With
- fastapi
- google-maps
- mapbox
- maplibre
- python
- react
- typescript
- yolov8
Log in or sign up for Devpost to join the conversation.