Inspiration
Cities are under pressure to cut emissions while budgets stay tight. At the same time, climate conditions are not uniform: urban heat islands, solar resource, electricity prices, and adoption patterns vary block to block. We were inspired by a simple question a city sustainability team might ask:
Where should we invest in solar to maximize environmental benefit per dollar?
SolarSense is our attempt to turn fragmented climate and energy data into a city-scale decision tool for planning high-impact solar investments.
What it does
SolarSense is a city-level solar ROI and impact explorer. It helps planners compare zones across a city using a consistent set of signals, including:
- Estimated solar payback (years) for a standardized installation scenario
- Projected long-horizon savings (e.g., 25-year) under a modeled utility-price trajectory
- Heat-adjusted efficiency to reflect performance differences across hotter vs. cooler zones
- A dataset snapshot layer (adoption index, YoY growth, median estimated annual savings) to contextualize where solar is already scaling and where opportunity gaps exist
- Optional Google Solar Building Insights fields (e.g., sunshine hours, max panels) to ground estimates with rooftop-relevant solar potential when available
- A downloadable PDF report to share a planning brief with stakeholders
While an individual homeowner could use SolarSense to understand neighborhood-level ROI, our primary goal is portfolio-level planning: identifying where a city (or utility / developer) can deploy solar for the highest climate return on investment.
How we built it
- Frontend: React + TypeScript (TanStack Start) with a map-driven workflow and an insight panel that summarizes zone comparisons.
- Modeling: We implemented a transparent, explainable production + economics model. Annual energy production is approximated as:
$$ E_{year} \approx P_{kw}\cdot I \cdot 365 \cdot \eta(T)\cdot d \cdot s $$
Where:
- $P_{kw}$ is installed capacity (kW)
- $I$ is local solar irradiance (kWh/m^2/day)
- $\eta(T)$ is temperature-adjusted efficiency
- $d$ is a system derate factor
- $s$ is an optional calibration term derived from local sunshine-hours signals (when available)
We then estimate avoided grid spend over time using a utility rate model such as:
$$ r(t) = r_0 \cdot (1 + g)^t $$
and compare cumulative cost trajectories (solar vs. grid) to produce payback and long-term savings for decision-making.
- Data pipeline: A reproducible raw --> notebooks/scripts --> processed JSON workflow that outputs
manifest,summary, andregionsaligned to a shared TypeScript API contract. The app can load from a local static fallback or a hosted API/S3 path. - Reporting: PDF export to translate interactive exploration into a shareable artifact for planning discussions.
Challenges we ran into
- Designing for city-scale decisions: We had to ensure the tool supports comparisons and prioritization (not just a single “calculator result”).
- Data heterogeneity: Combining multiple sources into one stable schema without losing interpretability.
- Truthfulness under uncertainty: Solar ROI depends on financing, incentives, load profiles, interconnection, and site constraints; we focused on a model that is consistent, transparent, and scenario-driven.
Accomplishments that we're proud of
- A complete end-to-end workflow: ETL --> validated datasets --> interactive zone insights --> PDF brief.
- An approach that ties environmental conditions (heat + sunshine context) to economic feasibility (payback + savings) to support climate-prioritized investment.
- A typed contract + validation gate that makes it easy to scale to additional cities, datasets, and richer impact metrics.
What we learned
- Climate planning tools are most useful when they optimize for a clear objective. For example, a city might:
-maximize impact per dollar (e.g., $ per ton of CO2 avoided)
- minimize payback time
- operate under constraints (budget, interconnection capacity, land use, equity priorities)
Even when the full constraint set isn’t modeled yet, structuring data and UX around comparisons makes the tool immediately more actionable.
- A strong schema and validation pipeline reduces iteration risk and makes results easier to trust and communicate.
What's next for SolarSense
- Add explicit city-planning objectives and rankings (e.g., “top zones by cost per ton of CO2 avoided”).
- Expand the ETL beyond a single city and incorporate more granular constraints (roof area availability, grid capacity, land-use constraints, equity priorities).
- Integrate incentives, financing, and procurement-scale assumptions to better represent municipal and utility-scale deployments.
- Produce “planning brief” outputs tailored for stakeholders (city councils, utilities, community orgs) with transparent assumptions and sensitivity analysis.
Built With
- amazon-web-services
- framer
- gemini-api
- google-cloud
- javascript
- jspdf
- leaflet.js
- maplibre
- python
- radix
- react
- recharts
- tailwind
- tanstack
- turf.js
- typescript
- vite
Log in or sign up for Devpost to join the conversation.