Six journeys that open a market or close a live deal
Hi-fi screens drawn inside the SurgePV shell with invented data for Suryatech Solar, Northwind Commercial Solar and others. 62 screens across 6 journeys; 59 are tagged Needs backend work. Click a screen to open it. Nothing here talks to the real app.
Where these come from
- Each journey is a DO NOW or TEST item from
product/roadmap/ideas-triage-2026-10-20.md, tied to a named deal or market inrequirements-register-2026-10-20.md. - The shell uses design-studio-FE tokens (square chrome, blue-500, neutral ramp). Studio screens follow the live app's rail, summary strip and right panel.
- Every screen shows one state. Loading, empty, error and phone states are included so the honest cases are visible before build.
- "Needs backend work" names the concrete missing piece, checked against the backend repo on 18 Oct 2026.
Smart Fill: fill a roof to a target kW on the best faces
Needs backend work The per-panel annual irradiation API exists (served 15 Oct 2026). A capacity-constrained fill algorithm (rank, remove, snap to strings and rows) and a face-ranking service that aggregates irradiation and loss cause per face do not; chained re-stringing and simulation after a fill also needs a job endpoint.


Needs backend work Panel and heatmap overlay are front end on top of the existing heatmap API. The 'Lowest shading loss' option needs a per-panel shading-loss value, which the heatmap API does not return today.

Needs backend work A capacity-constrained fill algorithm (rank positions, remove lowest, snap to whole strings and rows) and a face-ranking service that aggregates per-panel irradiation by face. Neither exists; only the per-panel irradiation API does.

Needs backend work Re-running stringing, inverter sizing and simulation as a chained job after a fill. Today each is triggered by hand; a job status endpoint the panel can poll is needed.

Needs backend work Per-face reason text needs the face-ranking service to return the dominant loss cause per face (object shade, parapet, neighbour building). Today the heatmap returns irradiation only, not the cause.

Needs backend work Option values (gain from narrower walkways or row spacing) need the fill algorithm to run what-if fills with changed rules and return position counts. Not built.

Needs backend work String-length rules per inverter (min and max modules at site temperatures) must be available to the fill algorithm. Today stringing applies them after the layout, not during it.

Needs backend work Design version compare (two saved versions with their simulation results) is not built; undo today is the in-session undo stack, not a saved version.

Needs backend work Timeout and error handling on the heatmap API call, plus a 'fill method' field on the design version so the geometry-only tag persists.

Needs backend work Same fill algorithm and face-ranking service as SF03, plus performance: ranking 2,562 positions and returning a preview in under 3 s needs a server-side job, not a browser loop.

Needs backend work A read-only mobile design summary with approve and comment actions. Studio has no mobile view and designs have no approval state today.
Tariffs for US and Canada C&I: pick the real utility rate, reproduce the bill, add demand charges and accelerated depreciation
Needs backend work There is no utility/rate library for the US or Canada (no URDB import, no location lookup, no rate version or source fields) and no demand-charge field or demand billing anywhere in master_data or financials; bill reproduction, tariff CSV import and rate-version tracking do not exist. The tax-benefit engine (MACRS + bonus US, WDV India) and 15-min interval upload already exist in the deployed backend and mostly need UI.


Needs backend work a bulk import of US/Canada utilities and rates (URDB plus tariff sheets) into UtilityProvider/UtilityTariff; new UtilityTariff fields for sector (commercial/residential/agricultural), eligibility range (kW), source and rate version with effective date; a utility lookup by project lat/long against service-territory polygons (today only a country/state filter exists)

Needs backend work a demand-charge structure on UtilityTariff (max demand and period demand in $/kW, by season and period); export credit per tariff and period (today export_rate is one flat number on ProjectConsumptionDetail); season labels for the existing 12x24 weekday/weekend schedules

Needs backend work a bill-reproduction endpoint that bills one date range from the project tariff and load shape and returns line items; demand-charge billing in financials/services/billing.py; a stored bill-check result on the project that the proposal can cite

Needs backend work the same bill-reproduction endpoint plus a cause ranker (missing demand component, bill dates crossing a season, estimated vs metered load); more than one rate version per UtilityTariff so the user can switch versions

Needs backend work a demand-charge field on UtilityTariff and a change to the monthly billing calculation to bill each month's peak kW pre- and post-solar from the net load; demand savings as its own field in pricing results and on the proposal; keep the ISS-125 behaviour where TOU bills refuse rather than spread generation evenly (hourly_billing_gate.py)

Needs backend work 15/30/60-min CSV upload already exists (master_data/services/interval_upload_save.py) but billing reads the hourly year; demand billing needs the 15-min series for monthly peak kW, plus a project switch between uploaded and estimated profile that recomputes bills

Needs backend work an org-level tariff CSV/Excel import endpoint that turns rows into electricity_rates plus 12x24 weekday/weekend schedules, with overlap, gap and number validation; the $/kW column needs the new demand-charge field

Needs backend work BE engine already exists on the deployed backend (financials/services/tax_benefits: MACRS_BONUS_US and WDV_INDIA, org-level profile, design snapshot, feeds tax_savings into pricing_calculation); needs the FE Incentives panel, a with/without payback readout, the proposal page and disclaimer; confirm ISS-59 is closed

Needs backend work a service-territory lookup that returns a utility even when it has zero rates; a utility-request queue (model, admin view, email to the requester when the rates go live)

Needs backend work rate versioning on UtilityTariff (version, effective_from, superseded_by); a snapshot of the tariff version on each sent proposal; a job that flags sent proposals when a newer version is imported

Needs backend work per-day $/kW and per-day fixed charges; a 12-month demand ratchet (billing demand = max of metered peak and 90% of the trailing 12-month peak); separate wire-owner and retailer components on one project tariff; ENMAX D200 import

Needs backend work the TB04 bill-reproduction endpoint run as an async job with a saved result, so a dropped mobile connection can resume
Arka Lifeboat: switch from Arka 360 without redrawing your projects
Needs backend work None of the switch flow exists in code: no public eligibility form or credit calculator, no redraw-request model or queue, no source-vs-redraw check, no HGE design-services role, no Arka-look proposal template and no WhatsApp status messages. There is no Arka import; the redraw is manual. Editable structure types (TSL, 6 Oct) exist; Arka-style fixed-tilt structures are in Release 5 planning per the requirements register.

Needs backend work A public lead form with a PDF upload endpoint and storage, a SwitchLead record (company, email, Arka renewal date, project count, seats, optional current cost), and a CRM handoff. Today the website has no form that accepts files.

Needs backend work A credit-rule engine (full months left + 2, max 6, starts at the Arka end date) and a deferred first-invoice date in billing; an automatic readability check of the uploaded PDF (layout page, module count, section list). Both are new.

Needs backend work Region-based price lookup (India INR vs rest-of-world USD tiers), a large-account rule (over 25 projects routes to sales) and a meeting-booking integration. None exist in the product or site today.

Needs backend work A RedrawRequest model per project (source files, source link, priority, status enum queued/drawing/review/done/needs-file/routed, due date, credit used), an org-level redraw-credit balance, and chunked file upload with progress. Link pasting stores the URL only; Arka links cannot be fetched without the customer's Arka login.

Needs backend work A cross-org design-services role (HGE staff can open customer projects they are assigned to, nothing else), ticket assignment, SLA timers with pause states, and an auto-check that compares saved design totals (modules, kWp, tilt, azimuth, inverter) with values captured from the source file. Today SurgePV has Super Admin, Admin and Designer roles inside one org only.

Needs backend work A review screen that embeds the source PDF next to the design viewer, a mapping record (Arka structure/module/obstruction to SurgePV equipment and structure IDs), an approve/request-change action that moves the project into the customer's project list, and the Arka-look proposal template itself (customizable proposal V3 is still in Release 5 planning).

Needs backend work WhatsApp Business API sending with templates per status, inbound media handling that attaches a replied file to the right RedrawRequest, and email fallback. The WhatsApp number is the HGE pilot number; no SurgePV WhatsApp integration exists.

Needs backend work A first-run dashboard keyed to a switched org (moved projects, credit dates), template install as org default, seeding Arka-style fixed-tilt structure presets into the org structure library, and a checklist with completion tracking. The structure presets depend on Arka fixed-tilt types shipping.

Needs backend work File-parse validation that detects missing geometry, a credit-hold with expiry, a size cap rule (over 5 MW) that routes a RedrawRequest to a Solar Desk quote, and a quote request/response record. Solar Desk quoting exists only as a pricing page today.
Demo qualifier and paid pilot: route every demo request to the right next step
Needs backend work None of this exists today. It needs a DemoRequest lead record with an ordered routing rule table and an audited manual override, website-side geocoding and building lookup, a payment link that creates a 14-day pilot entitlement with a licence credit, and project pre-creation from the form address.

Needs backend work a public qualifier endpoint that stores a DemoRequest lead (name, email, company, country, segment, current tool, address) and runs the routing rule table; a geocode plus building-footprint lookup (roof area) callable from the website before any account exists

Needs backend work a slot calendar with named hosts (Vikram, Santhosh) that converts IST working hours into the prospect's time zone; pre-call file upload attached to the DemoRequest; a draft project pre-created from the address in a sales sandbox org

Needs backend work a waitlist table tied to the smart-roof feature flag with one-click notify and a launch-day email trigger; the address saved as a pending first project created when the flag ships

Needs backend work trial signup that creates an org with a trial expiry (7 days, placeholder) and pre-creates the first project from the address; a hosted recorded demo with chapter markers; the routing outcome stored on the lead so sales does not call

Needs backend work a services-lead type (plant MW, mounting, deliverables, KMZ upload) routed to a Solar Desk design-services queue instead of the sales calendar; no services intake exists in the product or website today

Needs backend work an Arka-switch lead type with subscription end date; bulk PDF upload into a redraw queue for designers (there is no Arka project import); an offer record (3 months free) applied to the first licence invoice; WhatsApp confirmation message

Needs backend work a payment link (Stripe for USD, Razorpay for INR) that on success creates the pilot org, a 14-day pilot entitlement and a $99 / ₹5,000 credit against the first licence invoice; receipt email

Needs backend work a pilot entitlement on the org (start, end, read-only from day 15); project pre-creation from the form address with roof outline, utility tariff (PG&E B-19) and weather fetch; an onboarding checklist fed by layout, simulation and proposal-export events; design-review booking against designer slots

Needs backend work an internal Demo requests view over DemoRequest with routing outcome, rule id, source (UTM or event tag such as REI expo), next-step status, a manual override limited to two named users with a required reason and audit log, and an editable ordered routing rule table

Needs backend work geocoder fallback when an address returns no building: draggable pin, coordinate and Google Maps link parsing, saved as lat/lng on the DemoRequest with an address_unverified flag for sales
Bill to proposal on WhatsApp, internal pilot first
Needs backend work None of this exists in code: the HGE Quote pilot deliberately excludes bill OCR, the WhatsApp provider and agent tools. Needs a WhatsApp Business API provider and webhook, per-family bill OCR (Torrent, UGVCL, MSEDCL, Adani), an agent run log with field-level provenance, a grading model and pass-rate rollup with a per-family release flag, financial sanity checks that stop a run, and fixes for ISS-125, ISS-72 A/B/C, ISS-122 and ISS-123.

Needs backend work WhatsApp Business API provider and inbound media webhook; per-family bill OCR (Torrent LT-RES template) returning a confidence per field; interactive-button message templates in English and Hindi

Needs backend work Address geocoding from the OCR'd bill address and a static satellite tile for the pin; a conversation state store that records each answer with 'customer-confirmed' provenance

Needs backend work An input-dict entry point to recommender/services/recommendation_engine.py so the agent can size, price (HGE signed price table) and apply incentives without a 3D design; headless proposal PDF render; WhatsApp document send

Needs backend work Per-field OCR confidence threshold that blocks the run when a required field (units) is missing; a 30-minute timeout that routes the thread to the HGE designer queue

Needs backend work Language detection on the customer's messages; Hindi and Gujarati strings for WhatsApp templates and a Hindi proposal PDF template (idea #19, D6 fix)

Needs backend work Agent run model (run id, bill family, steps, status) and a per-field grade table (agent value, designer value, pass/fail, grader, time spent); bill-family classifier; org-scoped grading inbox API

Needs backend work OCR bounding boxes stored per field for the bill overlay; grading write API that saves corrections back into the project inputs; fixed reason taxonomy (tariff, load profile, pricing table, subsidy, size, financial result, other); manual-setup time baseline per org

Needs backend work Rolling last-50 field-accuracy rollup per bill family and per field; a per-family 'live to customers' flag that the WhatsApp sender checks before any outbound agent message; issue-status link to the BE issue register

Needs backend work Project fields for created_via='bill_agent' and a run link (extends the HGE pilot's created_via/lead_source); a provenance attribute per energy, tariff and pricing input that Studio reads and flips to 'from design' when the 3D design is saved

Needs backend work A sanity-check step in the agent run (night generation, saving vs bill, payback range, yield range, subsidy vs size) that halts before PDF render and logs which check failed; depends on ISS-125/72/122/123 fixes before any family can go live
Integrations: a channel partner's lead becomes a SurgePV project automatically
Needs backend work SurgePV has no public API, API keys, webhooks or integration settings today: design-studio-BE has no ApiKey, WebhookEndpoint, WebhookDelivery or LeadReview model, no external_id on Project, and only per-user and per-IP throttles. All of it is new, built on the existing Project model and its first status CUSTOMER_INQUIRY.

Needs backend work An Integrations settings page and Admin-only permission for it; no integrations module exists in design-studio-BE or FE today.

Needs backend work An ApiKey model (organisation FK, name, prefix, last4, sha256 hash, scopes, expires_at, revoked_at, created_by) and a key authentication class used only on /v1/ routes, never added to the default DRF authentication classes.

Needs backend work An IntegrationMapping record per organisation (field map, default status, round-robin designer pool with a cursor, default DesignDefault), a geocoding step to fill the non-null Project latitude/longitude, and new Project fields external_id and source_partner.

Needs backend work Project.source / external_id / source_partner / created_by_api_key fields, a per-field lock for API-sourced values with an Admin unlock, and activity entries for API creation and round-robin assignment.

Needs backend work A WebhookEndpoint model (organisation, url, events, hashed signing secret, source-key filter), event emission on proposal generation and Project status change, and a Celery delivery task with HMAC-SHA256 signing and a 7-attempt retry schedule.

Needs backend work A WebhookDelivery table (event id, attempt number, request headers and body, response code and body, latency, next_retry_at) and an ApiRequestLog for inbound calls, both org-scoped with 30-day retention, plus a manual retry endpoint.

Needs backend work An OpenAPI 3 file for /v1 kept in the repo and tested against the serializers, per-key rate throttles (core/throttles.py has only per-user and per-IP throttles), and Idempotency-Key handling on POST /v1/projects.

Needs backend work A LeadReview model (raw payload, reasons, status, 14-day expiry), a duplicate check on normalised customer_mobile_number across open projects in the organisation, and attach / create / reject actions that write the outcome back to the lead.
