Pipeline health, job margins, forecasts — the numbers, from the system of record.
Because quotes, orders, jobs, and the ledger are one system, reporting is not an export ritual — it is a live view. Dashboards surface pipeline value, revenue, per-job economics, and team performance from the same records that ran the work.
Job economics record revenue and cost per engagement — you see which work is worth doing.
Stage probabilities turn the board into a forecast without a spreadsheet.
Reports read the ledger and the pipeline directly — no reconciliation between tools.
Run the business normally
Quotes, jobs, payments — the data is a by-product.
Open the reports hub
Revenue, pipeline, activity, and export-ready views.
Act on what stalls
Rot warnings and coach signals point at deals and jobs that need a human.
From the same machine-readable catalog we publish at /features.json — what your AI reads to learn the platform.
Reports hub
The owner's numbers on one page: revenue by month, pipeline value by stage, lead sources, field-job status, and event attendance — every panel a view over endpoints the app already calls, charted with the dependency-free kit BarChart, and every panel exports its rows as CSV (money verbatim).
CSV export (contacts + orders)
Get your data out: one-click CSV downloads on the contacts and orders lists, built client-side from the rows the page already holds (RFC 4180 quoting, UTF-8 BOM for Excel, money written as the L-MONEY string — never parsed). The shared helper lib/csv.ts is the pattern for any list page.
Analytics & tracking
Drop a Google Analytics (GA4), Google Tag Manager, or Meta Pixel ID into the config and tracking works on every page. The Content-Security-Policy opens only for the providers you enable; blank IDs load nothing and the CSP stays locked.
Always — CSV export ships across the major lists, and the ledger is export-ready for your accountant. Your data is yours.
This whole site runs on the same platform — fork the template, or point a front end you built with Lovable, v0, Bolt, Claude, or Cursor at the backend.