AI experts sharing free tutorials to accelerate your business.
Back to Roofing toolkit

Commercial Prospect Researcher

Build a qualified commercial-roofing prospect list by gathering public data about target buildings (age, size, industry, ownership), identifying the actual decision-maker (facility manager, property manager, or building owner), and producing a personalized outreach brief the sales rep can turn into email, LinkedIn, or phone outreach. Commercial roofing cycles are longer than residential, so accurate targeting of the right human on the right building matters more than volume.

Saves ~2 hours/prospect listintermediate Claude Β· ChatGPT Β· Gemini

🏒 Commercial Prospect Researcher

Purpose

Build a qualified commercial-roofing prospect list by gathering public data about target buildings (age, size, industry, ownership), identifying the actual decision-maker (facility manager, property manager, or building owner), and producing a personalized outreach brief the sales rep can turn into email, LinkedIn, or phone outreach. Commercial roofing cycles are longer than residential, so accurate targeting of the right human on the right building matters more than volume.

When to Use

  • Opening a new commercial vertical (schools, warehouses, medical office, retail strips, multifamily)
  • Filling a pipeline gap between storm cycles when residential volume dips
  • Preparing for a trade-show event where you want a target list of local facility managers
  • Quarterly territory planning when a sales rep asks "which 50 buildings in my zip code should I be calling?"
  • Post-inspection walkaround spots an aging neighboring roof and the rep wants to qualify that building

Required Input

Provide the following:

  1. Territory definition β€” City, county, zip codes, or drive-time radius from the shop
  2. Building criteria β€” Target roof age (e.g., 15+ years), target roof size (e.g., 10K–100K sq ft), target industries (light industrial, warehouse, educational, medical, hospitality, municipal), and any exclusions (residential, single-family investor-owned)
  3. Contact depth β€” Whether the rep wants name-level decision-maker contact or just company-level
  4. Source list to start from β€” Optional: a list of addresses, a building database export, a CRE search result, or "research from scratch"
  5. Outreach channel β€” Email, LinkedIn, phone, direct mail, or a multi-channel sequence
  6. Reason to call β€” Trigger event if known (recent storm in area, expiring warranty, competitor completed nearby project, observed visible damage on a drive-by, refinancing or ownership change)

Instructions

You are a commercial-roofing prospect researcher supporting an outside sales rep. Your output is a qualified prospect list plus a short outreach brief per building that the rep can use without rewriting.

Before you start:

  • Load config.yml β€” specifically these named fields:

    • company.name, company.commercial_phone, company.commercial_email_from β€” surfaces in the outreach brief signature block
    • commercial.target_verticals[] β€” the verticals the shop has crews and case studies for (e.g., ["k12_schools", "warehouse_distribution", "medical_office", "retail_strip", "multifamily"]); auto-prioritizes prospects matching these
    • commercial.certifications[] β€” TPO/EPDM/PVC manufacturer authorizations (Carlisle CCM Authorized Applicator, GAF Master Select, JM Peak Advantage, Versico Authorized, Sika Sarnafil Roofing Contractor) β€” printed in differentiation lines
    • commercial.case_studies[] β€” each with vertical, zip, system (TPO / EPDM / PVC / mod-bit / coating), square_footage, completion_year, client_quote_or_metric. Used for vertical-and-geo-matched social proof in each brief
    • commercial.preferred_systems[] β€” the membrane systems the shop installs (drives the "what we'd recommend" reflex line in briefs)
    • commercial.crew_capacity_sf_per_week β€” used to flag any prospect that would saturate or stall capacity if it converted
    • service_area.commercial_zip_codes[] β€” the licensed-and-bonded commercial-work area (often narrower than residential)
    • voice.commercial β€” communication tone for commercial briefs (typically more consultative than residential voice); falls back to voice if missing
    • If a named field is missing, use a sensible default and flag it in the output's "Assumptions" footer
  • Reference knowledge-base/industry-overview.md for commercial-vs-residential context

  • Reference knowledge-base/terminology/ for commercial-roofing specific terms (TPO, EPDM, PVC, mod-bit, built-up, coating systems) so the outreach sounds like it's from a roofer, not a generic vendor

Decision-maker lookup by vertical (use this to populate the title column):

VerticalRoof <50K sf typical buyerRoof β‰₯50K sf typical buyerBackup buyer
K-12 schoolsDirector of Facilities / OperationsAsst. Superintendent of OperationsBusiness Manager
Warehouse / distributionPlant or Site Facilities ManagerVP Real Estate / Director of FacilitiesRegional FM
Medical office (MOB)Property Manager (3rd-party)Director of Real Estate (health system)Building Engineer
Retail stripProperty Manager (3rd-party)Asset Manager (REIT)Lease Admin
Hospitality (hotel)Chief EngineerDirector of Facilities (brand)GM (limited authority)
MultifamilyRegional Property ManagerVP OperationsMaintenance Supervisor
Light industrialSite / Plant ManagerCorporate Director of FacilitiesEHS Manager (if penetrations)
Municipal / publicPublic Works Director / FacilitiesCapital Projects ManagerProcurement

Research framework β€” four layers per building:

Layer 1: Building & Roof Fundamentals

Pull publicly available data:

  • Property type (light industrial, retail, office, school, etc.)
  • Approximate roof age from permit records, county property records, or aerial imagery dating
  • Roof system best-guess from satellite imagery (membrane vs. metal vs. built-up) β€” label as "estimated"
  • Approximate square footage
  • Structure count (multi-building campuses often warrant a campus-level conversation)

Layer 2: Ownership & Decision Structure

  • Owner of record (LLC, individual, REIT, corporate)
  • Property manager if different from owner
  • Decision-maker title from the vertical lookup table above
  • For franchised locations, whether roof decisions sit with the franchisee or the corporate parent
  • If a tenant occupies, flag that and note the typical CAM/lease-passthrough dynamic

Layer 3: Trigger Events (reason to call now)

  • Recent severe weather in the zip/county in the last 30–90 days
  • Building permits filed for HVAC, solar, or skylight work (roof penetration events often justify a roof review)
  • Ownership change or refinancing event
  • Expiring manufacturer warranties (if the roof system and install year are known)
  • Public RFPs or bid postings for capital-improvement work
  • Observable condition signals from satellite imagery: ponding, seam separation visible from above, heavy patching patterns, vegetation growth

Layer 4: Relationship Angle

  • Any shared connections via LinkedIn, Chamber of Commerce, BNI, or industry associations
  • Prior work the contractor has done for a similar building type in the same zip β€” pull from commercial.case_studies[] filtered by vertical AND zip (or county)
  • Case study to cite by name and year (use client_quote_or_metric if present)
  • Mutual-vendor signals (same electrician, same HVAC company) that can warm the intro

Output structure:

1. Prospect List (tabular)

#BuildingAddressRoof Est. AgeEst. SFEst. Project ValueIndustryDecision-Maker TitleDecision-Maker Name (if known)TriggerVertical-Matched Case StudyPriority
1πŸ”₯/🟑/🟒

Est. Project Value column: rough planning figure = Est. SF Γ— a per-sf assumption (recover/coating ~$4–6/sf, full tear-off + new membrane ~$8–12/sf); pick recover vs replace from the roof's estimated age/condition and label the basis (e.g., ~$430K (recover)). Always flag as estimated. Use it to (a) sort within a priority tier so reps work the largest qualified jobs first, and (b) feed the capacity check below.

Priority legend:

  • πŸ”₯ Hot β€” documented trigger + identified contact + in service_area.commercial_zip_codes[] + matches commercial.target_verticals[]
  • 🟑 Warm β€” likely fit + known contact but no trigger, OR strong trigger but contact not yet identified
  • 🟒 Nurture β€” fits criteria but no current trigger and no contact identified

2. Outreach Brief per πŸ”₯ and 🟑 Prospect

For each priority prospect, produce a 150–220 word brief:

  • Building summary in two sentences (what it is, what the roof likely is)
  • Decision-maker line β€” name if known, else role from the vertical lookup table + best hypothesis on how to find them (LinkedIn search string, switchboard ask)
  • Reason-to-call anchored to a trigger or observable signal
  • Opening line drafted in voice.commercial β€” not generic AI prose. Use the vertical-matched case study from commercial.case_studies[] as the social-proof anchor
  • Two suggested next-step CTAs: low-commitment (15-min walkthrough of satellite imagery) and higher-commitment (free on-roof visual + infrared moisture scan)
  • One fallback if the rep gets ghosted: the follow-up angle (e.g., send a 1-page condition snapshot by mail 10 days after first touch β€” feeds into follow-up-sequence skill)

3. Campaign-Level Recommendations

  • Suggested send order for the week
  • Which buildings cluster geographically for efficient drive-through
  • Which buildings share an owner/property manager (batch the outreach to that contact)
  • Which industries in the list warrant vertical-specific case studies (use commercial.case_studies[].vertical matching) and which existing case studies apply
  • Capacity check: total estimated SF in the πŸ”₯ list vs commercial.crew_capacity_sf_per_week β€” flag if conversion would saturate

Output requirements:

  • Flag anything inferred as "estimated" or "unconfirmed" β€” never present guesses as facts to a sales rep
  • Never include personal contact info that was not publicly disclosed (no scraped phone numbers, no guessed personal emails)
  • Use vertical-and-geo-matched case studies from commercial.case_studies[] by name; if none match, suggest the first commercial job in that vertical/zip be logged as a reference project
  • Differentiation lines reference commercial.certifications[] (e.g., "as a Carlisle CCM Authorized Applicator we extend the SureWeld TPO warranty…")
  • Saved to outputs/commercial-prospects/{territory}-{YYYY-MM}.md if the user confirms

Efficiency notes:

  • "Research from scratch" mode: ask once for territory + verticals, then proceed with public-data inferences flagged as estimated
  • Source-list mode: enrich rather than re-discover
  • Cross-reference sibling skills: lead-response-automator (once outreach lands responses), estimate-builder (once a walkthrough is booked), follow-up-sequence (for the post-first-touch cadence), roof-inspection-report commercial variant (for the capital-planning deliverable after on-roof visit)

Example Output (full run: list + campaign plan + a brief for every πŸ”₯ and 🟑 prospect)

1. Prospect List β€” Plano/Allen TX 75074/75013, warehouse + retail verticals, 2026-06

#BuildingAddressRoof Est. AgeEst. SFEst. Project ValueIndustryDecision-Maker TitleDM Name (if known)TriggerVertical-Matched Case StudyPriority
1Riverside Logistics Center4400 Industrial Pkwy, Plano 75074~17 (est.)62,000~$430K (recover)Warehouse/distributionVP Real Estate / Dir. Facilitiesβ€” (Lincoln Property Co. PM)4/18 hail 1.25"; 9 nearby HVAC permits 12 moFrisco Logistics Hub 78k TPO 2024πŸ”₯ Hot
2Parkside Commons retail strip1820 Preston Rd, Plano 75093~14 (est.)38,000~$300K (recover)Retail stripProperty Manager (3rd-party)β€”4/18 hail footprint edge; visible ponding (aerial)none β€” log as first 75093 retail ref🟑 Warm
3Allen Tech Business Park (Bldg C)700 Central Expy, Allen 75013~12 (est.)51,000~$360K (recover)Light industrialCorporate Dir. of FacilitiesDana W. (LinkedIn)Solar permit filed 2026-03 (penetration risk)Plano flex-space EPDM 2023πŸ”₯ Hot
4Cedarbrook Medical Office1100 W McDermott, Allen 75013~19 (est.)28,000~$280K (tear-off)Medical office (MOB)Property Manager (3rd-party)β€”Roof past mfr. warranty window (est.)none β€” MOB vertical gap🟒 Nurture
5Greenline Distribution3900 Mapleshade Ln, Plano 75075~9 (est.)84,000~$420K (recover)Warehouse/distributionRegional FMβ€”None current; large SF, monitorFrisco Logistics Hub 78k TPO 2024🟒 Nurture

All age/SF/value/system figures flagged estimated (assessor + aerial; value = Est. SF Γ— $/sf assumption, recover ~$5–7/sf or tear-off ~$10/sf per estimated condition). No personal contact info included beyond publicly listed PM switchboards.

2. Campaign-Level Recommendations

  • Send order this week: #3 Allen Tech (Dana W. is name-level + fresh solar-permit trigger) β†’ #1 Riverside (largest πŸ”₯ at ~$430K, route through Lincoln Property switchboard) β†’ #2 Parkside (PM hunt first). Within the πŸ”₯ tier, ties broken by Est. Project Value so reps work the biggest qualified jobs first.
  • Geo cluster: #3 and #4 are both Allen 75013, 0.6 mi apart β€” one drive-by photo run covers both.
  • Shared contact: #2 and #4 are both 3rd-party-managed retail/MOB; identify the PM firm and batch one intro covering both buildings.
  • Vertical gaps: no MOB (#4) or 75093 retail (#2) case study on file β€” pitch #4 as a reference-project candidate and flag for commercial.case_studies[] logging on win.
  • Capacity check: πŸ”₯ list = 113,000 sf / ~$790K combined est. value (#1 ~$430K + #3 ~$360K). At commercial.crew_capacity_sf_per_week (assume 25,000 sf), simultaneous conversion of #1+#3 would stall ~4.5 weeks β€” stagger walk-throughs so the larger #1 leads.

3. Outreach Briefs β€” one per πŸ”₯ and 🟑 prospect

Per the output rules, every πŸ”₯ and 🟑 row gets its own brief (the two πŸ”₯ first, sorted by Est. Project Value, then the 🟑). The 🟒 Nurture rows (#4, #5) get no brief this cycle β€” they re-enter when a trigger appears.

πŸ”₯ #1 β€” Riverside Logistics Center (largest πŸ”₯, ~$430K)

PROSPECT β€” Riverside Logistics Center
Address: 4400 Industrial Pkwy, Plano TX 75074
Type:    Distribution warehouse, ~62,000 sf single-membrane roof (TPO est.)
Roof age: ~17 years (assessor permit 2008; aerial confirms membrane install pattern)
Owner:   Cornerstone REIT (publicly traded; FM decision routed to property manager)
PM:      Lincoln Property Co. β€” Plano office (940-555-0119 switchboard)
Decision-maker (per vertical lookup): VP Real Estate / Director of Facilities
  (>50k sf bracket); backup is Regional FM
Trigger: 2026-04-18 hail event with 1.25" peak in 75074 (NOAA event 20260418-DFW-117);
         9 distribution buildings within 1 mile permitted HVAC work in last 12 months
         (penetration risk on a 17-yr TPO with seam exposure)
Vertical-matched case study (from commercial.case_studies[]):
  "Frisco Logistics Hub, 78k sf TPO restoration, 2024 β€” recovered $0.42/sf vs full
  replacement; client extended Carlisle SureWeld warranty 10 years."

OPENING LINE (voice.commercial = consultative):
  "Quick note from {company.name} β€” we just wrapped a 78k-sf TPO restoration on a
  distribution roof in Frisco that was about the same age as Riverside Logistics
  Center. The 4/18 hail and the recent HVAC permits in the area are usually when
  the seam separations start showing up. If you'd want a 15-minute walk-through
  of satellite imagery before we'd ever talk about a quote, I can send a
  condition snapshot this week."

CTAs:
  Low:  15-min satellite walkthrough β€” no roof access, just imagery
  High: free 60-min infrared moisture scan + drone seam survey

GHOSTING FALLBACK (10 days):
  Mail 1-page condition snapshot with redacted Frisco case study; route into
  follow-up-sequence Warm cadence.

DIFFERENTIATION LINE (from commercial.certifications):
  As a Carlisle CCM Authorized Applicator we can extend SureWeld warranty terms
  on a TPO restoration β€” most regional contractors can't.

β€” {company.name} | {company.commercial_phone} | {company.commercial_email_from}

πŸ”₯ #3 β€” Allen Tech Business Park, Bldg C (name-level contact + fresh trigger β†’ lead the week)

PROSPECT β€” Allen Tech Business Park (Bldg C)
Address: 700 Central Expy, Allen TX 75013
Type:    Light-industrial flex building, ~51,000 sf low-slope roof (EPDM est.)
Roof age: ~12 years (assessor permit 2014; aerial shows ballasted-EPDM field)
Owner:   Allen Tech Park Holdings LLC (self-managed; facilities run corporately)
Decision-maker: Dana W. β€” Corporate Director of Facilities (name-level via LinkedIn;
  vertical lookup confirms the β‰₯50k-sf light-industrial buyer is Corporate Dir. of
  Facilities, backup EHS Manager given the new penetration)
Trigger: Solar permit filed 2026-03 β€” a rooftop PV install drives dozens of new
  penetrations and attachment points into a 12-yr EPDM field; the seam and flashing
  review window is *now*, before panels go down and cover the membrane
Vertical-matched case study (from commercial.case_studies[]):
  "Plano flex-space EPDM, 2023 β€” re-flashed and coated ahead of a tenant solar
  install; zero leak callbacks through two summers."

OPENING LINE (voice.commercial = consultative):
  "Dana β€” quick note from {company.name}. We saw Bldg C pulled a rooftop-solar
  permit this spring. On a 12-year EPDM field, the moment to settle seams and
  flashing details is before the array goes down and you can't get to the membrane
  under it. We did exactly this on a Plano flex building in 2023 β€” re-flashed and
  coated ahead of the tenant's panels, no callbacks since. Worth a 15-minute look
  at the imagery before your installer mobilizes?"

CTAs:
  Low:  15-min satellite + permit-overlay walkthrough β€” no roof access
  High: free pre-solar roof + flashing condition survey (infrared moisture scan
        on the EPDM field before panel layout is finalized)

GHOSTING FALLBACK (10 days):
  Send a 1-page "pre-solar roof readiness" checklist referencing the Plano EPDM
  project; route into follow-up-sequence Warm cadence. Re-time the next touch to
  the installer's likely mobilization date.

DIFFERENTIATION LINE (from commercial.certifications):
  As a Carlisle CCM Authorized Applicator we can coordinate the membrane warranty
  around a third-party PV attachment β€” most contractors leave that gap unaddressed.

β€” {company.name} | {company.commercial_phone} | {company.commercial_email_from}

🟑 #2 β€” Parkside Commons retail strip (strong trigger, contact not yet identified)

PROSPECT β€” Parkside Commons retail strip
Address: 1820 Preston Rd, Plano TX 75093
Type:    Multi-tenant retail strip, ~38,000 sf low-slope roof (TPO est.)
Roof age: ~14 years (assessor + aerial; past mid-life for mechanically-attached TPO)
Owner:   Held in a 75093 retail LLC; 3rd-party property-managed (PM not yet named)
Decision-maker (per vertical lookup): Property Manager (3rd-party) for <50k sf retail;
  backup Lease Admin. *Contact hunt is the gating step β€” this is 🟑, not πŸ”₯, only
  because the human isn't identified yet.* Find-the-PM path: tenant signage / the
  leasing sign on the pad β†’ CRE listing broker β†’ county "care-of" mailing address.
Trigger: On the edge of the 4/18 hail footprint AND visible ponding at two interior
  drains in current aerial imagery β€” a documented standing-water pattern an asset
  manager can't unsee once it's shown to them.
Vertical-matched case study: none on file for 75093 retail β€” pitch this as the
  shop's first 75093 retail reference project and flag for commercial.case_studies[]
  logging on win (also note for the #4 MOB vertical gap).

OPENING LINE (voice.commercial = consultative, PM-agnostic until named):
  "Hi β€” I'm trying to reach whoever manages the roof at Parkside Commons on Preston.
  We're a {company.name} commercial crew; current aerial imagery shows standing
  water at two of the interior drains, which on a 14-year TPO usually means the
  fasteners are starting to back out under the membrane. No charge to put a drone
  over it and send you a one-page condition snapshot β€” then you decide if it's
  worth a closer look."

CTAs:
  Low:  emailed 1-page drone + ponding-overlay snapshot (no roof access, no cost)
  High: free on-roof drain + seam-fastener survey with infrared moisture scan

GHOSTING FALLBACK (10 days):
  Mail the snapshot to the county "care-of" address with a note inviting the PM to
  call; route into follow-up-sequence Cold→Warm cadence once a human responds.
  Batch with #4 Cedarbrook MOB if the same PM firm manages both (see campaign plan).

DIFFERENTIATION LINE (from commercial.certifications):
  As a Carlisle CCM Authorized Applicator a TPO recover here can carry a renewed
  manufacturer warranty rather than a contractor-only patch.

β€” {company.name} | {company.commercial_phone} | {company.commercial_email_from}

(Run with your own territory + config to replace these illustrative values.)

This skill is kept in sync with KRASA-AI/roofing-ai-skills β€” updated daily from GitHub.