The rule we build to
Use AI to understand, organise and explain. Use authoritative data to know. Use deterministic models to calculate. Use you to confirm. Use qualified installers to verify and quote. Where a trustworthy answer isn’t available, we say so and give you the best next step instead of inventing one.
Roof data
After geocoding your address we ask a geospatial provider for the building closest to that point. It returns the roof’s distinct planes with their pitch, compass orientation, area and measured annual sunshine, plus candidate panel positions and the module dimensions its layout model used. We normalise those into our own representation and never assume a panel wattage — the wattage comes from the provider or from a specific module you select.
We always ask you to confirm the building before analysing it, because a geocode can land on a neighbour, a garage or an apartment block. We show you when the aerial imagery was captured. If your property isn’t covered, the lookup fails, or you tell us we found the wrong building, you can describe your roof faces yourself — production is still modelled, and the result is marked preliminary.
Panel placement
We select from the provider’s candidate positions using a stable, deterministic ranking — highest modelled output first, with ties broken by roof face and position so the same inputs always give the same layout. We never generate a panel position ourselves.
This is a conceptual layout, not an engineered plan. Final panel placement, fire-code setbacks, access pathways, structural requirements and code compliance must be verified by your installer and the local authority having jurisdiction. We do not claim any layout meets code.
Production modelling
Where both are available we run two independent models and compare them:
- Model A sums the geospatial provider’s modelled DC output for each panel you’ve selected, then converts it to AC using an assumed 85% DC-to-AC ratio so it’s comparable.
- Model B runs NREL PVWatts v8 against each roof face separately, using that face’s own tilt and orientation at 14.08% system losses, then aggregates. We never send an averaged tilt or orientation, because averaging materially different roof planes loses real accuracy.
We do not pick whichever number is larger. We measure the difference between them as a percentage of their mean and respond to it:
| Difference | What we do |
|---|
| Under 5% | Close agreement — narrow range around the midpoint. |
| 5–10% | Normal modelling variance — range spans both models. |
| 10–15% | Moderate uncertainty — range spans both models, production confidence drops. |
| Over 15% | Range widened beyond both models, confidence set to preliminary, and the discrepancy logged for review. |
These thresholds are product rules, not scientific constants. They are configurable and are calibrated against real outcomes over time. If only one model is available we use it with a deliberately wider range; if neither succeeds we show no production figure at all.
Your electricity use
We use the best input you give us, in this order: twelve months of actual kWh; a utility-stated annual total; partial months scaled to a year (labelled as an extrapolation); an annual figure you enter; a single month treated as typical; and last, an approximation from your bill dollars — which we will only calculate with an electricity rate you supply, and which we always label as an approximation.
If you give us none of those, we produce no usage figure and no offset percentage. We do not substitute a national average.
Cost
Pricing is deterministic. AI never sets a price. The engine multiplies your system’s watts by a dollars-per-watt band for its size, then adds line items whose triggers are objective — steep or multi-plane roofs come from your roof geometry, electrical work comes from what you told us, and permitting is an explicitly labelled allowance. Nothing is added because something “looked like” it applied.
Current pricing status: the active configuration is solar-pricing-default-2026-09-05-v2 for DMV (planning default — not market-derived), based on no local proposal data yet. Because that is not local market evidence, dollar figures are withheld from the planner until a reviewed local pricing model is published. Everything else — roof analysis, system size, production, offset — still works.
Incentives
We display an incentive only when we hold its source, jurisdiction, effective and expiry dates, eligibility summary and a verification date, and only when its jurisdiction actually matches your project. Programs whose verification has gone stale are withheld rather than shown. Programs whose eligibility hasn’t been established for your project are listed but never subtracted from a cost.
We do not hard-code federal tax assumptions. Anything shown is planning information, not tax advice — verify eligibility with the program administrator or a tax professional before relying on it.
Confidence
We score five things separately — roof data, electricity use, production modelling, cost and incentives — and report the weakest of the first four as your overall planning confidence. Each dimension explains itself and, where possible, tells you exactly what would improve it.
Where AI is used
AI may
- Read structured values out of a document you upload, as a draft for you to confirm
- Turn a free-text description into candidate answers for you to confirm
- Suggest what a photo appears to show, for you to confirm
- Explain results that were calculated deterministically
- Point out information that’s missing or contradictory
AI never
- Determines roof dimensions, pitch, orientation or sunlight
- Invents panel counts or positions
- Calculates energy production
- Sets prices or invents incentives
- Determines permit requirements or code compliance
- Assesses structural adequacy or roof condition
- Judges contractor licensing or availability
The current release of the solar planner uses no AI at all in the estimate path.
Data sources in use right now
| Source | Status |
|---|
| Google Geocoding API | Active |
| Google Solar API (Building Insights) | Active |
| NREL PVWatts v8 | Active |
| OpenEI Utility Rate Database | Active |
| Renovessa reviewed incentive register | Active |
Independent production modelling currently uses NREL PVWatts v8. Utility rate data, where available, comes from the OpenEI Utility Rate Database. Roof analysis and aerial imagery use Google Maps Platform.
What we do not determine
- Whether your roof can structurally carry an array
- Your roof’s condition or remaining service life
- Fire-code setbacks, access pathways or any code compliance
- Your main panel’s capacity or the interconnection method
- Permit requirements or fees for your jurisdiction
- Your final production, your final price, or your savings
All of these need a licensed installer on your roof. That’s what the project brief is for.
Version record
Every estimate is stored with the exact calculation versions and the input snapshot that produced it, so a result you saw last month stays explainable after we change the rules.
- Layout engine:
- solar-layout-2026-09-04-v2
- Production model:
- solar-production-2026-09-04-v2
- Consumption model:
- solar-consumption-2026-08-10-v1
- Cost engine:
- solar-cost-engine-2026-08-10-v1
- Confidence model:
- solar-confidence-2026-08-10-v1
- Pricing configuration:
- solar-pricing-default-2026-09-05-v2
Questions about any of this? Get in touch. See also our general estimate methodology.