ANATOMY OF A MODERN ROOFING CRM WORKFLOW
What a CRM workflow actually needs to look like to support an agentic operation. Beyond "deals" and "pipelines."
Most CRMs were designed for B2B SaaS. They model the world as deals moving through a pipeline. That model breaks down in roofing because a roofing "deal" is not a single thing — it's a customer, a property, a scope, a crew assignment, an invoice, and a warranty obligation, all related to each other.
A modern roofing CRM workflow respects this complexity. It also gets out of the way when an agent needs to take action.
The object model
Six top-level objects, related but distinct:
**Customer.** A person or business that has an ongoing relationship with the company. Customers persist across multiple jobs.
**Property.** A physical address with a roof. Properties persist across multiple customers (rental properties, sold homes).
**Lead.** A potential job for a customer at a property. Leads have a finite lifecycle — they convert to jobs or get archived.
**Job.** A signed contract for work on a property. Jobs have crews, materials, schedules, milestones, and invoices.
**Invoice.** A document requesting payment for a job milestone. Invoices have payment status and aging.
**Warranty.** An ongoing obligation tied to a completed job. Warranties have expiration dates and claim history.
Most legacy CRMs collapse two or more of these into one. Lead and job into "deal." Customer and property into "contact." The collapse causes pain at the seams.
The state machine
Each object has its own lifecycle. The leads lifecycle is straightforward (new → contacted → qualified → quoted → won/lost). Jobs are more interesting:
- Pending production
- Material ordered
- Scheduled
- In production
- Complete (production)