In active development · Pre-launch

SOLAR FAULTS
RESOLVED.
AUTOMATICALLY.

SSA pulls fault alerts out of the monitoring platforms you already use, normalizes them into one error-code taxonomy, and auto-dispatches your nearest technician — then tracks labor and builds the invoice. Enphase and AlsoEnergy PowerTrack are wired first; 24 more platforms are mapped in the roster.

26
Providers In Roster
64
Normalized Error Codes
47
Provider Code Mappings
9
Fault Categories
ssa-dispatch-engine — sample run
The Problem

SOLAR OPS IS
BROKEN BY DEFAULT

Dozens of monitoring platforms. Zero common language. Every fault alert arrives in a different format — and your techs are still dispatched by phone.

01
Fragmented Alert Formats
Enphase sends INV-200, SolarEdge sends ALERT_INVERTER_OFFLINE, SMA sends SMA-100 — all meaning the same inverter failure. Your team manually decodes each one.
02
Manual Dispatch Delays
Coordinators call techs, leave voicemails, then call backups. Critical faults sit idle for hours while customers call in — and nobody can say exactly how long, because nothing is timestamped.
03
Labor Tracking Gaps
Paper timesheets or manual clock-ins mean billable hours are lost or disputed. A 30-minute argument over drive time erases $40 in revenue.
04
Billing Cycle Delays
Invoices created days after job completion. Parts forgotten. Collections drag 45+ days — crushing cash flow for growing service companies.
// Illustrative Model — 500-System Operator
Lost labor (manual dispatch)$28K
Underbilled labor hours$19K
Parts not invoiced$11K
Coordinator overhead$34K
Churn (slow response times)$22K
Total Annual Drag$114K
Modeled figures, not measured results. These are our own assumptions for a hypothetical 500-system operator, published so you can check them against your own numbers — not data from SSA customers.
Process

HOW SSA WORKS

From provider alert to paid invoice — four automated steps, no coordinator in the loop.

STEP 01
📡
Fault Ingested
Almost no solar platform pushes fault webhooks, so SSA polls. A scheduled job runs each provider adapter against your monitoring account on a fixed cadence. Platforms that can push get an HMAC-signed webhook lane instead. Alerts are keyed on provider + external ID, so a re-poll never opens a second ticket.
STEP 02
🔄
Code Normalized
Raw provider code mapped through 47 known mappings into the unified SSA-{CAT}-{SEV}-{SEQ} taxonomy. Severity, dispatch priority, flat labor estimate, and typical parts come with it. Unrecognized codes land in SSA-UNK for review rather than being dropped.
STEP 03
🚀
Tech Dispatched
A normalized alert enqueues a durable dispatch job. The engine finds your nearest available technician by PostGIS proximity, then fires SMS + push. Failures retry with backoff; anything that exhausts its retries lands in a dead-letter queue you can see and requeue from the dashboard, instead of vanishing.
STEP 04
💳
Invoice Sent
The tech app geofences the site and clocks in on arrival, out on departure. A 30-minute billable minimum is enforced in the database, not in a spreadsheet. Labor + parts assemble into an itemized Stripe invoice on job close. Geofenced tracking ships with the mobile app — see the roadmap below.
Integrations

PROVIDER COVERAGE

SSA reads from the monitoring platforms you already log into. These are integration targets, not business partnerships — every vendor below is listed by build status, and we don’t claim a relationship with any of them.

// A note on how ingestion actually works
We surveyed the market and found that essentially no solar provider offers a push webhook for fault alerts. So SSA is poll-first: adapters authenticate to each platform with credentials you delegate, and pull alerts on a schedule. The generic webhook lane exists for platforms that can push. Where a vendor has no usable public alert API at all — Sunrun and GE Vernova today — coverage runs through the underlying OEM hardware or the generic webhook, and we say so rather than implying a direct integration.
Built & Tested · 3 Adapters
Enphase
Poll adapter · residential
11 code mappings → SSA-NET, SSA-INV, SSA-PNL, SSA-BAT
Alerts endpoint verified · fixture-tested
AlsoEnergy PowerTrack
Poll adapter · C&I fleet
Alarms API with ack / resolve writeback
Alerts endpoint verified · fixture-tested
Generic Webhook
HMAC push lane
Signed inbound payloads → any mapped code
For platforms that can push, and custom exports
Mapped · Adapter Not Yet Written · 10 Platforms
SolarEdge
Residential + C&I
Code mappings seeded · adapter in Wave 2
SMA
String + Hybrid
Code mappings seeded · adapter in Wave 2
Fronius
Residential + C&I
Roster + taxonomy ready · adapter in Wave 2
meteocontrol VCOM
C&I portfolio monitoring
Roster + taxonomy ready · adapter in Wave 2
Tesla
Solar + Powerwall
Roster + taxonomy ready · developer access pending
Sungrow
Residential + C&I
Roster + taxonomy ready · developer access pending
Tigo
Module-level electronics
Roster + taxonomy ready · adapter in Wave 2
Huawei FusionSolar
Residential + C&I
Roster + taxonomy ready · adapter not started
SunPower / Maxeon
Premium residential
Roster entry · routes via underlying inverter OEM
GE Vernova
Commercial string inverter
No public alert API · generic webhook export only
In Roster · Stub Adapters Scaffolded · 13 Platforms
Sunrun
Residential + Storage
No alert API · route via OEM hardware
Generac
Storage + PV
Stub adapter · business development queue
GoodWe
Residential + C&I
Stub adapter · business development queue
Sol-Ark
Hybrid inverters
Stub adapter · business development queue
APsystems
Microinverter
Stub adapter · business development queue
FranklinWH
Home storage
Stub adapter · business development queue
sonnen
Home storage
Stub adapter · business development queue
Solis
String inverters
Stub adapter · business development queue
Hoymiles
Microinverter
Stub adapter · business development queue
Power Factors
Utility-scale asset management
Stub adapter · business development queue
Solar-Log
Independent monitoring
Stub adapter · business development queue
FIMER
String + central inverters
Stub adapter · business development queue
CPS America
C&I string inverters
Stub adapter · business development queue
Customer Monetization Model

HOW SSA CREATES RECURRING REVENUE
FOR SOLAR SERVICE COMPANIES

Two simple models that turn fault streams into recurring revenue and pre-authorized work orders.

Turn Every Solar System Into $29.99/Month Recurring Revenue

Service companies embed a $29.99/month per-system monitoring fee into their customer contracts. SSA powers the monitoring, alerting, and dispatch infrastructure and bills the fee through Stripe on your behalf. You collect the fee, pay a flat monthly platform subscription, and keep the margin — SSA does not take a percentage of your monitoring revenue.

// Illustrative — hypothetical operator with 500 monitored systems
500 systems × $29.99 gross monitoring revenue$14,995/mo
SSA platform license (Growth)−$4,900/mo
Net monitoring margin$10,095/mo
Annualized$121,140
Illustrative arithmetic only. It assumes you can sell the monitoring fee to every system you service, and it excludes your own labor, truck, and support costs. It is not a forecast and not a customer result.
No Approval Delays. Pre-Authorized. Instant Dispatch. — PLANNED

The intended model: your customers sign a Master Service Agreement that includes a fixed repair price schedule, so common fault types and their repair costs are agreed in advance — parts + labor. When an alert fires, dispatch happens immediately because the work order is already authorized. Price-schedule management is not built yet — today SSA dispatches and then invoices from actual labor and parts. The table below is an example of the schedule shape, not live pricing.

Fault TypeSSA CodeFixed Repair PriceIncludes
Microinverter replacementSSA-INV-C-001$285Parts + 1hr labor
Gateway / comm resetSSA-NET-M-001$9530min labor
Panel string repairSSA-PNL-H-001$195Parts + 1hr labor
Battery disconnectSSA-BAT-C-001$145Diagnostic + reset
Grid reconnectSSA-GRD-H-001$12545min labor
// Example figures illustrating the schedule format — not SSA rates and not yet enforced in product
Platform

BUILT FOR
SOLAR SERVICE OPS

Every feature purpose-built for field service teams managing distributed solar assets at scale.

📡
Real-Time Fault Ingestion
Scheduled poll adapters pull alerts from provider APIs using credentials you delegate per org, plus an HMAC-signed webhook lane for platforms that can push. Ingestion is idempotent on provider + external ID, so re-polls and replayed webhooks never fire a duplicate service call.
poll-providers · ingest-webhook
🔢
Unified Error Taxonomy
64 normalized SSA codes across 9 categories with severity C/H/M/L, dispatch priority 1–5, and flat labor hour estimates — fed by 47 seeded provider code mappings. One language, every provider.
SSA-{CAT}-{SEV}-{SEQ}
🚀
Durable Auto-Dispatch
PostGIS proximity search finds your nearest available technician, then Twilio SMS and Expo push fire together. Every dispatch runs as a queued job with retry and backoff — a failed notification is retried, not lost, and exhausted jobs surface in a dead-letter view you can requeue from.
dispatch-engine · dispatch_jobs
📍
Geofence Time Tracking — IN BUILD
A geofence around the job site auto-clocks technicians in on arrival and out on departure. The 30-minute billable minimum is already enforced in the database and unit-tested. The geofencing itself ships with the technician mobile app, which is the next phase of work.
geo-event · PostGIS
💳
Automated Invoicing
Labor sessions and the 36-part catalog assemble into an itemized invoice the moment a job closes, priced by one unit-tested math module shared by the app, the invoice function, and Stripe — so the number the tech sees, the number you bill, and the number tested can’t drift apart.
generate-invoice · Stripe
🏢
True Multi-Tenant SaaS
Row-Level Security on every tenant table, with org_id and role injected as JWT claims at auth time. Every privileged route re-checks your membership server-side rather than trusting the token — and the whole role matrix was verified by live HTTP tests, not just code review.
Supabase RLS · server-side RBAC
Platform Tour

THE SSA PLATFORM
EVERY WORKFLOW, ONE SYSTEM

Six interfaces for the people who actually run solar service ops — from the dispatcher’s desk to the technician’s pocket. These are design mockups with sample data: the five web interfaces are built, the technician app is the next phase.

ssa.app/dashboard
// Admin Dashboard
OPERATIONS OVERVIEW
Open Alerts
47
Active Techs
12
Revenue MTD
$28,450
Avg Response
18min
ProviderSSA CodeSevStatus
EnphaseSSA-INV-C-001CDispatched
SolarEdgeSSA-BAT-H-002HIn Progress
SMASSA-NET-M-001MCompleted
ssa.app/dispatch
// Dispatch Board
LIVE KANBAN
Pending3
M. Garcia
SSA-INV-C-001
R. Patel
SSA-GRD-C-001
S. Lee
SSA-NET-H-001
Dispatched2
D. Chen
SSA-INV-H-001
Tech-0042
A. Foster
SSA-BAT-M-003
Tech-0017
In Progress2
L. Brooks
SSA-PNL-H-001
Tech-0008
J. Reyes
SSA-MET-M-001
Tech-0023
Completed5
K. Nguyen
SSA-INV-M-002
B. Walsh
SSA-NET-M-001
+ 3 more
today
ssa.app/alerts/inspect
// Alert Normalization
RAW PAYLOAD → CANONICAL CODE
Inbound · Enphase poll
MIC-301
"Microinverter not reporting"
site_id: ENP-22841 · ts: 14:08:21Z
Normalized · SSA registry
SSA-PNL-H-003
Microinverter offline · High severity
priority: P2 · flat_labor: 1.0h · confidence: 1.00
ssa-tech.app · iOS / Android
// Technician App — in build
JOB DETAIL · ON-SITE
9:415G   88%
SR-2847 · CRITICAL
CustomerM. Garcia
Address1247 Olive St, San Diego, CA
SSA CodeSSA-INV-C-001
PartsIQ8M-72-2-US ×1
⏱ ON SITE
00:23:45
Pause
Complete
ssa.app/invoice/INV-4827
// Customer Invoice
AUTO-GENERATED · STRIPE
Your Solar Service Co
Solar Service Invoice
INV-4827
May 03, 2026
Monthly monitoring fee$29.99
Repair labor · SSA-INV-C-001 (1.0h)$185.00
Parts · IQ8M microinverter$100.00
Tax (8.75%)$27.65
Total Due$342.64
Pay with Stripe →
ssa.app/registry
// Error Code Registry
SSA TAXONOMY · 64 CODES
CodeCategorySevProvider Maps
SSA-INV-C-003INVC7 mappings
SSA-INV-M-008INVM4 mappings
SSA-INV-H-004INVH4 mappings
SSA-INV-C-001INVC3 mappings
SSA-PNL-H-007PNLH3 mappings
Taxonomy

SSA ERROR CODE
REGISTRY

Every provider fault maps to a canonical SSA code. One language across your entire operation.

// ssa_error_codes 64 codes · 47 mappings · 26 providers
SSA CodeCategorySevTitleLabor
// Categories
INV
Inverter
12
BAT
Battery
9
SYS
System
8
PNL
Panel
8
NET
Network
6
MET
Metering
6
GRD
Grid
6
ENV
Environmental
6
UNK
Unknown
3
Market

THE OPPORTUNITY

Solar isn’t slowing down — and neither are the faults that come with 5 million installations.

$22B
US Solar O&M Market by 2027
CAGR 14.2% · Wood Mackenzie
5.7M
Residential Solar Installations
Growing 600K/yr · SEIA 2024
26
Monitoring Platforms In Our Roster
Surveyed · mapped to one taxonomy
Use Cases

WHO WE’RE
BUILDING FOR

From a single crew to a regional fleet. SSA is pre-launch and has no customers yet — these are the operations we designed the product around, and what it does for each. No results are claimed.

🏠
Residential
Residential O&M Operator
An O&M company services 800 residential systems across a metro county, monitored through Enphase. A coordinator watches the portal and works the phones; critical inverter faults can sit for hours before a tech is en route.
What SSA does: polls the Enphase account, normalizes each fault to an SSA code with severity and labor estimate, and dispatches the nearest available tech automatically — no coordinator in the loop, and every step timestamped so response time becomes a number you can actually manage.
🏢
Commercial
Enphase EPC Contractor
A commercial EPC manages 120 rooftop installs averaging 50kW. Ground-fault conditions such as Enphase GRID-501 carry same-day response obligations under their service agreements.
What SSA does: routes critical-severity codes to dispatch first by priority rank, sends the tech the fault context and likely parts before they leave, and records labor against the job so the billable hours make it onto an invoice instead of a notepad.
C&I Fleet
Multi-Site Asset Manager
An asset manager runs a portfolio of commercial sites monitored in AlsoEnergy PowerTrack, where mixed inverter brands each speak their own alarm dialect and downtime is measured in curtailed production.
What SSA does: pulls PowerTrack alarms on a schedule, collapses every vendor dialect into one code set your whole team reads, and acknowledges or resolves the alarm back in PowerTrack when the job closes — so the source system stays in sync.
Pricing

SIMPLE, SCALABLE
PRICING

Start small. Scale when you’re ready. No per-fault fees, and no cut of your monitoring revenue. Tiers are limited by technician seats and connected providers — not by how many systems you monitor. Pricing is set but not yet open for self-serve signup.

Starter
$1,900/month
For solo operators and small crews getting started with automated dispatch.
  • Up to 10 technicians
  • Up to 3 connected providers
  • Unlimited monitored systems
  • Scheduled alert polling + webhook lane
  • Auto-dispatch via SMS + push notification
  • Labor tracking + automated Stripe invoicing
  • Full SSA error code registry
  • Email support
Enterprise
$9,900/month
For regional service companies and ISPs managing hundreds of techs across multiple states.
  • Unlimited technicians
  • Unlimited connected providers
  • Everything in Growth
  • Direct line to the team building it
  • Adapter prioritization for your providers
  • Onboarding + data migration support
  • White-label portal — planned
  • Public API — planned
Technology

BUILT ON THE
RIGHT FOUNDATION

The stack SSA is being built on, and why each piece is there.

Supabase
Postgres + PostGIS + Row-Level Security. Spatial queries for geofencing and proximity dispatch.
Next.js 14
App Router with SSR and real-time Supabase subscriptions for the ops dashboard.
📱
Expo SDK 51
React Native technician app with Expo Router v3, background location, and push notifications. Scaffolded; the full app is the current phase of work.
🦖
Deno Edge
Supabase Edge Functions for provider polling, webhook ingest, the dispatch engine, and invoice generation. Internal functions are gated by a shared secret, not left open.
💬
Twilio
SMS dispatch notifications. The notify layer is driver-based, so the whole pipeline can run in log mode for testing without sending a single real message.
💳
Stripe
SaaS subscription billing + per-job invoicing. Automatic payment collection with email receipts.
📦
Turborepo
pnpm monorepo with shared types, constants, and full database schema as typed packages.
🔶
TypeScript
End-to-end type safety from DB schema to edge function payloads to mobile app UI.
Enterprise Licensing

ENTERPRISE LICENSING
BUILT FOR SCALE

For regional and national solar O&M companies managing hundreds of technicians across multiple states. Two of these are live in the product today; the rest are committed roadmap, marked as such.

Unlimited Scale · available
No technician or provider caps. Monitored systems are never metered on any tier.
Adapter Prioritization · available
Tell us which monitoring platforms your fleet runs on and we build those adapters next.
Multi-Region Dispatch · planned
Separate boards per region, unified reporting.
White-Label Portal · planned
Your brand. Your customer experience. SSA infrastructure.
MSA Price Schedules · planned
Manage pre-authorized repair pricing across many contracts.
Public API · planned
Integrate SSA data into your ERP, CRM, or field service tools.

If you run a large fleet, talk to us now — early operators shape which adapters and features get built first.

Talk To Us →
Build Status

WHERE SSA
ACTUALLY IS

Most software gets marketed before it exists. Here is the honest state of the build, phase by phase — what’s done, what we’re on, and what’s still ahead. If you’re evaluating SSA, evaluate this.

✓ PHASE 0
Foundation
Monorepo scaffold — web app, mobile app, shared packages, and the Supabase project wired together with typechecking and linting green from day one.
✓ PHASE 1
Data Model & Taxonomy
Ten database migrations with Row-Level Security on every tenant table, plus the seeded content that makes the product work: 64 SSA error codes, 47 provider code mappings, 36 catalog parts, and a 26-platform provider roster. Org and role claims are injected into the auth token and verified.
✓ PHASE 2
Normalizer Engine
The translation layer that turns any provider’s fault code into an SSA code, with a confidence score and a fallback to SSA-UNK rather than a silent drop. Covered by unit tests.
✓ PHASE 3
Ingest & Durable Dispatch
The provider adapter framework (Enphase and AlsoEnergy PowerTrack built and tested, 13 more scaffolded), the signed webhook lane, and the dispatch engine with retry, backoff, and a dead-letter queue. Verified end to end against a running stack — signed webhook in, normalized alert, auto-dispatch to nearest tech, notification out; bad signatures rejected; duplicate polls proven not to double-dispatch.
✓ PHASE 4
Web Operations App
Sign-in, onboarding, the dashboard with a live alert feed, alert detail, the dispatch Kanban with a server-enforced state machine, and the customers, technicians, registry, invoices, team, and settings pages. The full role matrix was tested with real sessions, not just reviewed — wrong roles are refused, nobody can escalate their own permissions, and the last owner of an org cannot lock everyone out.
▸ PHASE 5
Billing & Invoicing — IN PROGRESS NOW
Subscription checkout and plan management, the $29.99/month per-customer monitoring fee, the invoice math module with its 30-minute labor floor, invoice generation on job completion, and the customer-facing pay page. Written and unit-tested; final verification is gated on connecting live payment credentials.
○ PHASE 6
Technician Mobile App
The field half of the product: job feed, job detail, status updates, push notifications, and the geofenced clock-in/clock-out that makes labor tracking automatic. This is the phase that turns the invoicing pipeline from correct-on-paper into hands-free.
○ PHASE 7
Hardening & Launch
Production infrastructure, real provider credentials in place of test fixtures, live end-to-end runs against real solar hardware, monitoring and alerting on our own pipeline, then onboarding the first operators.
// Not built yet — stated plainly
The technician mobile app and geofenced time tracking. Live adapters for any provider beyond Enphase and AlsoEnergy. MSA repair price schedules. White-label portals, a public API, and multi-region dispatch. Self-serve signup. We have no paying customers and make no claims about results, uptime, or compliance certifications.
Early Access

STOP DISPATCHING
BY PHONE.

SSA is pre-launch. Leave your email and we’ll bring you in as an early operator — you’ll help decide which monitoring platforms we integrate next, and we’ll be straight with you about what does and doesn’t work yet.

✓ You’re on the list — we’ll be in touch.

No credit card. No spam, ever.