ARS · RETAIL LEAD GEN · APRIL 24 2026 · v1.0

The Premium Roof Inspection Funnel

Free precision drone + AI thermal inspection. GAF Master Elite quality. Premium homeowner targeting in SE Michigan. No storm angle, no insurance angle, no urgency theater. This deck is the strategic plan, retroactive review while the campaign runs.

Campaign 120244724772870598 LIVE · $60/day CBO 2 active sets · 6 ads GAF Master Elite Phone (734) 636-2251
Campaign LIVE
Verified active 5:23 PM PT Apr 24 via Meta API. This deck is retroactive review. Decision: KEEP RUNNING or PAUSE for changes.
01 · SUMMARY 02 · TARGETING 03 · CREATIVE 04 · TRUST 05 · AUDIT 06 · PERFORMANCE 07 · APPROVAL 08 · PHASE 2

🎯What This Campaign Is

Retail Lead Gen is ARS's premium homeowner funnel. Free precision roof inspection (drone + AI thermal scan). GAF Master Elite quality. No pressure, no urgency theater. The homeowner books because they want a real read on their roof from a top-tier contractor, not because a storm just rolled through.

$60/day
Live CBO Budget
2 sets
Active (A + B)
6 ads
3 Feed · 3 Reels
< $30
CPL Scale Trigger

Target homeowner

  • Owns a high-value home in SE Michigan
  • Investing in the asset (planning to stay, not flipping)
  • Roof mid to late life, OR proactive about maintenance
  • Pragmatic, quality-first, willing to pay for craftsmanship and warranty
  • HHI signal via geo (Bloomfield Hills $189K median, Birmingham $153K, Northville $145K)
  • NOT a storm victim. NOT insurance-driven. NOT looking for a "free roof".

Why Retail differs from GoNano

  • Different funnel. Retail sells inspection and replacement. GoNano sells education on a product the homeowner has never heard of.
  • Different price anchor. Retail competes with $15K to $30K replacement bids. GoNano sells against doing nothing or over-spending ($25K vs $5K).
  • Different CTA logic. Retail = Get Quote (action, the homeowner already wants a roofer). GoNano = Learn More (educate first).
  • Different angle. Retail leads with trust stack (GAF Master Elite, 3,000+ homes, 260+ reviews). GoNano leads with the math.
Critical positioning rule. NO storm angle. NO insurance angle. NO "free roof". NO "insurance pays 100%". NO "claim". Premium investment framing only. Preventive language is OK. The ad reads like a homeowner choosing to invest, not chasing a settlement.
Phone routing: (734) 636-2251 everywhere. Same line as GoNano. The old (734) 212-0890 is retired. Confirmed by Nick at 5:03 PM PT 2026-04-24. Vision audit on every live creative: zero phone digits baked in any image. Risk of stale (734) 212-0890 in a creative = zero.

📍Targeting Strategy

High-HHI SE Michigan footprint. Meta deprecated direct Household Income targeting late 2024, so affluence is filtered through ZIP and city selection. The geo list IS the income filter.

🗺️ Geo (all ad sets)

Cities
Bloomfield HillsHuntington WoodsBeverly HillsBirminghamNorthvilleNoviFarmington HillsMonroeSouthgateLivoniaLansing
Counties
LivingstonOaklandWashtenawMonroeMacombJacksonLenaweeHillsdale
Anchor
Monroe HQ (42.07, -83.52)
50-mile safety radius
Excluded (all sets)
Detroit ZIPs 48201-48228
Downtown Detroit, low-HHI, off-brief

Ad Set Breakdown

SetIDStatusAudiencePlacementsDaily
A · Manual 35-65 ...815150598 ● ACTIVE Manual age 35-65, Advantage+ Audience OFF FB Feed · IG Feed · FB Explore $30/day
B · Advantage+ Broad ...869410598 ● ACTIVE Advantage+ broad, age 25-65 FB+IG Stories+Reels (Adv+ optimized) $30/day
C · Preventive Storm ...870060598 ○ PAUSED Manual 40-65 (UI), but age_min=18 in API → BUG FB Feed+Story · IG Story+Reels n/a
Why Set B is Advantage+ broad, not retargeted. Original spec called Set B "Retarget" but the account is fresh, no pixel data, nothing worth retargeting. Renamed during audit (Section 5 Issue 3). Once 1-2 weeks of pixel data accrue, Phase 2 builds real custom audiences.
Set C deferred. Has a known bug: UI shows 40-65 but API targeting payload has age_min=18. Don't reactivate until that's fixed. Likely redundant if Set A + B perform; revisit Day 7.
Special Ad Categories: empty (correct). Roofing repair is not Housing under Meta's SAC framework (which restricts housing sales, employment, credit, and social issues). Home services has no SAC restriction. Confirmed correct.
No custom audiences yet. Account is fresh. No pixel data. No page engagement worth retargeting. Phase 2 work, see Section 8.

🎨6 Live Ads · Phone Audit · Em-dash Audit

Every creative was vision-audited (Gemini 3 Flash agentic vision, full image including footers, badges, corners) for stale phone numbers. Zero phone digits baked in any of the 6 creatives. Phone is enforced at copy + form level only.

0 / 6
(734) 212-0890 in any image
0 / 6
Em dashes in copy
6 / 6
CTA = GET_QUOTE
6 / 6
Form 1474857634146888

Set A · Feed (3 ads)

Set A · Ad 1 · Feed

Retail Primary, Hero

Hero · 1:1GET_QUOTE
Headline
GAF Master Elite · Built to Last
Primary text
3,000+ Michigan homes protected. 260+ 5-star reviews. Free precision roof inspection, no pressure.
Description
GAF Master Elite Contractor
Meta IDs
ad: 120244858853600598
creative: 2191261178312849
image: 72cee8cc...09a2 (1254×1254)
Elite Roofing Excellence twilight house
hero-elite · 1:1 · phone-clean
Set A · Ad 2 · Feed

See What You Can't

4:5 portraitGET_QUOTE
Headline
See What You Can't
Primary text
3,000+ Michigan homes inspected. Our drone + AI scan finds damage invisible from the ground. Free, no obligation.
Description
260+ Five-Star Reviews
Meta IDs
ad: 120244858854820598
creative: 4238768779600855
image: e1a1b456...6ffc (1122×1402)
Drone identifies damage with target boxes
see-what-you-cant-feed · 4:5 · phone-clean
Set A · Ad 3 · Feed

AI-Powered Roof Inspections

4:5 portraitGET_QUOTEApr 24 fix
Headline
AI-Powered Roof Inspections
Primary text
Michigan's most advanced roofing company. AI-powered thermal scans catch what eyes miss. GAF Master Elite.
Description
See What Others Miss
Meta IDs
ad: 120244865884010598
creative: 1911658116150731
image: a29d9829...a828 (1080×1350)
Drone with blue scanning beams over roof
ai-precision-feed · 4:5 · phone-clean

Set B · Reels/Stories (3 ads)

Set B · Ad 4 · Reels

Your Roof Deserves Elite

9:16 verticalGET_QUOTE
Headline
Your Roof Deserves Elite
Primary text
The AI drone scan finds what eyes miss. GAF Master Elite. 260+ 5-star Michigan reviews.
Description
Free Inspection
Meta IDs
ad: 120244858879440598
creative: 928688996737311
image: 94001d82...9f99 (941×1672)
Vertical Elite Roofing twilight
reels-elite · 9:16 · phone-clean
Set B · Ad 5 · Reels

AI Precision. Elite Protection.

9:16 verticalGET_QUOTE
Headline
AI Precision. Elite Protection.
Primary text
Thermal + drone scan in minutes. Damage you can't see, spotted before it costs you.
Description
AI-Powered
Meta IDs
ad: 120244858880080598
creative: 1259103743060506
image: 7a105048...9ff6 (941×1672)
Thermal-imaging roof scan
reels-ai-precision · 9:16 · phone-clean
Set B · Ad 6 · Reels

Hidden Damage. Real Cost.

9:16 verticalGET_QUOTE
Headline
Hidden Damage. Real Cost.
Primary text
Small problems today = expensive repairs tomorrow. Free inspection from a GAF Master Elite pro.
Description
Don't Wait
Meta IDs
ad: 120244858880750598
creative: 1292806343046869
image: 470aefd8...65aaa (941×1672)
Drone with yellow grid scan over dark roof
reels-hidden-damage · 9:16 · phone-clean

Visual Inventory at a Glance

hero-elite
Elite Roofing Excellence, twilight luxury home
Live1:1Set A
see-what-you-cant-feed
Drone identifies damage with target boxes
Live4:5Set A
ai-precision-feed
Drone scan beams + tablet + clipboard
Live4:5Set A
reels-elite
Vertical Elite Roofing twilight
Live9:16Set B
reels-ai-precision
Thermal-imaging roof scan
Live9:16Set B
reels-hidden-damage
Drone yellow grid scan, dark roof
Live9:16Set B
Audit summary. All 6 creatives vision-checked end-to-end. Zero phone numbers baked in any image. Zero em dashes in any visible copy. Standard hyphens in compounds (AI-Powered, 25-Point) are correct. Phone enforced at ad copy + lead form level only. All 6 ads route to v4 form 1474857634146888 with GET_QUOTE CTA.

🏆The Credentials Behind Every Ad

Every Retail ad leads with at least one trust signal. Hierarchy is locked: GAF FIRST, OC second, never lead with OC.

Primary cert
GAF Master Elite Contractor
Top 2-3% of roofing contractors nationally. Listed on GAF's contractor directory at gaf.com/roofing-contractors. Lead all Retail copy with this.
Primary warranty
GAF Golden Pledge® Warranty
25-30 year workmanship warranty backed by GAF. Industry's strongest residential roofing warranty.
Secondary cert
Owens Corning Platinum Preferred
Mention second, never lead. Currently absent from all live Retail copy on purpose.
Social proof
3,000+ Michigan homes protected
Featured in Hero copy and See What You Can't.
Social proof
260+ 5-star Google reviews
Featured in Hero, See What You Can't, Reels Elite.
Trust
Family-owned, SE Michigan
Licensed, insured, family-owned. Local credibility for the geo-locked audience.
Compliance check. Every live ad leads with either GAF Master Elite or social proof numbers (3,000+ / 260+). OC absent on purpose. Rule respected: GAF first, OC second.

🔥4 Critical Issues + 1 Hygiene · All Fixed

Nick's gem ran a full pre-launch audit. Caught 4 critical issues plus a copy hygiene issue. Every one fixed before launch. The campaign went live clean.

🔥 Issue 1: BOOK_TRAVEL CTA on every ad

CRITICAL
All 6 ads had call_to_action_type: BOOK_TRAVEL. Wrong vertical, wrong intent. BOOK_TRAVEL is for hotels and flights. Lead-gen roofing should be GET_QUOTE.
✅ Fixed: Rebuilt all 6 creatives via direct API POST to /act_601190119078006/adcreatives with call_to_action.type = GET_QUOTE. New creative IDs swapped onto each ad. Verified live: all 6 ads now show GET_QUOTE.

🔥 Issue 2: Lead form mismatch (dead form referenced)

CRITICAL
Campaign conversion_specs pointed at lead form 28352151924431516, which is dead/archived. Active form 1474857634146888 attached at creative level only. Risk: if Meta defaulted to conversion_specs first, leads would land in a dead form.
✅ Fixed: Verified every live creative's object_story_spec.link_data.call_to_action.value.lead_gen_form_id = 1474857634146888. All 6 ads route to the correct v4 form. Dead form not referenced anywhere on active creatives.

🔥 Issue 3: Set B "Retarget" had no audiences

CRITICAL
Set B was named "Retail B - Retarget" but had no custom audiences attached. Account is fresh, no pixel data, nothing to retarget. Set was effectively running on Advantage+ broad with no targeting at all under a misleading name.
✅ Fixed: Renamed Set B to "Retail B - Advantage+ Broad Reels/Stories" to match what it actually is. Audience config is correct (Advantage+ broad, age 25-65, geo + Detroit exclusions). When pixel data accrues, real retargeting added in Phase 2.

🔥 Issue 4: Duplicate AI Precision Reels

MEDIUM
Image hash 7a10504830b7c5454f64771a93ee9ff6 ran in both Set A AND Set B Reels. Same image, same auctions = bidding against itself = budget waste. Also: Set A Reels had only 1 ad, so dedup would leave Set A Reels empty.
✅ Fixed: Deleted the Set A duplicate. Collapsed Set A Reels into Set B (the proper Reels home). Set A is now Feed/Explore-only. Set B is the Reels/Stories home with 3 ads (Elite, AI Precision, Hidden Damage).

✏️ Bonus: em-dashes in 2 ad copy texts

HYGIENE
2 of the rebuilt ad copy texts had em dashes (Nick directive: no em dashes anywhere).
✅ Fixed: Stripped during the GET_QUOTE rebuild. Live primary text and headlines audited: zero em dashes. Standard hyphens in "AI-Powered" and "25-Point" remain (those are correct).

📊Pacing & Kill Thresholds

DaysTotal / dayGoalAction
1 (today)$60Delivery + CTR baselineHold. Watch impressions, link CTR.
2 to 3$60StabilizeHold. No panic-pause.
4 to 7$60 to $120Scale winnersIf CPL <$30: scale to $90-120/day. $30-45: hold. >$45: rework.
Kill thresholds (non-negotiable). Single ad over $25 spend with zero leads → pause. Ad set over $60 CPL after 5 days → rework creative or audience. Campaign over $50 blended CPL after 7 days → strategy review (likely positioning, not budget).
Eval window. 7 days minimum. Retail needs 2-4 touches per conversion. Don't panic-pause before Day 5.
Learning phase target. ~50 conversions per ad set within 7 days to exit Meta's learning phase. Below that, Meta keeps treating the ad set as cold and CPL stays elevated.
First 24 hours specifically. Watch impressions delivery (each set should spend close to $30/day; under $20 = delivery issue, audience too narrow or creative not approved). Link CTR baseline: under 0.5% bad, 1.0%+ good for cold lead gen, 2.0%+ hot. Watch CPC vs CPM together to size up creative quality.

🚦Keep Running or Pause for Changes

Live Campaign Sign-Off

Campaign is already running ($60/day CBO, 6 ads, 2 sets). Three confirmations: budget, audience, creative. After all 3 are approved, the panel records the green-light to localStorage. If any are flagged for change, the campaign should be paused before adjustments.

Daily Budget
$60
Scale Target D4-7
$90-120
Active Sets
2 (A + B)
Live Ads
6
CPL Scale Trigger
<$30
Eval Window
7 days

1. Budget

$60/day CBO total ($30 Set A + $30 Set B), Lowest Cost Without Cap. Scale plan: $90-$120/day Day 4-7 if blended CPL under $30. Kill thresholds in Section 6.

2. Audience & Targeting

Set A manual age 35-65 Feed/Explore + Set B Advantage+ broad age 25-65 Reels/Stories. Detroit ZIPs 48201-48228 excluded. Set C remains paused (age bug).

3. Creative & Copy

6 live ads (3 Feed, 3 Reels), all GET_QUOTE, all routed to v4 form 1474857634146888, all phone-clean (vision-audited), all em-dash-clean, all lead with GAF Master Elite or social proof.


🔭What's Next After Day 7

Q1: Build first custom audiences (~Day 7-14)

Account is fresh today. No pixel data. No page engagement. Once 1-2 weeks of impressions + 50+ form submissions accrue, build:

  • Website visitors past 30 days (pixel)
  • Page engagers past 60 days (FB + IG)
  • Lead form openers who didn't submit, past 30 days
  • Lookalike 1% of submitted leads (seed off the v4 form)
  • Lookalike 1% of AccuLynx customer list (pending CSV from Trenton)

Add these to a new Set D Retarget once data is sufficient.

Q2: Set C reactivation

Set C ("Preventive Storm 40-65") is paused. Has a known bug: UI shows age 40-65, but API targeting payload has age_min=18. Fix the API targeting before reactivating. Open question: do we want Set C at all? If A + B perform, Set C might be redundant. Park decision until Day 7 review.

Q3: Add 2 more Reels to Set B?

Set B currently has 3 Reels. Room for 2 more before fatigue starts impacting CTR. Source candidates from nick-drops-apr24/resized-v2/:

  • 01-roofs-built-to-protect-trusted-to-last-9x16.png — trust angle
  • 04-protect-today-save-for-years-9x16.png — preventive (NOT storm framing)

Decision deferred to Day 5 once we see which of the 3 current Reels is winning.

ARS Retail · Meta Ads Strategic Deck v1.0 · April 24 2026
Phone (734) 636-2251 (locked confirmed by Nick 5:03 PM PT 2026-04-24) · Vision-audited all 6 creatives: zero phone digits in any image
Sources: live Meta API state (verified 5:23 PM PT) · Nick's gem pre-launch audit (Apr 24) · GAF Master Elite trust stack (MEMORY.md)