Case Study · Roofing & Insurance Restoration
How Modern Roofing consolidated five tools onto Knockio, cut operating cost by 75%, and recovered roughly $30,000 a month
Five reasonable tools, chosen one at a time, each solving the problem in front of it. None of them could see the same homeowner. Here is what closing that seam was actually worth.
At a glance
| Founded | February 4, 2014 — Pelzer, South Carolina |
|---|---|
| Footprint | 15 locations across South Carolina, North Carolina, Georgia, Tennessee and Utah |
| Volume | 10,600+ roofs completed |
| Credentials | GAF Master Elite — held by fewer than 2% of US contractors; Golden Pledge Warranty |
| Model | Residential and commercial roofing, insurance claim–led, in-house crews, door-to-door canvassing |
| Replaced | Google Voice, standalone canvassing software, separate job management platform, separate time-tracking tool |
| Retained | GoHighLevel — integrated natively, not rebuilt |
| Adopted | Knockio — canvassing, CRM pipeline, media, dispatch, work orders, invoicing, payments and communication in one platform |
Results after MEASUREMENT WINDOW
- 75% reduction in combined software and administrative operating cost
- ~$30,000 per month recovered — approximately$360,000 annualised
- Five vendors reduced to two
- Inspection photos available in the estimate at the moment it is built, rather than X hours later
- Rep non-selling admin time cut by roughlyX hours per week
01
The company
Modern Roofing was founded in Pelzer, South Carolina in February 2014 and has grown from a home office into a 15-location operation spanning five states, with more than 10,600 roofs completed. It holds GAF Master Elite certification — a credential fewer than 2% of US contractors carry — and offers the Golden Pledge Warranty, GAF's highest residential warranty.
Two things about how the company operates matter more than its size.
It runs on insurance claims. Modern Roofing's stated promise to homeowners is a new roof without the insurance headaches: the company documents storm damage, submits it to the carrier, and attends the adjuster visit. Photographic evidence isn't a nice-to-have in that model. It is the product.
It runs its own crews. Where much of the industry subcontracts installation, Modern Roofing employs its crews directly and treats paying them fairly and on time as a core commitment. That makes labour a real, tracked cost rather than a line item passed through to a sub.
Steven Purdy manages a district within this structure — which places him precisely where canvassing, insurance documentation, production and collections are supposed to hand off to one another.
02
The before state: five systems, one homeowner
Modern Roofing had not chosen badly. It had chosen five reasonable tools, one at a time, each solving the problem in front of it at that moment. The result was five tools that each worked and did not work together.
| Tool | What it held | What it couldn't see |
|---|---|---|
| Google Voice | Calls and texts, under individual employee accounts | The customer record, the job, or anyone else's conversation |
| GoHighLevel | Marketing campaigns and inbound leads | What happened after the lead was exported |
| Canvassing app | Territories, door pins, inspection photos | The estimate, the claim, the install, the invoice |
| Job management platform | Scheduling, work orders, invoicing | Where the lead came from or what was photographed at the door |
| Time tracking tool | Crew hours | Which job those hours belonged to |
Between each of these sat a person, a spreadsheet, or a Zapier chain. The homeowner moved through all five. Their data did not.
A homeowner existed five separate times, in five separate places, and none of those versions agreed with each other.
03
Where it actually hurt: the claim chain
Modern Roofing's published process runs Day 1 inspection → Days 2–5 estimate → Weeks 2–6 claim approval → install day. Following one storm-damage job through the old stack shows where the money went.
- Day 1
The inspection
A rep knocks a door in an assigned territory, performs the free inspection, and photographs hail impacts, granule loss, missing shingles and compromised flashing. Those photos land in the canvassing app.
- Days 2–5
The estimate
The estimate and carrier documentation are built in the job management platform. The photos are in the canvassing app. Someone downloads, renames and re-uploads them. Customer name, address, phone and scope are retyped by hand. Every job, every time.
- The adjuster visit
Assembling the packet
Modern Roofing attends the adjuster meeting — this is a stated differentiator. Doing it well requires having every documented image, measurement and note in one place at one time. Assembling that packet was manual work performed under time pressure, and anything that had not made the jump between systems simply wasn't in the room.
- Weeks 2–6
The waiting
The longest and most fragile stage. Follow-up during this window happened over Google Voice, in individual employees' accounts. There was no shared record of what had been said, no automated cadence, and nothing to prompt a check-in. Jobs went quiet and nobody knew until they were gone.
- Install day
Working from a copy
The crew worked from the version of the scope that lived in the job platform, which was a retyped copy of what the rep had agreed at the door. Discrepancies surfaced on the roof.
- Invoicing
Two payers, three systems
The carrier and the homeowner's deductible, sometimes financed at 0%, reconciled by hand against a job whose full history lived in three systems.
- Payroll
Job costing after the fact
Crew hours sat in a fourth system with no link to the job, so the true labour cost of a roof was a monthly reconciliation exercise rather than a fact.
And then a storm hits
The site carries a live weather alert banner and promises 24/7 emergency response with same-day tarping. Modern Roofing's own marketing calls it the 72-hour window that matters.
A storm produces a surge in GoHighLevel, which has to be moved into the canvassing app, allocated across territories, and dispatched — while the same office staff are still hand-carrying yesterday's jobs between systems. The moment the company most needed to move fast was the moment its stack was slowest.
We tell homeowners the first 72 hours after a storm decide the claim. We were spending a chunk of those 72 hours moving our own data between apps.
04
The trigger
Section incomplete. Insert the actual trigger — a renewal date, the Salt Lake City expansion, a specific storm event where the handoff broke, or a quarter of unexplained margin loss. A case study without a stated trigger reads as hypothetical; this section matters far more than its length.
05
Evaluation
Purdy's requirement list was short.
- Canvassing and job management in the same database — not integrated, the same
- Photos captured at the door usable in the estimate immediately, with annotation for adjuster documentation
- Calls, texts and email attached to the customer record rather than to employees
- Territory and GPS visibility that stayed connected to downstream job outcomes
- Estimates, e-signature, work orders, invoicing and payment in one chain
- Role-based permissions across canvassers, project managers, field supervisors, office support and finance
- Mobile capability strong enough that reps would use it standing on a roof
- Existing GoHighLevel campaigns preserved, not rebuilt
- No long-term contract
Knockio met all nine in one system. Where ServiceTitan, Jobber and Workiz are built primarily around service operations, and SalesRabbit and Spotio primarily around canvassing, Knockio holds both sides of the same job — which was exactly the seam Modern Roofing was losing money in.
Two capabilities decided it.Media management with photo annotation meant inspection images could be marked up on site — arrows on lifted shingles, notes on granule loss — and stay attached to the lead, estimate, work order and claim documentation without being moved anywhere. Andnative GoHighLevel integration meant the marketing engine kept running while leads flowed directly into the pipeline instead of being exported.
Monthly billing, automatic volume pricing above five users, no setup fee and no long-term commitment meant the switch didn't require betting the district on it.
06
The migration
- Weeks 1–2
Mapping
Field-by-field mapping from the canvassing app and job platform into Knockio's pipeline boards. Boards were built to mirror Modern Roofing's actual stages — Inspection, Estimate, Claim Submitted, Adjuster Scheduled, Approved, Production, Install, Invoiced, Collected — with each stage assigned to the department that owns it. X legacy fields were identified as unused and retired rather than migrated.
- Weeks 2–3
Data
Active customers, open jobs and in-flight claims migrated in full. Jobs closed more than X months prior were archived to export rather than imported, which cut migration volume substantially and eliminated years of accumulated duplicates.
- Week 3
Communication cutover
The existing business line was ported into Knockio. This is the step that ends Google Voice — once the number lives on the platform, call and text history attaches to the customer automatically with no employee action required.
- Weeks 3–4
Pilot
PILOT LOCATION ran Knockio in parallel with the legacy stack. The team built stage automations and permission roles against live storm jobs rather than a demo.
- Week 5
Training by role
Sales reps were trained on mobile only and never shown the desktop interface. Office support, project managers, field supervisors and finance each received their own session covering only their own boards.
- Week 6
Cutover
GoHighLevel connected via native integration. The four remaining tools shut off.
6 weeks from kickoff to legacy shutdown.
07
What was difficult
Two things. Leaving them out would make everything above less believable.
Reps resisted in week one. Reps with years of habit in the old canvassing app lost selling time relearning an interface. The fix was pairing pilot reps with the rest of the team rather than adding formal training. Confirm actual approach
Custom reports had to be rebuilt. Several reports leadership depended on didn't port. They were reconstructed withinX weeks and in most cases came back better, because the underlying data now spanned door knock through collected payment for the first time. But there was a reporting gap in between, and it was uncomfortable.
08
The after state
- One record, door to payment
- A lead captured at the door carries its territory, notes, annotated photos, appointment, estimate, contract, claim documentation, work order, invoice and payment on a single continuous record. Nothing is retyped between stages.
- Photos where the claim is built
- Inspection images are captured, annotated and attached on site. When the estimate is written days later, the evidence is already there. When the adjuster arrives, the packet assembles itself.
- Communication on the job, not the phone
- Calls, texts and emails attach to the customer automatically. Purdy can open any job and read its full history without asking anyone. When a rep leaves, the relationship stays with the company.
- The 2–6 week gap covered
- Automated follow-up sequences run through the claim approval window. Jobs no longer go quiet because someone forgot.
- Storm surge routed, not sorted
- GoHighLevel leads arrive in the pipeline, get assigned to territories and dispatch — inside the 72-hour window rather than after it.
- Payment collected on site
- Tap-to-pay and text-to-pay applied to the correct invoice and job immediately, across both the deductible and the carrier proceeds.
- Labour attached to jobs
- With time tracking in the same system as work orders, crew hours attach to the roof they were spent on. Job-level margin became a number instead of a monthly estimate.
The change I didn't expect was in the office. My admin team stopped being data-entry clerks and started doing work that actually moves jobs forward.
09
The numbers
District-level model. Assumptions and the company-wide extrapolation are set out in the methodology note below.
Monthly software licensing
| Line item | Before | After |
|---|---|---|
| Google Voice — 60 seats @ $20 | $1,200 | — |
| GoHighLevel — retained, integrated | $497 | $497 |
| Canvassing platform — 45 seats @ $110 | $4,950 | — |
| Job management platform — 20 seats @ $149 | $2,980 | — |
| Time tracking — 60 seats @ $9 | $540 | — |
| Zapier + standalone e-signature | $283 | — |
| Knockio — 60 users, volume-priced | — | $2,103 |
| Total | $10,450 | $2,600 |
Licensing reduction: 75%
Monthly administrative labour
| Activity | Before | After |
|---|---|---|
| Office duplicate entry and photo transfer3 staff × 14 hrs/wk @ $29 | $5,278 | $1,320 |
| Rep non-selling admin45 reps × 3.5 hrs/wk @ $26 | $17,745 | $4,436 |
| Manual report assembly4 managers × 6 hrs/wk @ $48 | $4,993 | $1,248 |
| Total | $28,016 | $7,004 |
Administrative labour reduction: 75%
Monthly revenue leakage
| Source | Before | After |
|---|---|---|
| Unbilled supplements and change orders8/mo @ $300 margin | $2,400 | $600 |
| Carrying cost of aged receivables | $1,200 | $300 |
| Total | $3,600 | $900 |
Combined
| Before | After | Monthly saving | |
|---|---|---|---|
| Software | $10,450 | $2,600 | $7,850 |
| Administrative labour | $28,016 | $7,004 | $21,012 |
| Revenue leakage | $3,600 | $900 | $2,700 |
| Total monthly operating cost | $42,066 | $10,504 | $31,562 |
Overall reduction 75% · Monthly saving ~$30,000 · Annualised ~$360,000
10
Lessons from Steven Purdy
Count the labour, not the licences
The five subscriptions were $10,450 a month. The people working around the gaps between them cost nearly three times that. Any consolidation case built only on subscription line items understates the return badly.
In insurance roofing, the photos decide everything
Evidence captured at the door and evidence used to build the claim have to live in the same place. Every hour spent moving images between systems is an hour of exposure on the claim.
Keep what works
GoHighLevel was performing and was integrated, not replaced. Consolidation removes seams, not tools.
Port the number early
Communication cutover produced the most immediate benefit and the least resistance — customers noticed nothing, staff noticed everything.
Train by role, not by product
Reps saw mobile only. Finance saw finance only. Showing everyone the whole platform produces confusion, not competence.
Archive aggressively
Leaving pre-DATE closed jobs behind removed years of duplicates and shortened the migration. Old data can live in an export.
If I did it again, I'd move faster on the pilot and slower on the data. We spent weeks arguing about history we've never once needed to look up.
Methodology and assumptions
The figures above are a district-level model. Every input is listed here so the arithmetic can be checked.
Assumptions behind the figures18 inputs
Replace every value below with Modern Roofing's verified data before publication.
| Assumption | Value used | Verified |
|---|---|---|
| Locations in Purdy's district | TBC | ☐ |
| Canvassers / sales reps in district | 45 | ☐ |
| Office, PM, field supervisor, finance staff | 15 | ☐ |
| Total licensed users | 60 | ☐ |
| Google Voice per seat | $20/mo | ☐ |
| Canvassing platform per seat | $110/mo | ☐ |
| Job management per seat | $149/mo | ☐ |
| Time tracking per seat | $9/mo | ☐ |
| Knockio blended per user | $43/mo | ☐ |
| Office loaded hourly rate | $29 | ☐ |
| Rep loaded hourly rate | $26 | ☐ |
| Manager loaded hourly rate | $48 | ☐ |
| Office hrs/wk lost to duplicate entry | 14 each | ☐ |
| Rep hrs/wk lost to admin | 3.5 each | ☐ |
| Manager hrs/wk assembling reports | 6 each | ☐ |
| Reduction applied to each labour category | 75% | ☐ |
| Unbilled supplements / change orders | 8/mo @ $300 | ☐ |
| Weeks per month | 4.33 | ☐ |
Excluded from the model
Installer and technician seats for time tracking, which would raise both the before and after figures; per-location software not listed above. Add if applicable.
Confounders to disclose if present
Headcount change during the window, storm seasonality, the Salt Lake City expansion, pricing changes, or any other operational change made in the same period. If the district grew during measurement, per-job or per-rep figures are more honest than absolute totals.
Company-wide extrapolation
If Purdy's district represents X of Modern Roofing's 15 locations and the pattern holds across the footprint, the company-wide figure would be approximately$Y per month. Do not publish this figure unless the other districts have actually been measured — modelled extrapolation presented as a result is the fastest way to lose a case study's credibility.


