SOLPOP
Multimodal AI Inspection Platform for Solar Fleets

Overview
SOLPOP is a multimodal AI platform that turns a single solar panel photo into an inspector-grade O&M report in under a minute. Drop one image or batch up to 24 — the system auto-detects every distinct module in the frame, grades each against a 21-defect taxonomy, and synthesizes a fleet-level report with severity heatmap, prioritized 7/30/90-day actions, and quantified kWh/kW loss. Built for solar farm operators, asset owners, drone inspectors, and insurance claims adjusters who need fast, evidence-backed condition data without hiring a thermal-imaging crew.
Not publicly deployed.
Book a 20-minute private walkthrough and I will run the whole system end-to-end: architecture, code path, live UI, and the edge cases that shaped it.
Book a private demoThe Problem
Solar fleets quietly lose 5 to 15% of annual output to defects visible from the ground — soiling, microcracks, hotspots, partial shading. Diagnosing it today means hiring a thermal-drone service, waiting weeks, and paying four to five figures per site. Existing analytics platforms charge enterprise contracts and ignore the long tail of installers and asset owners running 100 kW to 10 MW fleets.
The Solution
A two-stage AI pipeline. Gemini 2.5 Flash sees the array — detects every panel, grounds defects with bounding boxes at cell-region precision, and emits strict JSON. Llama 3.3 70B on Groq aggregates that into an executive O&M report with health scores, ranked risks, and quantified energy loss. Results stream as NDJSON so panels light up live. Every AI call is audit-logged with pinned model versions for warranty-grade reproducibility. Free tier with BYO keys, scaling into a multi-tenant SaaS for solar farms.
Project Walkthrough
Agent Architecture
Panel-Gate Classifier
Multi-Panel Detector
Per-Panel Vision Inspector
Fleet Synthesis Analyst
Inspector Chat (fleet copilot)
Defect Educator
System Architecture

Technology Stack
frontend
- Next.js 16 (App Router, Turbopack, React 19)
- TypeScript end-to-end
- Tailwind v4 + custom industrial-brutalist design system
- Framer Motion (springs, useScroll + useSpring parallax, count-ups)
- Lenis smooth-scroll
- Geist Sans + Geist Mono + Instrument Serif
- react-dropzone, react-markdown, react-pdf, lucide-react
backend
- Next.js Route Handlers (Node runtime, maxDuration 300 s)
- NDJSON streaming (start / progress / detected / panel / synthesizing / report / done / rejected)
- Zod schemas validate every model response before state
- sharp (image normalize, EXIF-preserved crop, JPEG re-encode)
- exifr (GPS, altitude, heading, takenAt, device extract)
- In-memory token-bucket rate-limiting (per-IP, swappable to Redis)
- @react-pdf/renderer (server-side PDF claim packet)
ai
- Gemini 2.5 Flash for vision (panel-gate, multi-panel detect, per-panel) + Gemini 2.0 Flash fallback
- Llama 3.3 70B Versatile on Groq for synthesis, chat, explainer
- Prompt-version pinning (SHA-256 hash of system + user prompt)
- Per-call audit log: { model, version, prompt-hash, payload-hash, latency, status, error }
- JSON-mode forced on all structured outputs
- Rate-limit-aware retry w/ Retry-After parsing
- NMS dedup on overlapping detection bboxes
data
- Drizzle ORM (sqlite default via better-sqlite3, Postgres swap on DATABASE_URL)
- 18-table schema: orgs, users, memberships, sites, strings, modules, inspections, inspection_images, panel_results, defects, reports, audit_log, model_versions, api_keys, usage_events, shares, jobs, webhook_subs
- IndexedDB via idb (per-browser session history, thumbnails)
- Append-only JSONL audit log (.solpop-audit/<date>.jsonl)
- 30-day TTL DB-backed shareable links
infrastructure
- Local dev: Next dev (Turbopack), sqlite WAL, filesystem audit
- Production-ready: Postgres swap via DATABASE_URL, Vercel deploy target
- R2/S3 image storage hook, Inngest queue hook (jobs table scaffolded)
- BYO API keys (per-org Gemini + Groq) + metered fallback path
- 17 routes (9 pages + 8 API), build-static or server-rendered as appropriate
- Tagged releases: v1.0.0 (capstone), v2.0.0-alpha (SaaS foundation)
Key Features
21-defect taxonomy with severity-graded bounding-box grounding (cracks, hotspots, soiling, PID, delamination, shading, more)
Multi-panel auto-segmentation from a single drone shot (Gemini grounding → server-side sharp crop → parallel per-panel analysis)
Live streaming dashboard — panels flip green as their analyses land
Per-panel deep-dive sheet: PDF claim packet, annotated PNG export, time-series re-inspection diff, cross-session compare, what-if ROI simulator
AI Inspector Chat scoped to session JSON, with 4 personas (engineer, junior, claims, investor) and 7-language synthesis
Audit log + model-version pinning on every AI call — reproducible reports for warranty, insurance, compliance audits
Screenshots
Project Presentation
15 slides
Full SOLPOP deck — problem space, two-stage AI pipeline, 21-defect taxonomy, audit-grade reproducibility, and the SaaS evolution plan.
Download deck PDF
















