Skip to main content
Back

Projects / Roofing Proposal Management

AI-Enabled Proposal Builder, From Roof Inspection to Proposal

The CRM gave Priority Roofing one home for a job in production. It never touched how that job was sold. Every proposal still routed through Roofr, a disconnected third-party app. So we're building a native Proposal Management system with an AI editor at its core, one that drafts and restructures a proposal from a prompt, so a rep never has to leave the CRM to sell a job.

Company
Priority Roofing (USA)
Timeline
Jun 2026 - 3 weeks
Team
Developers, Stakeholders, Tester, Product Designer
AI-enabled roofing proposal builder interface

WHERE THIS IS TODAY

Not a redesign of Roofr, a native module built around an AI editor that drafts and refines a proposal from a prompt, without ever switching tools.

1

AI editor that drafts a full proposal from a prompt and edits it in place

2

estimate types, itemized and roof system, built on one shared catalogue

6

modules covering assessment through proposal delivery

01BACKGROUND

The CRM fixed operations. Sales still ran through a disconnected tool.

Once the Roofing CRM shipped, a job had one home from the moment it was won to the moment it was paid. But a job still had to be won first, and that entire front half, the assessment and the proposal, happened outside the CRM entirely, inside a third-party platform called Roofr. Roofr did its one job well: it measured roofs and produced proposals. But it had no relationship to the CRM. A sales rep who'd just qualified a prospect inside the CRM had to leave it, rebuild the same customer and job in Roofr, run the assessment there, and, once a homeowner approved, manually carry the outcome back. The CRM had solved the job's life in production. Its life before that still lived somewhere else.

Roofr

Assessment & proposals

HELD

Roof measurements, damage assessment, and proposal generation.

GAP

Fully disconnected from the CRM, and rigid about it. Roofr's workflow couldn't bend to how Priority Roofing actually sold, which is what finally pushed us to build our own.

The CRM

Everything after a job is won

HELD

Production, scheduling, materials, and commissions for a job already in motion.

GAP

No way to receive a job before it existed. The front half of the sale happened somewhere else entirely.

I qualify the lead in the CRM, then type the same customer into Roofr to actually sell them anything. If the deal closes, I copy it all back by hand.

Sales Rep, Priority Roofing
02PROBLEM

A second system, disconnected the same way the first ones were

This was the same seam problem the CRM had already solved once, reappearing on the other side of the job. Four fault lines showed up.

01

Disconnected from the CRM

Roofr had no relationship to the jobs and customers already living inside the CRM, every proposal started from a blank system.

02

Duplicate entry, scattered assessment data

Reps re-typed customer and job information by hand, while photos, damage notes, and documents were split across whatever tool was open at the time.

03

Approval disconnected from job tracking

A proposal being approved didn't mean anything to the CRM. Someone still had to notice and manually start the job.

04

The cost compounded

Every re-entry was a chance to introduce an error, and every manual handoff was time a rep or back-office spent not selling or building.

03RESEARCH & AUDIT

We audited Roofr's workflow, then traced one proposal end to end.

Before designing a replacement for Roofr, I traced a real proposal end-to-end, from the moment a rep booked an assessment to the moment a homeowner signed, and sat with the roles on either side of it. The goal wasn't a feature-parity list against Roofr; it was seeing exactly where the handoff to the CRM broke down.

WHO A PROPOSAL PASSES THROUGH

3 personas

Portrait of Marcus Bell, a sales rep, in a dark suit

Marcus Bell

Sales Rep · assessment → proposal sent

Age
31
Location
Dallas, TX
Tools
CRM, Roofr, phone
Tech
High, phone-first

Qualifies the lead inside the CRM, then leaves it to build the proposal in Roofr, retyping the customer and the job he just entered. Measures the roof, photographs the damage and wants the proposal out before he pulls off the driveway, because the homeowner is collecting quotes from two other companies this week.

MOTIVATIONS

  • First good proposal in the door usually wins the job
  • Commission depends on closing, not on quoting
  • Wants selling time back from data entry

GOALS

  • Send a priced proposal before the homeowner's interest cools
  • Build it from the customer and job the CRM already holds
  • Know the moment a homeowner opens or signs it

FRUSTRATIONS

  • Re-entering into Roofr a customer he just entered in the CRM
  • Assessment photos stranded on his phone with no job to attach them to
  • Silence after sending, so follow-up is guesswork
I've already told the system who this customer is. Then I open Roofr and it asks me all over again.

STAKEHOLDER SESSION

3 roles · 9 questions

I walked the actual day of each role rather than a documented process, anchoring every session on a few core questions, then noting what the work itself revealed.

Sales Reps

Assessment → close

  • Walk me through everything that happens between booking an assessment and sending a proposal.
  • What do you re-type that you know already lives in the CRM?
  • Once a proposal is sent, how do you know what happens next?

Back Office

Approval, contracts, job creation

  • How do you find out a proposal has been approved?
  • What has to happen before a signed deal becomes a job you can schedule?
  • Where do assessment photos and documents end up once you need them?
Roofr's proposals list, the disconnected third-party tool we audited
01

The proposal was the CRM's blind spot

Everything the CRM modeled so carefully (the job, the customer, the pipeline) didn't exist yet from Roofr's point of view. The two systems described the same deal with no shared vocabulary.

02

Approval was an event no system was listening for

A homeowner's sign-off happened inside Roofr and stayed there until a person forwarded it along. Nothing treated approval as a trigger.

03

Assessment data had nowhere permanent to live

Photos and damage notes were only as safe as whoever's phone or laptop they were captured on, there was no job record yet to attach them to.

THE GUIDING QUESTION

What if a job had one home from the first inspection, not just from the moment it was won?

04APPROACH

Build the front half into the CRM, not bolt it on

The first real decision wasn't a screen. It was whether to integrate with Roofr's API or absorb assessment and proposal work into the CRM's own data model. An integration would have kept two systems in sync forever; it wouldn't have removed the seam, just automated the stitching. We chose to build a native module that shares the CRM's job record directly, so a proposal isn't synced to a job, it is the job, at an earlier stage.

RETIRE

Roofr as the system of record for a sale

It solved assessment and proposals in isolation, but every proposal it produced started disconnected from the job it was for.

BUILD

A Proposal Management module on the CRM's own schema

Assessment, proposal, approval, and signing read and write the same job record the CRM already owns, nothing is synced, because nothing is duplicated.

EXTEND

The CRM's pipeline backward, into the sale itself

The Job Cycle already carried a job from won to paid. This work extends that same idea one stage earlier, to first inspection.

THE CALL THAT SHAPED IT

Share the schema, don't sync a copy

Assessments and proposals had no link to the job that already existed → built as an extension of the CRM's own data model.

Make proposals dynamic, not just templated

Every roofing service prices and reads differently → templates are a starting point; sections rebuild per job.

Split pricing into two catalog types

Itemized work and full roof systems don't price the same way → two catalog structures, one estimate engine underneath.

Close the loop with signing, not a handoff

An approved proposal used to become someone's manual task → signing happens inside the flow and creates the job directly.

Put an AI agent inside the builder, not beside it

Drafting a proposal from scratch was the slowest part of a rep's day → a prompt generates the full draft, and the same agent refines any section in place.

05WORKFLOW AND USERFLOW

One continuous path: inspection to signature

A prospect leaves the CRM's qualifying stage as a scheduled assessment and doesn't surface again as a "won job" from somewhere else. It moves forward as the same record, through one flow, until a signed contract hands it to production.

  1. 1

    Rep chooses: with or without an assessment

    SALES REP

    Starting a proposal is the first decision point, a rep can link it to a scheduled on-site assessment, or start a proposal directly when no assessment is needed.

    Dashboard
  2. 2

    Assessment scheduled (if linked)

    SALES REP

    When a proposal is linked to an assessment, the qualified prospect is scheduled for an on-site property assessment first.

    Dashboard
  3. 3

    Property inspected, damage recorded

    SALES REP

    For linked proposals, the rep inspects the property and logs damage items directly against the job.

    Assessment
  4. 4

    Photos & documents captured

    SALES REP

    Photos and supporting documents are attached to the same record, not scattered across a phone and a laptop.

    Assessment
  5. 5

    Proposal drafted, by template or by prompt

    SALES REP

    A rep starts from a template or describes the job to the AI agent and gets a full draft back, pulling from the linked assessment when there is one, then refines individual sections inline as needed.

    ProposalTemplates
  6. 6

    Pricing built from the catalog

    SALES REP

    Itemized or roof-system pricing is pulled from the standardized catalog rather than estimated by hand.

    Catalog
  7. 7

    Proposal sent to the homeowner

    SALES REP

    The finished proposal goes to the homeowner directly from the same workflow that built it.

    Proposal
  8. 8

    Homeowner approves

    HOMEOWNER

    Approval happens inside the proposal itself, surfacing it as a workflow event on the CRM job is part of the integration still ahead.

    Proposal
  9. 9

    Job moves to production (manual, for now)

    BACK OFFICE

    A won proposal still becomes a job through a manual handoff today, closing this with digital signing and automatic job creation is the next milestone.

    Proposal
06THE SYSTEM

Six modules, two groups, no separate app to switch to.

The navigation splits into the daily selling work, the configuration behind it, and the admin layer that closes the loop, each one reading and writing the same job the CRM already owns.

CORE WORKFLOW3 modules
DashboardAssessmentProposal
CONFIGURATION3 modules
TemplatesCatalogue ManagementSettings

Dashboard

Gives reps visibility into their pipeline, assessments completed, proposals sent, proposals approved, and projects closed, plus recent activity at a glance.

The proposal dashboard showing assessment, proposal, and project pipeline metrics
The dashboard view with metrics.

Assessment

Inspect properties, record damage items, capture and organize photos, and upload supporting documents in one structured workflow.

The assessment listing page
Assessment listing page.
A detailed assessment page with damage items and captured photos
Detailed Assessment page.

Proposal

A flexible builder for generating customer proposals, customizing sections per roofing service, and keeping every field linked to the CRM job it belongs to. A rep chooses upfront whether the proposal is linked to an assessment or standalone, and an inline AI agent can draft the entire proposal from a prompt either way, then refine individual sections on request as the rep edits.

The proposal listing page
The proposal listing page.

Templates

Templates keep a proposal within a specific category so it can be created faster. A rep can use one as-is, modify it, or create a new one from scratch.

Template listing page.

Catalogue Management

The shared catalogue behind both estimate types: itemized, a line-by-line breakdown of items and price, and roof system, a build-specific estimate. Every catalogue entry carries its own set of instructions and price.

The catalogue management module
Catalog management module.

Settings

Centralized configuration for how assessments and proposals behave across the team.

Settings page.

Digital Contract Signing

Once a proposal is approved, rep and homeowner complete the agreement digitally, and it becomes part of the connected project inside the CRM.

Proposal signing enabled for the customer
Proposal Signing enabled for Customer.
INSIDE THE BUILDER

An AI agent that drafts the proposal, then stays to refine it

The slowest part of a rep's day was never the pricing or the signature. It was staring at a blank proposal after a long inspection. A rep can now describe the job in a prompt and get a complete draft back, whether or not that proposal is linked to an assessment. The agent pulls from the assessment when one exists, and works from the prompt alone when it doesn't. From there, the agent works inline: a rep can ask it to rewrite a single section, adjust scope language, or re-price a line item, without starting the proposal over.

AI Proposal generator.
Prompt to draft

One prompt, informed by the job's own assessment data, produces a complete first draft, sections, scope language, and starting pricing already in place.

Inline refinement

The rep keeps editing by hand or asks the agent to change one specific part, the agent never rewrites what wasn't asked for.

The same AI editor restructures the proposal, not just its wording.

Rewriting a paragraph was never the whole job. A proposal often needs a section added for a service the homeowner asked about, one removed because it doesn't apply, or the order changed to match how the rep is presenting. The always-on AI editor handles this the same way it handles wording: on request, in place, without the rep leaving the builder.

AI Proposal editor.
07STATUS & WHAT'S NEXT

Shipped and still evolving, here's where it stands today

This has already launched and is in active use by the sales team. It isn't a pilot. From here, the work is ongoing: testing with real reps, redesigning what usage shows us doesn't work, and improving the experience iteratively. So the honest version of "impact" here is a status report: what's shipped, what's being refined right now, and what's still ahead.

Shipped
  • Assessment module, inspection, damage capture, photos, documents
  • Proposal builder with itemized and roof system estimate types, linked or standalone
  • Templates and catalogue management
  • AI agent for prompt-to-draft and always-on inline editing
In active use, refining now
  • Refining the overall experience based on how reps actually use it day to day
  • Enhancing the AI editing experience with support for documents and reference material
  • Linking CompanyCam, a job-photo app, to sync assessment photos automatically
  • Deeper CRM data linkage beyond the property address that's already connected
WHAT WE'VE LEARNED SO FAR

A shared schema beats a synced copy, even when it's slower to build

Integrating Roofr would have shipped faster. Building on the CRM's own job record took longer, but it removed the seam instead of automating it.

Flexibility has to live in the proposal, not just the template

Templates alone couldn't cover every roofing service. The real fix was making proposal sections rebuildable per job, with templates as a starting point.

Approval is a workflow event, not a signature

Treating homeowner approval as a state change on the job, not an email to notice, is what let the contract-signing step trigger the job automatically.

Building next to a live CRM changes how you sequence work

Every module here had to work with production data the CRM already depended on daily, which meant shipping in a different order than a greenfield build would allow.