One system, five stages
Quote request → PO issued → works + proof → invoice
Every job carries one reference number end to end. Click any card to open it and move it forward. Persisted to Supabase — refresh and it's still here.
Connecting to Supabase…
Renewal book
Forward-looking certificate expiries, generated from certification time + a verified interval.
Interval basis, checked live 2026-09-19:
Domestic rented — 5 years, confirmed statutory (Electrical Safety Standards in the Private Rented Sector (England) Regulations 2020 — gov.uk).
Domestic owner-occupied — 10 years, industry guidance (IET). Commercial — 5 years typical / 3 years higher-risk, industry guidance (IET Guidance Note 3, referenced by insurers/leases/HSE, not itself statute). Industrial — 3 years, industry guidance (risk-based; shorter for harsher environments). Minor Works Certificates carry no standard expiry — not scheduled here. Where an interval is "industry guidance," it's labelled that way in this book, not stated as law — confirm for this specific installation.
| Due | Ref | Client | Site | Certificate | Basis | Issued | Expiry | Est. value | Status |
|---|
Local leads
Scored from real held EPC + business data — never fabricated.
Enter a UK postcode and run the search.
Margin per job
Quoted vs materials vs labour (at the configured hourly rate) vs invoiced.
By client
| Client | Jobs | Quoted | Materials | Labour | Invoiced | Margin |
|---|
By job type
| Job type | Jobs | Quoted | Materials | Labour | Invoiced | Margin |
|---|
By job
| Ref | Client | Type | Quoted | Materials | Hours | Labour | Invoiced | Margin |
|---|
PO & payment reconciliation
PO value vs invoiced vs paid, with shortfalls and ageing flagged.
| Ref | Client | PO | PO value | Invoiced | Paid | Days since invoice | Flag |
|---|
Client-facing certificate portals
Token-scoped, read-only. Never a raw table select — every read goes through a security-definer RPC that validates the token server-side.
Not covered yet (stated plainly): no accounting-package sync (Xero/QuickBooks), no e-signature, no email/SMS delivery of quotes or invoices (deliberately — this build never sends anything to anyone), no multi-user login, no engineer scheduling/calendar, no real payment collection (payments are logged manually, not processed), no full offline write queue (a dropped save shows an error and keeps your input in the form/localStorage draft — it does not silently retry once signal returns). Overdue-invoice chasing beyond stage 5: a separate tool of that name exists in the ATTOH Apps estate but is itself "in build" behind a waitlist, not a live working tool — so it is not wired in, and this app's own ref/PO fields are just kept compatible with its scheme for later.