CONFIDENTIAL · INTERNAL HANDOFF · DRAFT FOR REVIEW

Homa LAB Paid Media → Monochrome

Complete handoff of Homa's in-house (LAB) Meta & Google paid programs for Monochrome to own and optimize. Built 2026-08-10.

Read this first. The LAB program is not a set of manual campaigns you can just take a screenshot of — its audiences, Customer-Match lists, and conversion signals are refreshed nightly by a fleet of Cloudflare Workers reading PostHog. If those workers stop, the audiences and Customer Match lists go stale within days and delivery degrades. The single most important handoff decision (§6) is whether Monochrome keeps that automation running or rebuilds it. Everything else is standard.

👋 README — start here

This is the operator's front door. The source for everything below ships in the bundle lab-fleet-handoff.zip (download it right here); this page is its companion. Read this, then §15 for day-to-day management.

📦 Download the source — everything below lives here, no unzip-from-email needed:
⚠️ There are TWO kinds of infra — they transfer differently.

1. Cloudflare Workers (/workers) — deploy in your Cloudflare account

Each folder = one worker (worker.js or src/worker.js + wrangler.toml, which carries the cron + KV bindings).

Deploy: cd workers/<name> && npm i && npx wrangler secret put <NAME> (see the secrets table below) then npx wrangler deploy. Recreate any KV namespaces and paste their new ids into wrangler.toml.

2. Cron scripts (/cron-scripts) — NOT Cloudflare; MUST be re-hosted

These run today as launchd jobs on Shawn's Mac and stop when it's off. Re-host them on your own scheduler/server (or port to Workers).

Secrets

🔐 The actual secret values live in a separate access-restricted Google Sheet, shared directly with your team — not in this bundle and not on this page. It's keyed by the exact wrangler secret put <NAME> names below. A few (Slack webhooks) are marked CONFIRM — they're already set on the live workers.

No secrets are in the bundle (verified). The names each worker needs:

WorkerSecrets / config to set
homa-lab-customer-match-syncDM_CLIENT_ID, DM_CLIENT_SECRET, DM_LOGIN_ACCOUNT, DM_OPERATING_ACCOUNT, DM_REFRESH_TOKEN, GOOGLE_OAUTH_CLIENT_ID/SECRET/REFRESH_TOKEN, POSTHOG_API_KEY/HOST/PROJECT_ID, MANUAL_TRIGGER_TOKEN, SLACK_WEBHOOK_URL, SLACK_SUCCESS_NOTIFY, HEARTBEAT, WORKER_SLUG
homa-lab-meta-audience-syncMETA_TOKEN, POSTHOG_API_KEY/HOST/PROJECT_ID, MANUAL_TRIGGER_TOKEN, SLACK_WEBHOOK_URL, KV
signal-audiencesMETA_AUTOMATION_TOKEN, POSTHOG_KEY, RUN_TOKEN, SIG_KV, SLACK_WEBHOOK
homa-metro-go(none)
lab-live-dashboardGOOGLE_ADS_CLIENT_ID/SECRET/CUSTOMER_ID/DEVELOPER_TOKEN/LOGIN_CUSTOMER_ID/REFRESH_TOKEN, META_TOKEN, POSTHOG_KEY, REDDIT_APP_ID/SECRET/REFRESH_TOKEN, KV
sitewide-dashboardGOOGLE_ADS_CLIENT_ID/SECRET/CUSTOMER_ID/DEVELOPER_TOKEN/LOGIN_CUSTOMER_ID/REFRESH_TOKEN, META_TOKEN, POSTHOG_KEY, KV
lab-daily-reportGADS_CID/CLIENT_ID/CLIENT_SECRET/DEV_TOKEN/LOGIN_CID/REFRESH_TOKEN, POSTHOG_KEY, RESEND_KEY, SLACK_WEBHOOK

Get running in 4 steps

  1. Accept the Cloudflare invite (Workers Admin) → you'll see the workers under Workers & Pages.
  2. Unzip the bundle. For each worker: cd workers/<name>, npm i, set its secrets (table above), recreate KV namespaces, npx wrangler deploy.
  3. Re-host the two cron scripts (or port to Workers) so CAPI + catalog don't go stale.
  4. Get Meta (Business Manager partner access to act_9501970176547289) + Google (MCC access to cust 5046504750) so you can manage the campaigns too.

→ Day-to-day editing, deploying, monitoring & troubleshooting: see §15 below.

1. What you're taking over

18
active Meta LAB campaigns
act_9501970176547289
15
active Google LAB campaigns
cust 5046504750
68
Meta custom audiences
worker-refreshed nightly
18
Google Customer Match lists
worker-refreshed nightly

Scope of this handoff: everything prefixed [HOMA-LAB] / [HOMA-WILDCAT] / [HOMA-EXT] on Meta and Google, the PostHog-fed automation that powers it, and the measurement conventions. NOT in scope (Monochrome already owns these): the MM_ Meta campaigns and the G_ "High-Intent Buyers"/"Asterisk" Google campaigns — those are already yours.

2. Access & accounts

SystemIdentifierWhat's needed
Meta Business Manager683046734288362 (Homa)Monochrome partner access to the ad account below
Meta Ad Accountact_9501970176547289All LAB campaigns live here (alongside your MM_ campaigns)
Meta Pixel1434262110992642Fires all funnel events; connected to catalogs
Meta Page / IGPage 326942450513460 · IG 17841468128656503All LAB creative posts from here
Google Adscust 5046504750 (MCC 2225490048)MCC-level access
PostHogproject 141181 (Homa)Source of truth for all leads/reg/qual/approved + audience queries
GTMGTM-K9Z6RJKSTagging / enhanced conversions

Credential files (never in this doc — this is a public URL): Meta system-user token, Google Ads OAuth, PostHog keys, Data Manager OAuth all live on the ops machine. Hand these over securely, out of band. Do not paste secrets into any shared page.

3. Meta LAB campaigns — purpose, fuel & setup

Each campaign below: what it's trying to accomplish (Purpose) and the audience/data that feeds it (Fuel), then its live ad sets.

Prospecting — net-new reach

[HOMA-LAB] Meta DPA Cold v2 - Price Engaged ACTIVE $84/d
🎯 Purpose — Cold DPA prospecting on a price-engaged / double-discount angle.
⛽ Fuel — Full home catalog + broad price-engaged cold audiences.
Ad setStatus$/dOptimizesPlacements
Cold v2 - graded FL+TX metros - price_engagedACTIVECBOlab_price_engagedAdvantage+ (incl Reels)
[HOMA-LAB] Meta Metro Carousels - Prospecting v1 ACTIVE ad-set budgets
🎯 Purpose — Cold prospecting via a metro-specific carousel of that city's most-viewed homes; the click lands on the metro SEARCH page, not a dead-end single listing.
⛽ Fuel — Non-housing commerce catalog of per-metro product sets + 1% lookalikes of converters (Registered/Qualified/Approved) + 40-mi metro geo. Links resolve through the homa-metro-go redirect worker.
Ad setStatus$/dOptimizesPlacements
Tampa - converter LALs + metro geo (pixel-event v3)ACTIVE$76lab_engaged_leadFeed-only
Orlando - converter LALs + metro geo (pixel-event v3)ACTIVE$82lab_engaged_leadFeed-only
Miami - converter LALs + metro geo (pixel-event v3)ACTIVE$19lab_engaged_leadFeed-only
Jacksonville - converter LALs + metro geo (pixel-event v3)ACTIVE$27lab_engaged_leadFeed-only
Dallas - converter LALs + metro geo (pixel-event v3)ACTIVE$28lab_engaged_leadFeed-only
Houston - converter LALs + metro geo (pixel-event v3)ACTIVE$46lab_engaged_leadFeed-only
Austin - converter LALs + metro geo (pixel-event v3)ACTIVE$22lab_engaged_leadFeed-only
San Antonio - converter LALs + metro geo (pixel-event v3)ACTIVE$20lab_engaged_leadFeed-only
Orlando - converter LALs + metro geo (rebuild v2)PAUSED$1281814934682813003Advantage+ (incl Reels)
San Antonio - converter LALs + metro geoPAUSED$311814934682813003Advantage+ (incl Reels)
Austin - converter LALs + metro geoPAUSED$351814934682813003Advantage+ (incl Reels)
Houston - converter LALs + metro geoPAUSED$721814934682813003Advantage+ (incl Reels)
Dallas - converter LALs + metro geoPAUSED$431814934682813003Advantage+ (incl Reels)
Jacksonville - converter LALs + metro geoPAUSED$421814934682813003Advantage+ (incl Reels)
Miami - converter LALs + metro geoPAUSED$301814934682813003Advantage+ (incl Reels)
Orlando - converter LALs + metro geoPAUSED$1281814934682813003Advantage+ (incl Reels)
Tampa - converter LALs + metro geoPAUSED$1191814934682813003Advantage+ (incl Reels)
[HOMA-LAB] Onboarding Prospecting TX v1 ACTIVE ad-set budgets
🎯 Purpose — Prospecting optimized toward registration/engagement.
⛽ Fuel — Converter 1% lookalikes + metro geo.
Ad setStatus$/dOptimizesPlacements
Onboarding LAL Converters - TXACTIVE$40onboarding_completedFeed-only
[HOMA-LAB] Onboarding Prospecting FL v1 ACTIVE ad-set budgets
🎯 Purpose — Prospecting optimized toward registration/engagement.
⛽ Fuel — Converter 1% lookalikes + metro geo.
Ad setStatus$/dOptimizesPlacements
Onboarding LAL Converters - FLACTIVE$40onboarding_completedFeed-only
[HOMA-LAB] Meta Lookalike Prospecting - Stacked v1 ACTIVE ad-set budgets
🎯 Purpose — Broad prospecting to a stack of converter lookalikes.
⛽ Fuel — Stacked 1% lookalikes of Registered + Qualified + Approved seeds (worker-refreshed).
Ad setStatus$/dOptimizesPlacements
LAL Stacked - TX (TX homes)ACTIVE$32lab_engaged_leadFeed-only
LAL Stacked - FL (FL homes)ACTIVE$48lab_engaged_leadFeed-only
[HOMA-LAB] Meta LAL Deep Browsers - Power Shoppers v1 ACTIVE ad-set budgets
🎯 Purpose — Prospect people who look like Homa's deepest browsers (10+ homes viewed).
⛽ Fuel — 1% lookalike seeded on the deep-browser cohort (from PostHog).
Ad setStatus$/dOptimizesPlacements
LAL Deep Browsers - TX (TX homes)ACTIVE$32lab_engaged_leadFeed-only
LAL Deep Browsers - FL (FL homes)ACTIVE$48lab_engaged_leadFeed-only
[HOMA-LAB] Meta Lookalike Prospecting TX v1 (LAL+1P) ACTIVE ad-set budgets
🎯 Purpose — Broad prospecting to a stack of converter lookalikes.
⛽ Fuel — Stacked 1% lookalikes of Registered + Qualified + Approved seeds (worker-refreshed).
Ad setStatus$/dOptimizesPlacements
TX First-party DPA (engaged/high-intent)ACTIVE$32LEAD_GENERATIONAdvantage+ (incl Reels)
TX Lookalikes DPA (Appr/Qual/Reg 1%)ACTIVE$48LEAD_GENERATIONAdvantage+ (incl Reels)
[HOMA-LAB] Meta DPA Prospecting - Full Catalog v2 - CC Onboarding Completed Bid ACTIVE $31/d
🎯 Purpose — Cold DPA prospecting across the full listing catalog, run as several audience angles (FL/TX mortgage-intent, cold cash-back, conquest, metro-graded, broad).
⛽ Fuel — Full home catalog + Speedeon FL/TX mortgage-intent lists + cold/broad + demand-graded metro product sets.
Ad setStatus$/dOptimizesPlacements
Tampa+Orlando GR - engaged_leadPAUSEDCBOlab_engaged_leadAdvantage+ (incl Reels)
Money Flow - engaged_leadACTIVECBOlab_engaged_leadFeed-only
FL Intent - engaged_leadACTIVECBOlab_engaged_leadFeed-only
TX Intent - engaged_leadACTIVECBOlab_engaged_leadFeed-only
Prospecting - TX Intent (Speedeon, property_viewed opt) - v2 - CC Onboarding Completed BidPAUSEDCBOonboarding_completedFeed-only
DD - Cold Speedeon intent - v2 - CC Onboarding Completed BidPAUSEDCBOonboarding_completedFeed-only
Prospecting - FL Intent (Speedeon, property_viewed opt) v2 - CC Onboarding Completed BidPAUSEDCBOonboarding_completedFeed-only
Conquest - Found it on Zillow (broad + purchase flag) - v2 - CC Onboarding Completed BidACTIVECBOonboarding_completedFeed-only
Money Flow - cold intent + abandoners - v2 - CC Onboarding Completed BidPAUSEDCBOonboarding_completedFeed-only
Prospecting - Tampa+Orlando GRADED (property_viewed opt) - v2 - CC Onboarding Completed BidPAUSEDCBOonboarding_completedAdvantage+ (incl Reels)
[HOMA-LAB] Meta STATIC CAPI Prospecting - engaged_lead v1 ACTIVE ad-set budgets
🎯 Purpose — Static-creative prospecting (rebate message) to mortgage-intent, optimizing engaged_lead via CAPI.
⛽ Fuel — Speedeon FL/TX mortgage-intent Customer-List audiences.
Ad setStatus$/dOptimizesPlacements
Static CAPI Prospecting - FL+TX Speedeon (engaged_lead opt)ACTIVE$261814934682813003Advantage+ (incl Reels)
[HOMA-LAB] Meta DPA Prospecting - Full Catalog v1 ACTIVE ad-set budgets
🎯 Purpose — Cold DPA prospecting across the full listing catalog, run as several audience angles (FL/TX mortgage-intent, cold cash-back, conquest, metro-graded, broad).
⛽ Fuel — Full home catalog + Speedeon FL/TX mortgage-intent lists + cold/broad + demand-graded metro product sets.
Ad setStatus$/dOptimizesPlacements
Conquest - engaged_leadACTIVE$7lab_engaged_leadFeed-only
Money Flow - cold intent + abandonersACTIVE$20property_viewedFeed-only
Conquest - Found it on Zillow (broad + purchase flag)PAUSED$8property_viewedFeed-only
DD - Cold Speedeon intentACTIVE$8property_viewedFeed-only
Prospecting - FL Intent (Speedeon, property_viewed opt)ACTIVE$41property_viewedFeed-only
Prospecting - TX Intent (Speedeon, property_viewed opt)ACTIVE$74property_viewedFeed-only
Prospecting - Tampa+Orlando GRADED (property_viewed opt)ACTIVE$62property_viewedAdvantage+ (incl Reels)
Prospecting - Tampa+Orlando GRADED (ViewContent opt)PAUSED$42OFFSITE_CONVERSIONSAdvantage+ (incl Reels)
Prospecting - Tampa+Orlando GRADED (top demand)PAUSED$42LINK_CLICKSAdvantage+ (incl Reels)
Prospecting - Tampa+Orlando (page views)PAUSED$16LINK_CLICKSAdvantage+ (incl Reels)
Prospecting - FL+TX broad (full catalog)PAUSED$19OFFSITE_CONVERSIONSAdvantage+ (incl Reels)
[HOMA-LAB] Meta Lookalike Prospecting v1 (LAL+1P) PAUSED ad-set budgets
🎯 Purpose — Broad prospecting to a stack of converter lookalikes.
⛽ Fuel — Stacked 1% lookalikes of Registered + Qualified + Approved seeds (worker-refreshed).
Ad setStatus$/dOptimizesPlacements
(no active ad sets)
LAB Ext - Chrome Install v1 PAUSED ad-set budgets
🎯 Purpose — Drive Homa Chrome-extension installs.
⛽ Fuel — Broad / prospecting audiences.
Ad setStatus$/dOptimizesPlacements
Ext Install - Broad FL+TXPAUSED$4027977381631856011Advantage+ (incl Reels)
LAB Soft-Capture - /cash-back v1 PAUSED $24/d
🎯 Purpose — Soft email-capture landing on the /cash-back page.
⛽ Fuel — Prospecting audiences.
Ad setStatus$/dOptimizesPlacements
Soft-Capture - FL+TX broadCAMPAIGN_PAUSEDCBO4802135786687519Advantage+ (incl Reels)
[HOMA-LAB] Meta Quiz Consent v1 PAUSED ad-set budgets
🎯 Purpose — Top-of-funnel quiz to capture consented (textable) leads.
⛽ Fuel — Broad / interest audiences.
Ad setStatus$/dOptimizesPlacements
Quiz - broad FL+TX + Speedeon seedPAUSED$20LINK_CLICKSFeed-only
[HOMA-LAB] Meta Click-to-Message v1 PAUSED ad-set budgets
🎯 Purpose — Drive Messenger conversations with prospects.
⛽ Fuel — Broad audiences.
Ad setStatus$/dOptimizesPlacements
CTM - FL+TX broad (concierge DM)CAMPAIGN_PAUSED$16CONVERSATIONSFeed-only
[HOMA-LAB] Meta Lead Ads - Instant Form v1 PAUSED ad-set budgets
🎯 Purpose — Instant-form lead capture on Meta (email only — no SMS consent).
⛽ Fuel — Prospecting audiences + dynamic instant form.
Ad setStatus$/dOptimizesPlacements
Lead Ads - Buyer Quiz v1CAMPAIGN_PAUSED$10LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Call Request v1CAMPAIGN_PAUSED$8LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Call Request v1CAMPAIGN_PAUSED$20LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Dallas v1CAMPAIGN_PAUSED$32LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Austin v1CAMPAIGN_PAUSED$32LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Houston v1CAMPAIGN_PAUSED$32LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Miami v1CAMPAIGN_PAUSED$8LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Orlando v1CAMPAIGN_PAUSED$8LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Tampa v1CAMPAIGN_PAUSED$8LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Tour Request v1 (viewed homes)CAMPAIGN_PAUSED$80LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - Recapture Anonymous Browsers (viewed 180d, excl registered)CAMPAIGN_PAUSED$10LEAD_GENERATIONFeed-only
Lead Ads - Rebate Ladder v1 (FL+TX)CAMPAIGN_PAUSED$8LEAD_GENERATIONFeed-only
Lead Ads - Jacksonville v1CAMPAIGN_PAUSED$21LEAD_GENERATIONFeed-only
Lead Ads - Brand Image Feed v1 (FL+TX)PAUSED$5LEAD_GENERATIONFeed-only
Lead Ads - Stories Brand v1 (FL+TX)PAUSED$5LEAD_GENERATIONFeed-only
Lead Ads - Speedeon Intent (FL+TX)CAMPAIGN_PAUSED$11LEAD_GENERATIONFeed-only
Lead Ads DYNAMIC GRADED - FL+TX top demandCAMPAIGN_PAUSED$7LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads DYNAMIC - FL+TX (catalog+form)CAMPAIGN_PAUSED$24LEAD_GENERATIONAdvantage+ (incl Reels)
Lead Ads - FL+TX buyersCAMPAIGN_PAUSED$60LEAD_GENERATIONAdvantage+ (incl Reels)

Retargeting — re-engage known visitors

[HOMA-LAB] Meta Graded Geo-Matched Retargeting v1 ACTIVE ad-set budgets
🎯 Purpose — Retarget prior visitors with the most in-demand homes in their metro.
⛽ Fuel — Demand-graded product sets (ranked by saves + views) + registered suppression.
Ad setStatus$/dOptimizesPlacements
Graded Retargeting - TX (top homes)ACTIVE$67LINK_CLICKSAdvantage+ (incl Reels)
Graded Retargeting - FL (top homes)ACTIVE$96LINK_CLICKSAdvantage+ (incl Reels)
[HOMA-LAB] Meta DPA Viewed-Homes Retargeting v1 ACTIVE ad-set budgets
🎯 Purpose — Dynamic retargeting of prior viewers with the homes they browsed.
⛽ Fuel — Viewed-homes 180d signal + catalog.
Ad setStatus$/dOptimizesPlacements
Viewed Homes - their browsed homes (dynamic)ACTIVE$128LINK_CLICKSAdvantage+ (incl Reels)
[HOMA-LAB] Meta DPA Retargeting - Viewed Homes v2 - CC Onboarding Completed Bid ACTIVE $38/d
🎯 Purpose — Show returning visitors the exact homes they viewed (dynamic), nudging them back to the listing.
⛽ Fuel — Viewed-homes signal audience (pixel ViewContent + email 180d) + full home catalog.
Ad setStatus$/dOptimizesPlacements
DD - Warm price-drop viewers - v2 - CC Onboarding Completed BidACTIVECBOonboarding_completedFeed-only
LAB Retargeting - Conversions v1 ACTIVE $4/d
🎯 Purpose — Conversion-optimized retargeting of warm users.
⛽ Fuel — Warm site-visitor / converter audiences.
Ad setStatus$/dOptimizesPlacements
Retargeting - DPA viewed homes (conv)ACTIVECBOOFFSITE_CONVERSIONSAdvantage+ (incl Reels)
[HOMA-LAB] Meta Abandonment Missile v1 ACTIVE ad-set budgets
🎯 Purpose — Re-engage high-intent people who started a tour/offer or registered but never qualified.
⛽ Fuel — High-intent-abandoners signal audience (180d, excludes qualified).
Ad setStatus$/dOptimizesPlacements
High-Intent AbandonersACTIVE$32LINK_CLICKSAdvantage+ (incl Reels)
[HOMA-LAB] Meta New-Match / Active Savers v1 ACTIVE ad-set budgets
🎯 Purpose — Alert active savers to new inventory.
⛽ Fuel — Active-savers signal (saved searches / favorites / recent activity, 30d).
Ad setStatus$/dOptimizesPlacements
Active Savers - new inventoryACTIVE$96LINK_CLICKSFeed-only
[HOMA-LAB] Meta High-Intent Signals v1 ACTIVE ad-set budgets
🎯 Purpose — Retarget a pool of the highest-intent behavioral signals.
⛽ Fuel — Pooled behavioral signal audiences (deep browse / high price / tour-abandon).
Ad setStatus$/dOptimizesPlacements
High-Intent Signals (pooled x5)ACTIVE$7LINK_CLICKSFeed-only
[HOMA-LAB] Meta DPA Retargeting - Viewed Homes v1 ACTIVE ad-set budgets
🎯 Purpose — Show returning visitors the exact homes they viewed (dynamic), nudging them back to the listing.
⛽ Fuel — Viewed-homes signal audience (pixel ViewContent + email 180d) + full home catalog.
Ad setStatus$/dOptimizesPlacements
Retargeting - Band 500K+ wallet copyPAUSED$12LINK_CLICKSFeed-only
Retargeting - Band 300-500K wallet copyPAUSED$12LINK_CLICKSFeed-only
Retargeting - Band Sub-300K wallet copyPAUSED$12LINK_CLICKSFeed-only
DD - Warm price-drop viewersACTIVE$45LINK_CLICKSFeed-only
DPA Retargeting - Property Viewers 180d (excl registered)ACTIVE$26LINK_CLICKSFeed-only
[HOMA-LAB] Meta Price-Drop Missile v1 PAUSED ad-set budgets
🎯 Purpose — Re-engage people who viewed a home whose price then DROPPED — shows that exact home with a 'price cut, up to 2% back' message.
⛽ Fuel — Price-drop-viewers signal (warehouse join: viewed homes now below original list price) + viewed-homes 180d.
Ad setStatus$/dOptimizesPlacements
Price-Drop ViewersCAMPAIGN_PAUSED$24LINK_CLICKSAdvantage+ (incl Reels)
[HOMA-LAB] - Meta Retargeting v1 PAUSED ad-set budgets
🎯 Purpose — General retargeting of prior site visitors.
⛽ Fuel — Site-visitor / viewed-homes audiences.
Ad setStatus$/dOptimizesPlacements
warm-all | FLCAMPAIGN_PAUSED$40LANDING_PAGE_VIEWSAdvantage+ (incl Reels)

4. Google LAB campaigns — purpose, fuel & setup

Google is the down-funnel engine — it drives the majority of qualified/approved (see §10). Metro Search captures in-market demand; RLSA Warm closes returning users; Brand harvests demand.

[HOMA-LAB] - Orlando Search v1 $112/d · SEARCH · MAXIMIZE_CONVERSION_VALUE
🎯 Purpose — Capture in-market search demand in Orlando; lands on the Orlando search page.
⛽ Fuel — Search intent + Customer Match (observation) + value bidding.
[HOMA-LAB] - Tampa Search v1 $84/d · SEARCH · MAXIMIZE_CONVERSION_VALUE
🎯 Purpose — Capture in-market home-search demand in Tampa; lands on the Tampa search page.
⛽ Fuel — Search keyword intent + Customer Match audiences (observation) + value-based bidding.
[HOMA-LAB] - RLSA Warm v1 $82/d · SEARCH · MAXIMIZE_CONVERSIONS
🎯 Purpose — Retarget prior Homa users when they search again — the best-CPA layer; serves a 'Welcome Back' ad.
⛽ Fuel — Customer Match / remarketing lists of prior Homa users (warm/hot/converter).
[HOMA-LAB] - Houston Search v2 $64/d · SEARCH · TARGET_SPEND
🎯 Purpose — Capture in-market search demand in Houston (TX; Max-Clicks, historically spend-gated).
⛽ Fuel — Search intent + Customer Match observation.
[HOMA-LAB] - Dallas Search v2 $56/d · SEARCH · TARGET_SPEND
🎯 Purpose — Capture in-market search demand in Dallas (TX).
⛽ Fuel — Search intent + Customer Match observation.
[HOMA-WILDCAT] - Exploration v1 $48/d · SEARCH · MAXIMIZE_CONVERSIONS
🎯 Purpose — Exploratory / conquest search beyond the core metros.
⛽ Fuel — Broad + competitor keywords.
[HOMA-LAB] - San Antonio Search v2 $48/d · SEARCH · TARGET_SPEND
🎯 Purpose — Capture in-market search demand in San Antonio (TX).
⛽ Fuel — Search intent + Customer Match observation.
[HOMA-LAB] - Austin Search v2 $44/d · SEARCH · TARGET_SPEND
🎯 Purpose — Capture in-market search demand in Austin (TX).
⛽ Fuel — Search intent + Customer Match observation.
[HOMA-LAB] - Jacksonville Search v1 $40/d · SEARCH · MAXIMIZE_CONVERSION_VALUE
🎯 Purpose — Capture in-market search demand in Jacksonville.
⛽ Fuel — Search intent + Customer Match (observation) + value bidding.
[HOMA-EXT] - Extension Launch v1 $40/d · SEARCH · TARGET_SPEND
🎯 Purpose — Promote the Homa Chrome extension.
⛽ Fuel — Search / broad.
[HOMA-LAB] Display Dynamic Remarketing v1 $32/d · DISPLAY · MAXIMIZE_CONVERSIONS
🎯 Purpose — Display retargeting of site visitors (where Customer Match can't serve).
⛽ Fuel — Rule-based site-visitor lists (e.g. 540-day) — NOT Customer Match; CM doesn't serve display.
[HOMA-LAB] - TX Secondary v2 $28/d · SEARCH · TARGET_SPEND
🎯 Purpose — Catch-all TX search demand outside the primary metros.
⛽ Fuel — Search intent + Customer Match observation.
[HOMA-LAB] - Miami Search v1 $24/d · SEARCH · MAXIMIZE_CONVERSIONS
🎯 Purpose — Capture in-market search demand in Miami.
⛽ Fuel — Search intent + Customer Match (observation) + value bidding.
[HOMA-WILDCAT] - Conquest v1 $20/d · SEARCH · MAXIMIZE_CONVERSIONS
🎯 Purpose — Exploratory / conquest search beyond the core metros.
⛽ Fuel — Broad + competitor keywords.
[HOMA-LAB] - Hero Video v1 $10/d · DEMAND_GEN · MAXIMIZE_CONVERSIONS
🎯 Purpose — YouTube brand / awareness video.
⛽ Fuel — Video audiences.

Google LAB = the metro Search campaigns (Tampa/Orlando/Jax/Miami + TX metros), RLSA Warm (best-CPA retargeting layer), Brand, Wildcat exploration, Display remarketing, Hero Video, Extension. Google is the down-funnel engine — it drives the majority of qualified/approved (see §10).

5. Audiences (top 30 by size)

All refreshed nightly by workers (§6) — do not treat as static uploads.

Audience~SizeSource
LAB LAL 1% US - Deep Browsers 10 (power shoppers)2,300,000NOT_APPLICABLE
LAB LAL 1% US - Registered (auto)2,300,000NOT_APPLICABLE
LAB LAL 1% US - Qualified (auto)2,300,000NOT_APPLICABLE
LAB LAL 1% US - Approved (auto)2,300,000NOT_APPLICABLE
LAB LAL 1% US - High-Intent Abandoners2,100,000NOT_APPLICABLE
FB Page Engagers Last 365-Days34,400NOT_APPLICABLE
IG Page Engagers Last 365-Days27,900NOT_APPLICABLE
HOMA-LAB | Speedeon Mortgage-Intent (all)24,400PARTNER_PROVIDED_ONLY
FL-Open-Houses-June-27-28-Part-2_-2026080523,100PARTNER_PROVIDED_ONLY
FL-Open-Houses-June-27-28-Part-2_-2026080522,500PARTNER_PROVIDED_ONLY
FL-Open-Houses-June-27-28-Part-2_-2026080521,400PARTNER_PROVIDED_ONLY
Retention Audience18,200USER_PROVIDED_ONLY
FL_Open_Houses_July_4-5_2026_Lat_Long_-2026080516,000PARTNER_PROVIDED_ONLY
FL_Open_Houses_July_4-5_2026_Lat_Long_-2026080515,900PARTNER_PROVIDED_ONLY
LAB - Identified (retention emails)15,500USER_PROVIDED_ONLY
Homa - retention_pixel15,500USER_PROVIDED_ONLY
FL_Open_Houses_July_4-5_2026_Lat_Long_-2026080515,300PARTNER_PROVIDED_ONLY
HOMA-LAB | Speedeon FL Mortgage-Intent (7/17 file)11,500PARTNER_PROVIDED_ONLY
HOMA-LAB | Speedeon TX Mortgage-Intent (7/17 file)11,200PARTNER_PROVIDED_ONLY
LAB Seed - Registered (email, auto)5,500USER_PROVIDED_ONLY
HOMA-LAB | High-Intent Abandoners (deep, not qualified)4,700USER_PROVIDED_ONLY
LAB - Registered (suppression)4,500USER_PROVIDED_ONLY
LAB - Behavioral Broad (interactors 180d)3,700USER_PROVIDED_ONLY
HOMA-LAB | FL Sellers - Active (skip-traced)2,500PARTNER_PROVIDED_ONLY
HOMA-LAB | Speedeon Purchase-Intent (hot)1,900PARTNER_PROVIDED_ONLY
HOMA-LAB | Speedeon Purchase-Flagged (FL+TX)1,800PARTNER_PROVIDED_ONLY
FL-Open-House-Residential-Address-June27-28_-202608051,600PARTNER_PROVIDED_ONLY
HOMA-LAB | Viewed Homes 180d (email, warehouse)1,500USER_PROVIDED_ONLY
LAB - Behavioral Engaged (2+/day)1,400USER_PROVIDED_ONLY
HOMA-LAB | Phone Contacts (called/texted us)1,400USER_PROVIDED_ONLY

Google Customer Match lists

ListIDSearch size
HOMA-LAB | Speedeon Mortgage Intent (FL+TX)943328412113,000
LAB_Registered94215485254,200
retention_pixel94160972933,400
LAB_Identified94242175533,000
LAB_HighIntentBrowsers94203327472,300
LAB_ActiveSellers94221535292,100
HOMA-LAB | Speedeon Purchase-Intent (hot)94332841241,000
LAB_PropertyRecent9422082465800
HOMA-LAB | Email Engagers (cold outreach)9433335847700
LAB - Price-Drop Viewers (retargeting)9443073155700
HOMA-LAB | Phone Contacts (called/texted us)9433331179600
active_sellers_moveup9416095925600
LAB_Pending9421296031500
fsbo_owners9415930768500
LAB - Qualified Leads (retargeting/seed)9435049850400
LAB - Qualified Not Closed (retargeting)9443622931200
LAB_Approved9420715417100
HOMA | Suppression - Closed + In Escrow94340019720

6. ⚙️ The automation fleet — MOST IMPORTANT

The audiences, Customer-Match lists, and conversion signals are refreshed by automation reading PostHog. It is TWO kinds of infra that transfer very differently — the single biggest handoff risk.

Source is bundled for you (no secrets): all worker + script source, a README, a re-host guide, and an auto-extracted secrets checklist — handed over as a zip / private repo. Deploy the Workers in your Cloudflare account; re-host the cron scripts on your own scheduler.

A. Cloudflare Workers — deploy in your Cloudflare account

WorkerScheduleWhat it does
signal-audiencesevery 6hRefreshes ~10 Meta behavioral custom audiences (deep browsers, price-drop viewers, qualified-not-closed, active savers, viewed-homes 180d, engaged leads, abandoners, price-band viewers) from PostHog HogQL → SHA-256 → Meta. Also refreshes DPA "graded" product sets.
homa-lab-meta-audience-syncdaily 09:00 UTCFeeds the 3 lookalike SEED audiences (Registered / Qualified / Approved).
homa-lab-customer-match-syncdaily 00:30 UTCPostHog → Google Data Manager → Customer Match lists + the offline value-ladder conversion feed.
homa-metro-goon-requestRedirect worker for metro-carousel DPA links (short slug → 302 to metro search + UTM). Source was rescued from ephemeral storage during handoff prep and is now in the bundle.
lab-live-dashboard · sitewide-dashboard · lab-daily-reporthourly / dailyReporting.

B. Cron jobs on the ops machine — ⚠️ MUST be re-hosted

These do NOT run on Cloudflare. They run as launchd jobs on the Homa ops Mac and stop the moment that machine is off. You cannot share these via Cloudflare — re-host on your own server/scheduler (or port to Workers). See REHOST.md in the bundle.

ScriptScheduleWhat it does
capi_sync.py~every 2h (launchd)Meta CAPI: replays lab_ funnel conversions server-side (Mono-safe).
catalog_sync.pylaunchdDPA catalog / product-set refresh.

Decommissioned / do not use: audience-sync (never deployed, dead code).

7. UTM conventions & attribution truth

How to tell LAB from Mono (critical)

LAB (this handoff)Mono (already yours)
Meta campaignhoma-lab-meta-*MM_*
Meta mediumlab_prospecting_* / lab_remarketing_*MM_*
Google campaign / utmhoma-lab-* / homa-wildcat-* (medium g_lab_*)G_* (case-sensitive uppercase G)

"All Google = LAB" is WRONG. Mono runs Google too (the G_ "High-Intent Buyers"/"Asterisk" campaigns). Case-sensitive G_ vs lowercase g_lab is the discriminator.

Attribution reality — do not trust event-UTM

8. Optimization events & value ladder

Primary optimization event = engaged_lead (2+ distinct property views in a day) — frequent enough to exit learning, unlike the rarer onboarding_completed. Google Smart Bidding is fed the offline value ladder (via Data Manager):

EventMeta CAPI valueGoogle offline value
lead:approved$700$200
qualified_lead$400$40
disclosures / package$300$300
tour request / onboarding$150$150
engaged_lead$50$15
property_view$5$5

Recent change (8/6): 5 chronically learning-limited ad sets that optimized the rare onboarding_completed were rebuilt to optimize engaged_lead — currently in learning; let them stabilize before judging.

9. Hard-won gotchas

10. Current performance baseline

~2,035
leads / week
CPL $2-3/day (was $16)
~44-54
newly-qualified / wk
+38% WoW (Mon-Sat)
~20-23
newly-approved / wk
~$288K
median qualified home price
~$5.8K rebate @ 2%

Watch the right metric. CPL has crashed to $2-3 but that's volume dilution — leads grew +240% while qualified grew ~17%, so the lead→qualified rate fell from 7.7% to 2.6%. Optimize toward cost-per-qualified / cost-per-approved, not CPL. Down-funnel is carried by Google + direct; Meta LAB is cheap reach + retargeting-pool fuel.

11. Open items & handoff checklist

In-flight (mid-change)

Monochrome onboarding checklist

  1. Get partner access: Meta act_9501970176547289 + Google MCC 2225490048.
  2. Get PostHog project 141181 access (measurement) + review the attribution truth in §7.
  3. Decide on the automation fleet (§6): keep the PostHog→audience/CM/CAPI workers running (recommended — receive the repos + credentials) or plan a replacement before decommission, or audiences go stale.
  4. Adopt the UTM conventions (§7) so LAB stays distinguishable from your MM_/G_ work in reporting.
  5. Re-baseline against §10 and optimize toward cost-per-qualified/approved.

12. How we run it — operating principles

13. Tools & stack to maintain

LayerToolWhy it matters
Truth / analyticsPostHog (project 141181, HogQL)Every lead/reg/qual/approved + all audience queries + attribution. Locked event taxonomy. This is the brain.
AutomationCloudflare Workers + wranglerThe nightly audience / Customer-Match / CAPI / dashboard fleet (§6). Needs Cloudflare account access + deploy rights.
MetaMarketing API v21 (system-user token), Pixel 1434262110992642, CAPI, DPA catalogs, GTMCampaigns, custom audiences, catalog/DPA, server-side conversions.
GoogleAds API v21 (OAuth + dev token, MCC), Data Manager APICampaigns + Customer Match ingest + offline value-ladder conversion feed.
IdentitySHA-256 hashing (email/phone/address)All audience + Customer Match uploads are hashed client-side; never send raw PII.
Reportinglab-live-dashboard (hourly), sitewide-dashboard, lab-daily-reportSelf-updating Workers reading PostHog + platform insights.

Skills the operator needs: HogQL, Meta & Google Ads APIs, Cloudflare Workers/wrangler, the value-ladder + person-level attribution model, and the DPA catalog + redirect-worker pattern. Credentials (Meta token, Google/Data-Manager OAuth, PostHog keys, Cloudflare) are handed over out of band — never in this page.

14. Roadmap — how to improve the system

Ranked, highest-leverage first:

  1. Fix measurement. Move the dashboards off event-UTM (8% coverage) to person-level journey attribution, and put CPQ / CPA next to CPL so the vanity metric stops being the headline.
  2. Populate suppression. Fill the empty Closed + In-Escrow and Qualified exclusion lists (source from Attio) — you're currently paying to re-serve people who already transacted.
  3. Unblock OnSpot via Google Customer Match. Get the raw open-house address file from OnSpot and upload it as a first-party address CM list (targetable + lookalike-able) — sidesteps the Meta partner-permission block entirely.
  4. Close the reg→qualified gap. Registered users browse deep (median 5 homes) but stall before the tour request; Meta-sourced regs qualify at ~13% vs 26-33% for direct/Google. Add a mid-funnel nudge and tighten Meta registration quality.
  5. Scale the closers. Google metro Search + RLSA Warm drive the down-funnel; TX metros have been spend-gated/dark. Push budget toward the best-CAC surfaces (Google), not the cheapest-CPL ones (Meta prospecting).
  6. Mature value bidding. As approved volume grows, graduate optimization toward the approved event / higher-value targets; keep feeding accurate ladder values.
  7. Creative velocity. Systematic angle testing; DPA dynamic for retargeting, static/carousel for cold audiences; scheduled catalog + creative refresh.
  8. Harden automation. Failure alerting on every worker (a stale audience feed reads "green" while degrading), and automate the catalog/product-set refresh cadence.

15. Managing the workers — operator guide

Once you have Cloudflare access (Manage Account → Members) and the source bundle, here's how to run, edit, and monitor the fleet.

Where the files are

Editing & deploying

Secrets & config

Schedules & manual runs

Monitoring & health

Troubleshooting

Hard rules