All projectsLead-Gen SaaS

SolarQuote

Bill-to-Solar Estimate Lead Funnel

SolarQuote turns a single electricity bill into a personalized solar ROI estimate — no account, no phone number, no salesperson. Homeowners upload a bill as a PDF or a phone photo; OCR and an LLM read the consumption, tariff, and address straight off the page, satellite irradiance data sizes a rooftop system for that exact location, and the payback and 25-year savings are calculated in the bill's own currency. It works with bills from any country, layout, or language — and every visitor who asks for installer quotes is captured as a lead in an operator dashboard.

Category
Lead-Gen SaaS
Role
Solo design & engineering
AI engine
Mistral OCR + OpenAI
Status
Live · Open source
Built with

Next.jsReactTypeScriptTailwind CSSShadcn/UIBetter AuthPrismaNeon PostgreSQLVercel BlobUpstash RedisMistral OCROpenAI LLMGoogle Maps API

SolarQuote landing page with a sample electricity statement and solar coverage
The landing page — your bill already knows if solar is worth it.
How it works

From bill to estimate.

Every number comes from the homeowner's own bill and their own roof — no tariff tables to maintain, no geographic limits.

Universal bill reading

OCR plus structured LLM extraction pulls consumption, tariff, and address off any bill — any country, language, or layout — with per-field confidence scoring.

Real irradiance, not guesses

Satellite-derived yield from PVGIS with a NASA POWER fallback sizes the system for the exact roof the user pins on a map.

Native-currency economics

The tariff is derived from the uploaded bill itself, so ROI lands in the user's own currency with no tariff database in the loop.

Resilient funnel

Manual-entry fallbacks, graceful degradation, and clear retry states keep the funnel converting even when an external API is down.

The flow

Four steps to a number.

  1. 1Upload an electricity bill — a PDF or a phone photo.
  2. 2OCR and an LLM extract usage, tariff, and address, flagging any low-confidence fields for review.
  3. 3Confirm the roof by dragging a pin on a satellite map.
  4. 4Irradiance data sizes the system and projects 25-year savings in the bill's currency.
  5. 5Request installer quotes — the visitor is captured as a lead.
  6. 6The lead surfaces in the operator dashboard with the full estimate and original bill.
Operator side

Every visitor, a qualified lead.

Lead dashboard

Captured leads with search, status filtering, and estimated annual savings at a glance — behind admin authentication.

Full lead detail

Estimate breakdown, extracted bill fields, the pinned roof map, and the original uploaded document on one page.

Manual-entry leads too

Homeowners without a bill handy can type a few figures by hand and still convert into an estimate and a lead.

SolarQuote savings result with system size, payback, and a 25-year projection chart
The payoff — a full savings projection sized from the uploaded bill and priced in its own currency.
Models

Behind the estimate

OCR
Mistral OCR reads any bill format
Extraction
OpenAI structures usage, tariff, and address
Irradiance
PVGIS with a NASA POWER fallback
Storage
Vercel Blob (bills) · Neon Postgres (leads) via Prisma
Auth & limits
Better Auth (admin) · Upstash Redis (rate limiting)
Gallery

A closer look.

SolarQuote step 1 — upload your electricity bill
Step 1 — drop in a bill, or snap a photo on a phone.
SolarQuote manual-entry fallback form
No bill handy? A manual-entry fallback keeps the funnel converting.
SolarQuote satellite map with a draggable roof pin
Step 3 — drag the pin onto the actual roof to size it for real sun.
SolarQuote get-quotes contact form
The quote request — where a visitor becomes a lead.
SolarQuote lead dashboard listing captured leads
The operator dashboard — leads captured across countries and currencies.
SolarQuote lead detail with estimate and original bill
A single lead — contact, location, estimate breakdown, and the original bill.