Local Leap Media

Media Buyer Launch Playbook

The media buyer's end-to-end workflow for launching a new client. This is the Phase 7 deep-dive to the master Client Launch SOP — what to do once Griffin (onboarding), Hanif (FB page + creatives), Mohamed (GHL automation), and Sean/Hanif (domain + lead form base) have prepped their pieces.

Reference call: walkthrough with Tasneem on 2026-05-13 using Air Mavericks and GoEcho as worked examples.

TIP

Default mental model: find the client info → build the lead form first → then campaign + creatives → then targeting. The lead form is the unblock for Mohamed's automation, so it ships before the campaign is built.


1. Find the client info (always start here)

For every new client, three sources exist. Use them in this order:

Source What it is Where to find it
Onboarding survey Client's own words. Source of truth. Top of the new client Discord channel (Griffin pins it)
Griffin's notes form Corrections, additions, and execution-level details captured during the onboarding call (offers, pricing, location nuance, Mohamed instructions) Same Discord channel, posted by Griffin after the call
Call recording Fallback when notes are unclear Linked by Griffin in the channel — Fathom search by keyword (e.g., "offers") to jump to the relevant moment

If anything is missing or unclear, tag Griffin in the channel. Don't guess on pricing, geography, or warranty claims.

What you're pulling out

NOTE

Hidden lower price: many HVAC clients have a price they'd be willing to run if the initial offer flops but won't volunteer up front. Griffin should be asking "if X doesn't work, can we try Y?" on the onboarding call and noting the answer. If it's not in the notes, ask in the channel.


2. Default offer logic for HVAC

These are starting positions, not rules. Always defer to what the onboarding survey + Griffin's notes say.

WARNING

Warranty types — don't confuse them. - Parts warranty: covers replacement parts cost. Client typically eats this. Safe to advertise. - Labor warranty: covers the labor on warranty repairs (not seasonal tune-ups). Strong differentiator when present. - Maintenance warranty: free seasonal tune-ups (2-4× per year, dust + tweak). Not the same as labor warranty — labor only kicks in for emergency repairs.


3. Ad account selection

For now, the default landing account is the existing HVAC-only ad account (no recent serious rejections). Verify with Sean before changing accounts.

NOTE

Goal is to move off this single shared account over time. For the next handful of new clients it remains the default.


4. Build the lead form FIRST

Why this comes before the campaign: Mohamed's automation work depends on the lead form existing. If you build the campaign first and the form last, you bottleneck on him.

Pro tip: if the client may run multiple offer types (starting-at price and monthly financing), build all variants on Day 1 — duplicate the base form, swap the offer type in the name (StartingAt7997MoFi), and let Mohamed integrate all of them in one pass. Saves a round-trip later.

Form structure (always the same)

  1. Format: Optimized Flexible
  2. Intro: Background image ON (homeowner doesn't feel "yanked" to a new context)
  3. Headline: write the same offer as the ad (do NOT mystery-box it)
  4. Contact-fields description: We'll use your info to schedule your estimate. Please confirm your phone number is correct. (Same exact copy on every form.)
  5. Contact info fields (in this order): - Full name - Phone (required) - Email (required — clients send estimates via email, leave on by default) - Zip code
  6. Question 1 — location qualifier: question text generated per-client via New Launch Targeting Sequence Prompt C. Answers are always Yes, I am / No.
  7. Question 2 — project type (HVAC): - "Replace my current HVAC system" → qualified - "Install HVAC in a new home/area" → qualified - "Repair my AC or furnace" → disqualify (unless retainer client explicitly says they want repairs)
  8. Privacy policy link (same for every client, covers all .directestimatepro.com subdomains): https://test.directestimatepro.com/privacy-policy
  9. End page (qualified): headline ONE LAST STEP! + 3-step body + Hold My Spot call-out. CTA button label: HOLD MY SPOT. CTA destination: client's .directestimatepro.com/schedule-appointment URL. Messenger conversations: ON. Exact copy in Lead Form Standard Questions.
  10. End page (disqualified): https://www.facebook.com/ (sends them back to their feed — we don't want disqualified leads calling the client)

Full default question text + answer copy: Lead Form Standard Questions. Conditional logic walkthrough: Lead Form Conditional Logic — Recording Script (Loom — Sean).

Naming convention

Format:

CompanyInitials_Location_Niche_OfferType_Version

Examples: - GE_Vegas_HVAC_StartingAt7997_1.0 - GE_Vegas_HVAC_MoFi_1.0 - MP_Cleveland_HVAC_StartingAt7997_4Q_1.0 (4Q suffix = non-default question count)

Versioning: - 2.0 = structural change (added or removed a question) - 1.1, 1.2 = copy/typo fix, structure unchanged - -4Q suffix = lead form has more than the default 2 questions (location + project type)

TIP

If a client has multiple offers running at once, build each as a separate lead form (e.g., one form for StartingAt7997, one for MoFi). Do NOT use one form with multiple offers — each offer = its own form so Mohamed can integrate cleanly and we can swap offers without rebuilding.


5. GHL integration (Form Field Mapping)

GHL's UI moved this recently — flagging because it's not where it used to be.

  1. In GHL, go to the integration for the connected Facebook page (Hanif will have connected it ahead of time — if not, ping in the channel).
  2. Click the three-dot menu on the form → Form Field Mapping (this is the new location for what used to be inline).
  3. Map: service_area and project_scope (or whatever the form's question fields are named) to the corresponding GHL contact fields.
  4. Save.
  5. Open the automation tab and confirm the form shows up there. You won't see the workflow yet if Mohamed hasn't done his side — that's fine, just confirm the form is mapped.
  6. Ping Mohamed in the channel: "Form is mapped, ready for automation."

If something looks broken on the front-end test (e.g., end page returns 404), it's almost always Mohamed's domain not published yet or Griffin hasn't transferred the domain — post in the channel and let them sort it.


6. Campaign structure (initial launch)

Default initial setup

Element Default
Campaign objective Leads
Optimization More volume (max number of leads)
Ad set strategy ABO — manual budget on each ad set
Number of ad sets at launch 2 (Statics + Videos)
Daily budget per ad set $35 / $35 (typical) or $40 / $40 (better markets)
Minimum age 30
Maximum age 65+
Gender All
Internal targeting Same on both ad sets (broad — interests OFF)

TIP

Discuss daily ad spend with Sean before launching any new account. Client doesn't dictate spend — the floor for testing 6+ creatives is 35×2 = $70/day. Drop to $25/25 only when the client genuinely can't absorb more volume.

Edge cases

Audience naming

[CompanyName]_[City]_1.0

Bump the version when you change exclusions/inclusions. Don't edit the locked v1.0 — duplicate and increment.


7. Creative angles for the initial launch

Launch testing three angles in the videos ad set + two static styles in the statics ad set. As of 2026-05-13:

Video angles (locked trio)

Angle Description Status
Lean Mean Machine "A new [system] for this price in this place, we have you covered." Justified by a "we keep costs low" rationale. Proven evergreen across multiple accounts — Tasneem confirmed: only creative still working across her tenure.
David vs Goliath Overpriced competitor frame — "got quoted $15K? We do it for $7,997." Working — especially in markets with overpriced competitors.
Red Flag Inverse of David vs Goliath: "got quoted $3K for full HVAC? That's a red flag." Anti-cheap-sketchy positioning. NEW — Hanif building, voiceover version landed 2026-05-12.

WARNING

Trade-in angle is being phased out. Volume is fine, but conversion is not — Fagr has been pushing back, Sean and Tasneem agree it's being de-prioritized. Don't add trade-in to a new launch unless Sean overrides.

Lean Mean Machine variation strategy

Lock the hook line. Vary everything else: - Music - Voiceover (Jerry vs alternates) - Footage / B-roll - Justification reasoning ("lean mean machine" → "passionate about our customers" → other)

This generates perceived novelty without churning the proven hook. Pattern reference: Taxonomy Beats AI Creativity.

Static styles (default duo)

Style Notes
Handwritten Default — has the best statics-side hit rate.
Direct response Default — gives Facebook variety in eyes.
~~Notes app~~ Underspends in Facebook's eyes — phasing out.

Where to build statics fast: Media Buyer White Label > static templates. Layered components: season (summer/winter/fall) + price point + call-out. Stack the three layers, swap in the client's logo + offer text.

TIP

AI logo edits: if using ChatGPT for static edits, fine. If using Gemini on the free tier, watch for the watermark and the off-white/yellow background tint — those silently degrade output.


8. Location targeting (two-prompt workflow)

Full prompt details + Tier 1/2/3 model: New Launch Targeting Sequence. The flow at a glance:

  1. Get the client's stated geo from Discord (radius / zip list / city list / county list).
  2. Run Targeting Audit Workflow Prompt B (Messy Location → Radius) — only if the geo is chaotic. Skip if the client gave a clean radius.
  3. Run Targeting Audit Workflow Prompt C (Location Question / Qualifier) — always. Generates the local-flavor lead form question.
  4. Run Targeting Audit Workflow Prompt A (Zip Exclusion Research) — always. Returns Tier 1/2/3 zip lists with audience math.
  5. Apply exclusions per the audience floor logic: - Audience > 1M → all of Tier 1 + Tier 2, consider Tier 3 - Audience 750K–1M → Tier 1 + selectively Tier 2 - Audience 500K–750K → Tier 1 only; rely on creative for quality - Audience < 500K → don't exclude; consider interest-narrowing as an alternative (Tasneem's call)

Tool: use Claude for these prompts when available. ChatGPT or Gemini are fine fallbacks — output quality is comparable, just confirm citations are real for the exclusion-research output.


9. Final order of operations (cheat sheet)

Day 0 (onboarding call) → Griffin + client + Hanif + Mohamed handle their pieces.
Day 1 (your day):
  1. Read the channel — pull offers, geo, brand, constraints.
  2. Build lead form (with variants if multiple offers planned). Map fields in GHL Form Field Mapping.
  3. Ping Mohamed: "Form ready for automation."
  4. Run location prompts → finalize radius + exclusion list + qualifier question.
  5. Decide budget with Sean.
  6. Build campaign:
       - Audience v1.0 (radius + Tier 1/2 excludes + age 30+, min age 25 if audience < 500K)
       - Ad set: Statics — Handwritten + Direct
       - Ad set: Videos — Lean Mean Machine + David vs Goliath + Red Flag
       - ABO, same internal targeting on both ad sets
  7. Quick frontend smoke test on the end page (qualified + disqualified routing).
  8. Launch.
Day 2+: monitor, audience-pack-test as needed, optimize.

Open improvements (tracked, not yet implemented)

These came up during the 2026-05-13 walkthrough and were intentionally deferred: