Proposals Dashboard
Summary of proposal activity and portfolio size across all saved bids.
Saved Proposals History
| Opportunity ID | Opportunity Name | Account | Notes | |
|---|---|---|---|---|
| Loading proposals... | ||||
Current Portfolio Map
Track technicians and view active/pending site coverage geographically.
Coverage Map & Distance Routing
Click on a technician or site marker to view details. ● Technician ■ Active site ■ Pending site ■ Proposed site
Estimated from real OSRM road routing in each direction, not a straight-line circle — still approximate, not a precise isochrone.
Add Proposed Sites
Paste a site list (one per line — tab or comma separated: name, address) or drop a CSV/text file. Each row is geocoded and added as a proposed-site pin.
Proposal Builder Wizard
Calculate exact solar O&M pricing and generate formatted PPTX proposals.
Client, Portfolio and Project Details
Establish the client profile and opportunity parameters. Add portfolio projects further below manually, via Copper CRM, or from parsed engineering blueprints (Parse Drawing/Contract/Scope tab).
Portfolio Contract Parameters
Establish the global contract variables applied across every project in this portfolio.
Site Assets & Quantities Setup
Configure sizes, hardware counts, and localized on-site drive times. Pick a previously parsed drawing above a card, or upload a new one, to auto-fill it.
Portfolio Routing Map
Verify site locations relative to our current technician locations.
Pricing Summary/Ledger
Review calculated fees, total portfolio summaries, and detailed hours side-by-side. Updates live as parameters change.
Proposal Results & Export
Verify calculations, review the cover letter, save the active proposal version, and export styled PDF/PPTX documents.
Client & Contact Summary
Portfolio & Projects Priced
Cover Letter & Proposal Commentary
Included as the cover letter on the generated proposal PDF. The opening and closing are pre-filled from Cleanleaf's standard letter — edit the middle to add deal-specific commentary. The recipient greeting and signature are generated automatically from the client contact and your account details.
Actions & Exporters
Active Proposal Revision History
| Version | Date | Details of Changes |
|---|---|---|
| Calculate or load a proposal to see its version history. | ||
Parse Drawing / Contract / Scope
Upload engineering drawings, RFP PDFs, or SOW documents to parse project portfolios and compare contract terms side-by-side with Cleanleaf standard.
Upload RFP PDF / SOW DOCX
Drag and drop RFP PDF or SOW DOCX here
or click to browse from your computer
Design Drawings & CAD Blueprint Parser
Upload engineering single-line drawings, site plans, or layout PDFs to automatically extract site coordinates, install types, and component counts. Each parsed drawing is saved under its own label so it can be selected later from the Site Assets section of the Proposal Wizard.
Drag and drop drawings or layouts here
Supports PDF, CAD, DXF, or DWG blueprints
Document Review Log
Click a CAD drawing row to view what was extracted in the panel below.
| Type | Document | Opportunity / Project | Reviewed At | Reviewed By | Result |
|---|---|---|---|---|---|
| No documents reviewed yet this session. | |||||
Extracted Details
Click a CAD drawing in the Document Review Log above to view what was extracted.
Pricing Settings & Wage Standards
View standard PM times, overhead factors, state wage rates, and CA prevailing county wages.
Pricebook Version
Select a pricebook version to view the constants and formulas that were active during that period. Current inputs shown below always reflect the live database.
Version History
| Version | Effective Date | Description | Created By |
|---|---|---|---|
| Loading version history... | |||
Proposal Assumptions Text
The "Assumptions" disclaimer bullets shown on each proposal's Preventive, Washing, and Vegetation pages. One line per bullet. Edits apply to every proposal generated after saving.
Preventive Maintenance
Per-Unit Hours × ConfigHours allocated per unit during annual preventive maintenance. Values vary by install type (Roof / Ground / Carport) and inverter type (Central / String). All assets also include a 0.50 hr fixed setup per asset category.
| Asset Type | Fixed Hrs | Roof / Central | Roof / String | Ground / Central | Ground / String | Carport / Central | Carport / String |
|---|---|---|---|---|---|---|---|
| Loading preventive hours matrix... | |||||||
Size-Dependent Formulas
These assets don't vary by install/inverter type — hours are driven by system size, unit counts, or walk calculations.
Corrective / Comprehensive Hours Model
Annual Reactive EstimatesEstimated annual corrective maintenance visits and labor hours by equipment type and site configuration. These inputs drive the comprehensive O&M package budget.
Per-Inverter & Per-Combiner Corrective Rates
| Configuration | Inverter | Combiner | ||
|---|---|---|---|---|
| Visits / yr | Hours / yr | Visits / yr | Hours / yr | |
| Loading... | ||||
Fixed BOS / BOP Corrective Base (Tx, Switchgear, Comm, Wx, AC Panel)
Aggregate annual corrective estimates for balance-of-system equipment, not per-unit — the multipliers adjust for configuration complexity.
| Configuration | Base Hours | Base Visits | Hours Multiplier | Visits Multiplier |
|---|---|---|---|---|
| Loading... | ||||
Travel Hours & Drive Time Logic
How round-trip travel time is computed for each maintenance model, and where drive times are sourced from.
Wage Rates
Wage Rate Overrides
Custom-entered rates for portfolios with union CBAs or prevailing wage requirements not covered below. Multiple entries can exist per pricebook version — selectable per project on the Pricing Summary/Ledger step.
| Label | Base Rate | Fringe | Total Rate | Entered By | Date | Notes | |
|---|---|---|---|---|---|---|---|
| Loading overrides... | |||||||
State Standard Wage Rates
Standard hourly wage rate values used when prevailing wages do not apply. Wage rates are sourced from current average from the sourced region. Click a column header to sort.
| State | Source Region | Base Rate | Fringe | Total Rate |
|---|
CA Prevailing County Wage Rates
Hourly wage requirements mandated by the state of California for public projects. Click a column header to sort.
| County | Base Rate | Fringe | Total Rate | Last Updated |
|---|
Additional / Ancillary Services
Priced separately from the hours-based stack — module washing, vegetation/mowing, aerial thermal inspections, specialized lift rental, and material/inventory storage — each with their own cost basis and markup.
| Item | Rate Basis | Markup |
|---|---|---|
| Loading... | ||
Aerial Thermal Scan — Rate Table
Below 2,000 kW: flat $750 base cost. At or above 2,000 kW: base cost = rate ($/MW) × system size (MW), using the highest threshold at or below the project's size. Either way, the base cost is then marked up 25% and multiplied by the requested quantity of scans.
| System Size Threshold | Rate ($/MW) |
|---|---|
| Loading... | |
Fixed & Recurring Costs
Per-project fixed costs, not driven by labor hours. Applied regardless of site size.
| Item | Rate | Basis |
|---|---|---|
| Loading... | ||
Hours → Price: Complete Pricing Stack
Cost-Price Summary ModelEvery input applied on top of estimated labor hours to arrive at a quoted dollar price. The Preventive and Corrective stacks apply different overhead and margin targets.
| # | Cost Layer | Preventive | Corrective | Description |
|---|---|---|---|---|
| Loading pricing stack... | ||||
Feedback Hub & Revision Log
Submit issues or requests, review system changelogs, and view proposal version histories.
Submit Feedback
Tabulated Feedback & Requests
All user-submitted requests, bug reports, and features are tabulated below.
| Date | User | Type | Priority | Description | Status |
|---|---|---|---|---|---|
| Loading feedback entries... | |||||
Application Revision Changelog
Changelog history detailing updates made to the O&M Pricing & Proposal Engine.
| Version | Date | Changes & Features Added |
|---|---|---|
| v1.2.1 | 2026-06-08 | Feedback Hub & Revision Log: Integrated SQL table to capture user requests, bugs, and feature requests. Tabulated feedback log on frontend. Added proposal version changelogs. |
| v1.2.0 | 2026-06-08 | SOW Scope Comparator: Added side-by-side DOCX/PDF parser. Extracts regular time/off-hour labor rates, markups, escalators, and priority dispatch thresholds, highlighting mismatches with standard SOW. Skip Assumptions pages in PDF. |
| v1.1.0 | 2026-06-07 | Geocoding & OSRM Routing Map: Integrated Leaflet.js map inside proposal wizard step 2. Dynamically geocodes technician locations and queries OSRM driving routes. Corrected Excel drive time reference cell. |
| v1.0.0 | 2026-06-06 | Core Pricing Engine: Replicated Excel preventive/comprehensive quote calculations inside Python. Seeded standard/prevailing wage rates database. Seeded mock Copper CRM Opportunity pull. |
Admin Panel
Manage user roles, permissions, and application settings.
Access Control
Manage user roles and permissions. Admins can add/remove users and change roles.
| Name | Role | Actions | |
|---|---|---|---|
| Loading access list... | |||
User Profile Settings
Configure your proposal identity. These values appear on generated proposals as the signatory / prepared-by block.
Generate Proposal As Another User
Admins can generate a proposal under another team member's name and profile. Select a user below — their profile data will be used on the next proposal export.