Operational briefing · compiled 2026-07-29 · read-only

The CAQ + BAR paid-search operation

Complete onboarding for a new team member: what this operation is, everything we ran from April to July 2026, what worked and what did not, who converts, how the funnel and tracking actually work, and the mandate we are executing against. Every number traces to the 2026-07-29 data pulls (PFM dashboard + Google Ads API v24) or an adjudicated operator memory, and the document was adversarially fact-checked against the raw pulls before you got it.

Lifetime spend$202,455
Revenue$67,892
Blended ROAS0.335×
Leads sold3,931
Campaigns built433 51 live
Winners at 0.95×0 of 109 funded

This operation is currently unprofitable on paper. This document says so plainly, shows exactly where the losses live, and lays out the designed path out. Money figures are PFM-side (the source of truth) unless labeled Google-side.

1

Read this first

What this is. A one-operator Google Ads lead-generation operation selling auto-insurance leads. We run paid traffic (Search, Display, Demand Gen) to our own landing pages; a form-fill becomes a lead; the lead is sold to a single buyer, PowerFox Media (PFM). Everything is driven from the ai-ppc repo via Python CLI tools and Claude Code, under a strict propose-then-approve safety model.

The two brands. Separate legal entities, separate Google Ads accounts, both under the Rockman MCC (manager account) 7498902464:

BrandFull nameCIDCanonical serving host
CAQCheapestAutoQuotes2290970423find.cheapestautoquotes.com
BARBudgetAutoRates3646520839quote.budgetautorates.com

All operator-built campaigns are named vlad.*. CAQ is the main book ($177k of the $202k lifetime spend); BAR is the older account (opened 2025) relaunched in June 2026. (pfm-history-summary.md; timeline.md)

The buyer relationship. PFM buys every lead, provides and approves the landing pages, approves all creative before it may deploy, and its dashboard is the source of truth for cost and revenue. A key 07-28 finding: the network of “competitor” lead-gen brands we spent weeks reverse-engineering (savemaxauto, smartpolicyrates, and others) is PFM’s own Cloudflare account; CAQ and BAR sit inside it. We are one house brand in PFM’s network, and the top network accounts monetize each click through 2-3 lanes (form lead + pay-per-call + post-submit click-listing at $6.30-9.60/click) where we monetize through exactly one. (funnel-architecture.md §5)

One more thing to know about the relationship: PFM’s MCC service account (pfm-ads@) holds write access in the manager account and runs an automated kill-loop on sibling accounts (50 status mutations in 30 days, same-second batches across accounts). The 30-day change-event cross-check shows it has never touched CAQ or BAR (only the operator writes here), but its presence is a standing daily check. (memory: mcc-teardown-dg-winner-2026-07-10, 07-28 update)

EPL economics in one paragraph. EPL = earnings per lead, what PFM pays us. The buyer’s gross tier sheet (“T14 EPL’s by State”, repo root) shows a $41.12 average gross ceiling with FL at $75.69 on top, but the value that actually reaches Google’s bidder is net of an approximately 0.5× buyer reprice: the T14 sheet’s NET column averages about $13.90, and the realized lifetime EPL is $17.27 blended ($17.84 CAQ / $12.22 BAR), with channel EPLs running $11-27. Use the realized figures for live math. Against that, Search clicks cost $18-46. That single arithmetic fact, cost-per-click versus net value-per-lead, is the story of this whole operation. (pfm-history.json; funnel-architecture.md §4)

The north star (conflicts lose to these)

  1. Build per T14 EPL-by-state: spend where the state pays.
  2. Money scales only at ≥ 0.95× ROAS, proven, not projected.
  3. Only PFM-approved creative deploys.
  4. All pre-reset (45+-era) data is tainted; do not reason from it.

The mandate (stated in full in section 11): make Search the primary channel at ~80% of spend, at least $20,000/day at ≥ 0.95× ROAS, then scale to $300,000/day over the next six months. Today we spend about $3,841/day blended at roughly 0.31-0.34×, with Search at 40.5% of live spend. The target is aspirational by design; the operating rule that makes it honest is that money only scales where ≥ 0.95× is proven.

The one-sentence status: of 109 campaigns with ≥ $500 lifetime PFM spend, zero have ever cleared the 0.95× winner bar; 15 sit at 0.50-0.95×, 94 below 0.50×, and the adjudicated explanation is that 85-94% of the gap is value-structural (the lead product and monetization lanes), not targeting, bids, quality score, or creative. (pfm-history-summary.md; what-worked.md)

2

The business model

The funnel, end to end

  1. Click. A Google ad (Search RSA, Display, or Demand Gen) carries a bare final URL: https://<brand-host>/ac/<shortcode>. No query string on the URL itself; all tracking parameters ride the final_url_suffix (section 9).
  2. Routing. The /ac/ path is PFM’s attribution-service router. It logs the click (sub8 = {gclid} is the attribution key), and the shortcode (plus an optional sub11 lane parameter) selects the landing page.
  3. Landing page. Every LP is a shell over one shared vehicle-first form (forms.offer-engine.com wizard): ZIP, then Vehicle Year, Make, Model, all mandatory. The LP is a conversion-rate lever, never a value lever. LPs are PFM-provided and PFM-approved.
  4. Lead sold. The form-fill is shipped to PFM; PFM buys the lead and reprices it downstream (~0.5× of gross tier value).
  5. Revenue attributed back. The attribution service uploads the conversion to Google Ads as an Enhanced Conversion click upload against the single per-brand conversion action, with the real net lead value attached, near-realtime. Verified: value co-arrives with the count (+1 conversion arrived with +$49.68 within 15 minutes); 99.3% of value lands in the under-one-day lag bucket; there is no restatement path. (funnel-architecture.md §4)

What this implies for how you read numbers

  • PFM dashboard = truth for money. Google-side conversion value is the near-realtime mirror and runs slightly low on every channel (value capture 0.93-0.97). PFM-vs-Google deltas of +23-36% on a handful of campaigns are the pipeline working, not a bug.
  • The ~0.5× reprice is already inside the uploaded value. Benchmark on realized net EPL ($17.27 lifetime blended; the T14 sheet’s net mean is ~$13.90), never the T14 gross ($41.12). Book ROAS of 0.3-0.5 is real, not suppressed by measurement. The measurement-leak hypothesis was tested and falsified 07-21 at <0.1%.
  • One conversion action per brand. Auto - Conversions, type UPLOAD_CLICKS: CAQ 7547413583, BAR 7099036246. Everything else visible in the accounts (Ringba calls, YouTube actions) is legacy; never target it. Form-fill only; there is no call path in this business.
  • ROAS reads fast; the real gate is sample sufficiency. Because value is final at submission, a same-day ROAS read is decision-grade on value. What it is not is statistically sufficient: the winner rule is 1-day ROAS ≥ 0.95× over a $30-50/day cost floor, and the 07-28 methodology work adds that nothing finer than a ~1.4× effect is learnable on this book at any budget (container drift outpaces stability), that partial days are never read, and that zero-conversion kills use click-based floors, not dollar lines. The scarce currency is stable weeks, not dollars.
  • Never wait for value to “mature.” A zero-count on real clicks is real. Intraday reads are lower-bound only because the day is not over.
3

The numbers to date

All money below is PFM-side (source of truth) unless labeled Google-side. Lifetime window: 2026-04-01 through the 07-29 pull.

Lifetime, per brand

BrandSpendRevenueROASLeadsCPLClicksCPCCTRCVR
CAQ$177,077.39$63,065.890.3563,536$50.0869,750$2.541.70%5.07%
BAR$25,378.00$4,825.780.190395$64.2514,138$1.792.13%2.79%
Both$202,455.39$67,891.670.3353,931$51.5083,888$2.411.76%4.69%

CPL = cost per lead; CVR = leads/clicks. Two PFM rows are unattributed spend credits with no campaign: CAQ −$3,135.71, BAR −$375.80, included in totals.

Monthly trend

Monthly spend vs. revenue attributed, by brand
The gray track is spend; the colored fill is revenue that came back; the label is the month’s ROAS. PFM-side, 2026-07 is month-to-date.
spendrevenue (CAQ)revenue (BAR)
Table view
BrandMonthSpendRevenueROASLeadsCPL
CAQ2026-04$218.39$134.670.6176$36.40
CAQ2026-05$11,105.67$8,868.560.799477$23.28
CAQ2026-06$59,285.54$18,344.970.3091,083$54.74
CAQ2026-07 MTD$106,495.58$35,717.690.3351,970$54.06
BAR2026-06$12,925.89$1,747.800.135133$97.19
BAR2026-07 MTD$12,452.11$3,077.980.247262$47.53

Read the CAQ arc: May was small, Demand-Gen-shaped, and nearly break-even (0.799 at $11.1k). The June scale-up multiplied spend 5× and cut ROAS roughly 3×. July stabilized around 0.33 on much higher spend, with the last full week (starting 07-22) the best funded week since May: $26,191 at 0.436 for CAQ.

Weekly, last 8 weeks
Same grammar: spend track, revenue fill, ROAS label. Week starts are Pacific calendar (07:00Z boundaries).
Table view
Week ofCAQ spendCAQ revCAQ ROASBAR spendBAR revBAR ROAS
06-03$14,039.63$3,069.160.219$565.93$223.720.395
06-10$9,465.84$2,447.980.259−$87.71$0.00n/a
06-17$4,173.29$1,374.510.329$464.27$105.360.227
06-24$28,776.67$9,446.670.328$11,085.00$1,418.720.128
07-01$25,906.13$8,463.960.327$3,141.40$611.060.195
07-08$33,391.34$9,957.150.298$4,512.89$883.020.196
07-15$21,006.64$5,869.340.279$1,237.92$593.150.479
07-22$26,191.47$11,427.240.436$3,559.90$990.750.278

Lifetime by brand and channel

Where the money went, and what came back
PFM lifetime by brand × channel. Fill color = channel. Every channel loses; the difference is how much.
SearchDisplayDemand GenPMax
Brand / channelSpendRevenueROASLeadsCPLEPL30d live ROAS
CAQ Search$78,068$15,1970.195561$139.16$27.090.205
CAQ Display$57,846$26,4810.4581,631$35.47$16.240.444
CAQ Demand Gen$42,273$20,1670.4771,271$33.26$15.870.315
CAQ PMax$2,025$1,2210.60373$27.75$16.72banned/paused
BAR Demand Gen$13,510$3,5640.264320$42.22$11.140.327
BAR Display$8,261$6740.08246$179.58$14.660.173 (all paused)
BAR Search$3,983$5880.14829$137.34$20.260.260
The inversion to internalize on day one: Search has the highest lead value (every $80+ lead ever observed was Search; the p99 lead is $108.72) and the worst ROAS, because its CPCs ($18-46) dwarf even its premium EPL. Display and Demand Gen buy near-free clicks ($1.50-2.50) for cheaper leads and lose less.

Distribution: how many winners exist

109 campaigns with ≥ $500 lifetime PFM spend (CAQ 89, BAR 20)
The winner bar is 0.95×. Nothing has ever cleared it at campaign scale.

The best full campaigns ever: the April Demand Gen image cells at 0.887 ($6,079) and 0.826 ($5,180), both paused; PMax FT-A1-Observational 0.846; OFFERSHEET switch-blue-v1 0.831.

Top 20 campaigns by lifetime spend

The complete roster of all 324 PFM-billed campaigns, searchable and sortable, is in the appendix (and in per-campaign-pfm.md alongside this document’s data files). The top 20:

#CampaignTypeStatusSpendRevenueROASCTRCVRCPCEPL
1DISP.CAQ.T2-HIGH.INTENT-AGGREGATOR.MOBILEDisplayENABLED$8,922$4,7780.5359.18%4.74%$1.61$18.17
2SRCH.CAQ.FT-S2-PriceShopperSearchPAUSED$7,155$1,6420.22910.94%33.91%$41.12$27.82
3SRCH.CAQ.FT-S1-QuoteCompareSearchPAUSED$7,124$2,4080.33813.37%47.10%$45.96$32.98
4SRCH.CAQ.EXACT-NonStandardSearchENABLED$6,366$1,2260.19314.04%14.38%$21.29$28.52
5DMGN April image cell “3ButtonShowPrices”DGPAUSED$6,079$5,3910.8872.15%9.14%$1.70$16.49
6DMGN April image cell “PayNow”DGPAUSED$5,180$4,2790.8261.90%8.56%$1.75$16.91
7SRCH.CAQ.EXACT-CoreSearchENABLED$5,078$1,5510.3058.80%35.29%$24.89$21.55
8DISP.CAQ.WINNERS-REVIVALDisplayENABLED$4,876$2,9560.6069.35%6.12%$1.49$14.78
9SRCH.CAQ.EXACT-CarrierNonStd-TierA-v2SearchENABLED$4,503$8560.1904.03%11.85%$15.69$25.19
10DISP.CAQ.T2-HIGH.INTENT-PRICESENSITIVEDisplayENABLED$4,229$1,8640.4415.27%5.67%$1.95$15.16
11SRCH.CAQ.FT-S4-NearMeSearchPAUSED$4,161$1,0160.24411.05%28.23%$33.56$29.03
12SRCH.CAQ.FT-S5-PreferredProfileSearchPAUSED$4,022$1,2770.31710.13%28.48%$25.46$28.37
13April Display “BroadAud GenTest-PayNow”DisplayPAUSED$3,715$2,8320.7620.63%1.39%$0.44$24.21
14DISP.CAQ.T2-HIGH.INTENT-BOTTOMFUNNEL.MOBILEDisplayENABLED$3,692$1,3730.3728.49%6.02%$2.16$13.33
15DISP.CAQ.T2-HIGH.INTENT-CARRIER.MOBILEDisplayENABLED$3,691$1,8260.4956.58%6.25%$1.99$15.74
16DISP.CAQ.T2-HIGH.INTENT-LEADGEN.MOBILEDisplayENABLED$3,675$1,5040.4094.81%7.23%$2.48$14.06
17SRCH.EN_TX_GenIntentSearchPAUSED$3,213$3340.1043.84%7.41%$23.80$33.44
18DISP.CAQ.T1-PREMIUM.INTENT-LEADGENDisplayPAUSED$3,011$1,3830.4599.90%4.93%$1.58$14.72
19April Display “BroadAud” (tROAS-0.30 arm)DisplayREMOVED$2,820$1,6660.5910.52%2.10%$0.72$20.31
20DISP.CAQ.T1-PREMIUM.INTENT-LEADGEN.MOBILEDisplayENABLED$2,725$1,2330.4523.36%5.12%$1.57$13.85

Names abbreviated for width (all begin vlad.); full names in the roster. Note the CTR split: Search cells run 4-14% CTR at $16-46 CPC; Display/DG run 0.5-9% at $0.44-2.48.

The honest current reality

  • Blended lifetime is ~0.335 (0.31-0.34 depending on window). For every $1 spent, about $0.33 comes back.
  • A widely-quoted pair, “TRUE ROAS CAQ 0.290 / BAR 0.167 full-cost” (07-21), is superseded: the measured full-cost multiplier is only 1.01× (CAQ 1.0066 / BAR 1.0275), so media-cost ROAS is the usable figure and the two bases never flip any unit’s classification. Do not anchor on the old pair; do use full-book denominators (converting-cells-only denominators inflate ROAS 1.3-2×).
  • MCC context: we are not uniquely bad. The 30-day MCC read was 0.421× with −$107k across the manager account; 0/10 sibling accounts are profitable on Search; CAQ Search alone is ~40% of the entire MCC’s 30d loss, and we are 98.3% of all MCC Search spend (the lone Search bettor). One sibling (smartpolicyrates) relit and ran 0.927× over a 37-day launch window, and the no-tCPA sibling shows CPA $29-137 vs $16-23 for the tCPA-$20 account.
  • Google-side mirrors: CAQ window totals $177,889 cost / $58,412 value / 0.328 ROAS; BAR $25,711 / $4,648 / 0.181. Slightly below PFM, as expected.
4

Account structure tour

Naming and shape

Everything the operator built is vlad.*, with channel and role encoded: vlad.SRCH.CAQ.EXACT-NonStandard, vlad.DMGN.CAQ.OFFERSHEET.switch-blue-v1, vlad.DISP.CAQ.WINNERS-REVIVAL. The vlad. prefix is a hard mutation-safety invariant: tools refuse to touch anything without it.

CAQ, by typeEnabledPausedRemovedTotal
Search1712520162
Demand Gen1922142
Display831140
Performance Max0549
Total4418326253

Plus 503 ad groups, 2,036 ads, 16,878 keyword criteria. BAR: 180 campaigns (7 enabled: 4 Demand Gen, 3 Search; 145 paused, 28 removed), 235 ad groups, 857 ads, exactly 1,000 keywords.

The live book today: every enabled campaign

CAQ’s 44, sorted by trailing-7d spend. Bidding shorthand: MaxConv = Maximize Conversions, MCV = Maximize Conversion Value, TIS = Target Impression Share.

CampaignType$/dayBidding (target)7d spendWhat it is
DISP.T2-HIGH.INTENT-AGGREGATOR.MOBILEDisplay750MCV (tROAS 0.45)$3,141Flagship mobile Display, aggregator-intent audience; biggest spender in the book (0.535 lifetime PFM)
SRCH.EXACT-NonStandardSearch300MaxConv (tCPA $152)$2,442SR-22/high-risk EXACT anchor pool
DISP.WINNERS-REVIVALDisplay330MCV$1,748Revival of historical winning Display creative/placements
SRCH.EXACT-SeniorSearch241MaxConv (tCPA $201)$1,491Senior-driver EXACT lane (weak: 0.123)
SRCH.EXACT-CarrierNonStd-TierA-v2Search250MaxConv (tCPA $90)$1,453Carrier-conquest EXACT (21 non-avoid carriers, 151 kws)
SRCH.EXACT-CoreSearch270MaxConv (tCPA $60)$1,080Core quote-intent EXACT; best multi-kw Search cell (0.300-0.305 CAQ-only); harvest surface
DMGN.OFFERSHEET.percent-red-v1DG440tCPA $22$1,009Offer-sheet tournament arm (8-cell creative tournament, launched 07-25); one of FOUR elevated-budget arms ($440/d = 2.5× the $175 base; confound)
DMGN.OFFERSHEET.dark-premium-v1DG350tCPA $22$977Tournament arm; 0.788 lifetime, elevated budget ($350/d = 2× base; confound)
DMGN.OFFERSHEET.switch-blue-v1DG350tCPA $22$957Tournament arm; best at 0.831 (also elevated: $350/d = 2× base, confounded)
SRCH.EXACT-VehicleNicheSearch131MaxConv (tCPA $109)$830Vehicle-niche EXACT (salvage-title pocket; Rideshare AG paused)
DMGN.OFFERSHEET.lowdown-teal-v1DG440tCPA $22$790Tournament arm (0.771); elevated budget ($440/d = 2.5× base; confound)
DMGN.OFFERSHEET.coupon-red-v1DG175tCPA $22$779Tournament arm
SRCH.EXACT-PermitUnlicensedSearch107MaxConv (tCPA $80.35)$753Permit/unlicensed lane; the family’s one great kw lives on BAR (0.747 on $177 / 4 conv, LOW-N)
DMGN.OFFERSHEET.pricetag-green-v1DG175tCPA $22$752Tournament arm
DMGN.OFFERSHEET.senior-warm-v1DG175tCPA $22$721Tournament arm
DMGN.OFFERSHEET.retail-yellow-v1DG175tCPA $22$703Tournament arm
SRCH.EXACT-SuspendedLicenseSearch168MaxConv (tCPA $140)$644Suspended-license lane (0.140)
SRCH.EXACT-Switcher-v1Search60MANUAL_CPC$433Switcher-intent probe; its pre-registered retire line has fired (32 clicks/0 conv)
SRCH.EXACT-FR44-Floor-v1Search60MANUAL_CPC$415FR-44 on manual floor bids (worst named lane, 0.087)
DMGN.T1-PREMIUM.LAL-BALANCED.OFFPEAKDG120tCPA $30$415Lookalike (LAL) cell. Fleet fenced 07-25 toward ~$440/d; live authorized today $480/d across 11 enabled cells (3×$120 + 1×$50 + 7×$10; the 12th, T2-HIGH.LAL-BALANCED.OFFPEAK, is not enabled)
DISP.T2-HIGH.INTENT-PRICESENSITIVEDisplay230tROAS 0.95$352Price-sensitive-intent Display
SRCH.EXACT-NonStandard [broad-test]Search300MaxConv (tCPA $152)$257Google-experiment BROAD arm (one of 3 BROAD-vs-EXACT tests, live 07-27)
SRCH.EXACT-AseguranzaSearch100MaxConv (tCPA $65)$239Spanish lane; worst live Search unit (0.040), blocked on a Spanish LP ask
SRCH.EXACT-Core [broad-test]Search270MaxConv (tCPA $60)$230BROAD experiment arm
DMGN.T2-HIGH.LAL-NARROW.PEAKDG10tCPA $30$223LAL cell (fenced)
DMGN.T2-HIGH.LAL-BALANCED.WEEKENDDG120tCPA $30$199LAL cell (policy-limited ads)
DMGN.T1-PREMIUM.LAL-NARROW.OFFPEAKDG50tCPA $37.5$166LAL cell
DMGN.T1-PREMIUM.LAL-BALANCED.PEAKDG10tCPA $30$146LAL cell
SRCH.EXACT-CarrierNonStd-TierA-v2 [broad-test]Search250MaxConv (tCPA $90)$142BROAD experiment arm
DMGN.T2-HIGH.LAL-BALANCED.PEAKDG10tCPA $30$138LAL cell
DMGN.T2-HIGH.LAL-NARROW.OFFPEAKDG10tCPA $30$102LAL cell
SRCH.EXACT-MakesProbeSearch20MANUAL_CPC$62Small make/model EXACT probe
DMGN.T1-PREMIUM.LAL-NARROW.PEAKDG10tCPA $30$43LAL cell
SRCH.BRAND-DEFENSESearch50TIS$39Own-brand defense
DMGN.T1-PREMIUM.LAL-BALANCED.WEEKENDDG120tCPA $30$32LAL cell
DMGN.T2-HIGH.LAL-NARROW.WEEKENDDG10tCPA $30$22LAL cell
SRCH.BROAD-MakesGrid-v1Search200MANUAL_CPC ($8.76 cap)$1778 BROAD {make} insurance cost kws, 9 tier AGs; live 07-28; PFM tier copy pending
DMGN.T1-PREMIUM.LAL-NARROW.WEEKENDDG10tCPA $30$7LAL cell
DISP.T1-PREMIUM.INTENT-LEADGEN.MOBILEDisplay230tROAS 1.05$0dark since the 07-17 tROAS change (see incident, section 5)
DISP.T2-HIGH.INTENT-CARRIER.MOBILEDisplay350tROAS 1.05$0dark (same)
DISP.T2-HIGH.INTENT-AGGREGATORDisplay230tROAS 1.05$0dark (same)
DISP.T2-HIGH.INTENT-LEADGEN.MOBILEDisplay350tROAS 1.05$0dark (same)
DISP.T2-HIGH.INTENT-BOTTOMFUNNEL.MOBILEDisplay350tROAS 1.05$0dark (same)
SRCH.EXACT-AbsTop-Probe-v1Search400TIS$0Absolute-top position probe; never delivered one impression; its $1,500 & EPL<$35 kill line was RETIRED 07-25 as arithmetically unreachable (structural no-data)

BAR’s 7:

CampaignType$/dayBidding7d spendWhat it is
DMGN.BAR.HO-LAL30.C1-PriceFloor-BalancedDG100tCPA $30$688Homeowner-lookalike DG cell (live 07-21)
DMGN.BAR.HO-LAL30.C1-PriceFloor-NarrowDG100tCPA $30$671Sibling cell, narrow audience
DMGN.BAR.HighEPL-Canary.C1-PriceFloor-BalancedDG100tCPA $30$611High-EPL canary DG cell (live 07-18)
DMGN.BAR.HighEPL-Canary.C1-PriceFloor-NarrowDG100tCPA $30$597Sibling cell
SRCH.BAR.EXACT-ValueLanesSearch40MANUAL_CPC$227Value-lane EXACT (NoLicense/Permit/LuxuryExotic/AccidentViolation/KiaHyundai/Lapse/Reinstatement AGs)
SRCH.BAR.EXACT-CoreSearch30MANUAL_CPC$146Core EXACT (Price/Per-Month/Near-Me/No-PII/Life-Event AGs)
SRCH.BAR.BRAND-DEFENSESearch50MANUAL_CPC$0Own-brand defense, near-zero spend

The 4 BAR DG cells carry ~87% of BAR’s current spend and, note the trap, still run legacy INLINE final URLs with a literal {replace} token (trap 16 in section 9; flagged, awaiting operator GO).

Budgets and the envelope

Authorized daily budgets sum to ~$8,757/day CAQ + $520/day BAR = ~$9,277/day, but trailing-7d actual spend is $23,947 CAQ + $2,939 BAR over 7 days, i.e. ~$3,841/day ($3,421 + $420). The gap is tCPA/tROAS throttling and learning states, not budget: most live Search cells read LIMITED (BUDGET_CONSTRAINED) yet the adjudicated verdict is that on EXACT/manual cells budget is not binding and darkness under tCPA is throttle-by-target. (what-worked.md §2; memory: caq-nonstandard-tcpa-throttle-2026-07-14)

Why the graveyard is so large

382 of 433 total campaigns are paused or removed (433 total minus 51 enabled). This is deliberate probe-and-prune, not neglect: the operating style is to build a hypothesis as a small fenced campaign, give it a pre-registered kill line, and pause it the moment the line fires (section 5 shows the tempo: 23 campaigns created in one day on 07-09; the whole GenIntent state fleet paused; the EXPLORE-v2 build of ~5,600 keywords created PAUSED and never served a dollar).

Two cautions ride with this: 41% of a month’s change events landed on never-served inventory, and paused inventory is loaded: re-enabling an FT-S cell resurrects 42 Google-injected alien keywords; un-pausing a BAR Display campaign silently relights 13 zero-conversion ads; and the graveyard was never swept for savings-cap violations, so scan before ANY reactivation.
5

Complete history, April to July 2026

Two source caveats, carried verbatim: repo git history was squashed/rewritten around 07-28/29 (641 commits back to 06-17 became 50 back to 07-25), so June/early-July commit evidence rides on the dossier and handover files. And the change-event API is capped at 30 days with the preserved pull holding aggregate counts only; per-change records before 06-29 exist only via memory, handovers, and the dossier.

Phase 0: the backstory (2025)

BAR is the older account: opened May 2025 as a Demand Gen/Display book built on YouTube VSL (video sales letter) creative. Best month December 2025 at 1.21× ROAS ($19.4k); the VSL cohort ran 1.0226×, the only demonstrably profitable format in either account’s history. Then completely dark January-May 2026. VSL is now a forbidden format regardless (section 8).

Phase 1: CAQ opens small and nearly works (April-May)

CAQ opens 04-28 with Demand Gen image cells (vlad.DMGN.IMG.EN.04.28.26.1_*). May: $11.1k at 0.799, CPL $23.28, the closest to break-even the operation ever got. Small, DG-shaped, pre-repo, pre-tooling. Campaigns started before 06-01 did 0.744 lifetime versus 0.298 for everything after; scale, era, creative, and account age are fully confounded, so “go back to May” is not an executable instruction.

Phase 2: June: the panel era, the reset, and the scale-up

  • 06-05..12

    First handovers; large multi-persona expert panels (15-45 seats) on CPL, smart bidding, brand expansion, targeting.

  • 06-09/10

    Brand-expansion A/B trials on 14 state campaigns; all terminated 06-20.

  • 06-13

    reset North-star reset. All prior data declared tainted (a wrong 45+ age preconception had steered everything); 35 memories archived; the goal set as $20k/day at ≥ 0.95× gliding to $200k/day at ≥ 1.00×; PFM confirmed as sole compliance authority.

  • 06-17

    Repo’s first commit.

  • 06-24

    The armed auto-stop brake is retired; the operator prunes manually from the P&L cockpit.

  • 06-29/30

    mass reset 45 Display/DG cells paused across both brands in seconds; BAR Search built from scratch (EXACT-only); a 140-campaign URL-suffix retrofit lands in one pass; the operator moves the goal to 1.05× (“earned on lead value, not bought on volume”).

  • June total

    CAQ $59.3k at 0.309 (the scale-up begins, ROAS drops ~3× from May); BAR relaunch month $12.9k at 0.135.

Phase 3: July: build/kill tempo, three incidents, the hygiene machine

The month runs at extraordinary tempo: 13,799 CAQ change events + 1,426 BAR in 30 days, 99.95% by the operator, ~78% keyword/negative plumbing, two-thirds concentrated on 4 spike days.

  • 07-01

    Clean-slate panel (“the lever is the LEAD PRODUCT, not the auction”); EXACT-Core/NonStandard/DUI + the FT-S funded head-term cells created; first Google recommendation burst hits both accounts.

  • 07-07

    SR-22/high-risk EXACT cluster (incl. CarrierNonStd-TierA-v2); biggest pruning day; AAA keyword landmine (649 live-text kws in dormant campaigns) defused.

  • 07-09

    ban PMax banned (no Search-Partners opt-out exists; carrier commitment); 23 campaigns created in one day (DG OpenScale, Senior, VehicleNiche, 12 state DUI cells); QS verdict lands (“QS is NOT the wall”); Google’s 2nd recommendation burst injects 88 alien keywords.

  • 07-10

    1.00×-unreachable-by-adjustment teardown; state-themed national LP suite (51 states, 64 shards); MCC teardown (0/10 siblings profitable on Search).

  • 07-13

    incident Google auto-apply incident. 5 auto-apply recommendation subscriptions found silently ENABLED on CAQ for weeks: 88 keywords auto-added, ~$2,692/day budget headroom ratcheted, AI Max flipped on 14 campaigns, optimized targeting flipped on 51 ad groups, BRAND-DEFENSE bidding swapped. Defused same day; 37 alien keywords stripped; BAR was clean. Auto-apply status is now a permanent daily watch. Open item: BAR’s own 24 optimized-targeting flips from 07-01 were never reverted.

  • 07-14

    incident Demand Gen conversion break. Both brands stopped converting the same morning (CAQ 144 clicks/0 conv by hour 10, P=4.4e-06); Search and Display kept converting; all 19 DG cells paused. Root cause: an inline-URL gclid defect was blamed, then RETRACTED 07-28; the break was real, DG-specific, and its cause (somewhere in PFM’s upload pipeline) remains unknown. Same day: the FT-S head pool exited early (−$1,704/day).

  • 07-16

    Non-owner/no-car cut permanently (buyers only pay for with-car leads; the shared form has no “no car” path, so the lane’s 8.8% CVR was phantom vehicles); financed lane built paused; “no CPC cut exists” panel.

  • 07-17

    incident Largest build day ever (6,071 events): EXPLORE-v1 + six EXPLORE-v2 campaigns (~5,600 keywords) created paused. Same session, the quiet disaster: a target_roas 1.05 edit darkened 5 of 8 CAQ Display cells, $1,510/day authorized delivering $0, unnoticed until 07-25 because 30-day aggregates hid it. Standing doctrine since: plot the daily series; a tROAS above realizable book ROAS is a throttle, not a target.

  • 07-18

    12 CAQ DG lookalike cells relit; BAR HighEPL-Canary pair live.

  • 07-21

    Competitor-domain negatives fleet-attached (31 domains, both brands); high-EPL hunt verdict (all $80+ leads are Search); PRIME-EXPLORE built.

  • 07-22/23

    Zero-conversion DG videos + dead lanes cut; PRIME-EXPLORE killed (EPL ~$14 at the kill-time read, ~$20 on the fresh lifetime pull; zero $40+ leads); ad-strength Lane-A fills applied (59 ads +248 assets); BAR goes quiet after 07-23.

  • 07-24/25

    14-agent ad-level teardown: ad-level pruning is only 3.8% of burn; the Display tROAS blackout discovered; Google’s auto-generated DG video ads found ($1,472 / 1 conv / 0.0052) and the generator killed at source; LAL fleet budget-fenced from $2,440 toward ~$440/day (live authorized today: $480/d across 11 enabled cells); OFFERSHEET 8-cell tournament launched ($1,400/day at launch, tCPA $22; since raised to $2,280/day authorized across the four elevated arms).

  • 07-26

    PFM creative Set A: 33/33 units landed, zero rejections.

  • 07-27

    Broad-match mining: BROAD CPC −20.3% vs EXACT confirmed (6/6 campaigns, P=0.016), CVR edge exposed as mix artifact; 54 negatives applied; 3 BROAD-vs-EXACT experiments live.

  • 07-28

    launch MakesGrid launch (78 BROAD make-term kws, MANUAL_CPC $8.76, $200/day, ENABLED); live form walk shows 58 year-conditional makes (repo list stale); PFM leaderboard cracked: the “competitor” farm is PFM’s own network, and the real gap is monetization lanes per click.

  • 07-29

    MakesGrid tier copy submitted to PFM, 6/6 pending; quiet day on both accounts.

6

What worked / what did not

Full detail with per-verdict evidence tags lives in what-worked.md; this is the complete verdict list with the numbers that matter.

Channels

VerdictSummary
Search: worst ROAS, highest value; structurally underwater0.195 lifetime CAQ. All $80+ leads ever are Search, but CPC $18-46 against net EPL $14-27 cannot clear 0.95. Head terms are structurally dead: insurance quotes EXACT needs EPL $100.97 at its $44.64 CPC; actual EPL $31.99.
Display: least-bad, cleanest instrument0.458 lifetime / 0.444 live. Top spender in the book (AGGREGATOR.MOBILE, $8.9k at 0.535). Only channel with an identified experiment design (cookie-split). Marred by the 07-17 tROAS blackout (5 cells still dark today). BAR Display is a documented negative: 0.804% CVR vs BAR DG 13.467%, a 16.7× never-diagnosed gap, all 28 campaigns paused.
Demand Gen: produced the best campaigns ever, and the most incidents0.477 lifetime CAQ, carried by the April image cells (0.887 / 0.826). May’s whole book ran 0.799. The OFFERSHEET tournament pools 0.694 PFM lifetime at CPL $26.02 (best live pool; survivor-set read ~08-08; FOUR arms carry elevated budget: 2 at $440/d = 2.5× and 2 at $350/d = 2× the $175 base, $2,280/d authorized vs $1,400/d at launch, a named confound). The 07-14 conversion break’s root cause is still unknown.
PMax: best ROAS, banned anyway0.603 lifetime; FT-A1 0.846; final pre-pause week 1.062× on 43 conversions, the book’s only ≥ 1.0× weekly read at real n. Banned because PMax has no Search-Partners opt-out and we committed to carriers not to run Search Partners. Do not re-litigate; unlock path is a Google rep ask.

Search lanes (the EXACT non-standard thesis)

The core Search thesis was “risk intent is cheap and high-value.” Reality by lane, PFM lifetime:

LaneSpendROASVerdict
EXACT-NonStandard$6,6870.208Alive; best kws sr22 insurance 0.363, broad form 0.309
EXACT-Core$5,3680.300Alive; best multi-kw cell; harvest surface. CAQ-only; the oft-quoted $6,099 @ 0.292 silently pools BAR’s EXACT-Core ($731 @ 0.230)
Carrier-conquest TierA-v2$4,6930.194Alive; structural ceiling: QS 1.6 because the compliance wall bans naming carriers in copy
EXACT-Senior$2,0740.123Alive but weak; seniors convert on DG, not Search
EXACT-PermitUnlicensed$1,7050.221Alive; the one great family kw is BAR’s auto insurance for permit drivers EXACT at 0.747 ($177 spend / 4 conv, LOW-N; a harvest candidate, not a proven winner)
EXACT-VehicleNiche$1,4360.313Alive; salvage-title pocket cited at 2.37× (small n)
DUI/DWI family (15 campaigns)$2,4580.116Dead as built (12 state cells $1,804 + generic EXACT-DUI $395 + WKND cell $152 + WKDAY cell $106). All 9 conversions were Sat/Sun; even the weekend window ran 0.232; the LP is the wall
FR-44$9980.036Dead; worst named lane
EXACT-SuspendedLicense$8280.140Alive, weak
EXACT-Aseguranza$6540.040Worst live Search unit (66 clicks/1 conv, clears Bonferroni); blocked on a Spanish LP
EXACT-Switcher-v1$4430.162Retire line fired (32 clicks/0 conv, P=0.0038)
EXACT-Financed$0-Built paused; awaits PFM copy + GO
Non-owner / no-carcut-Cut permanently 07-16 (phantom-vehicle leads)

Net lane verdict: the non-standard pool is where the $40+ lead tail lives (top conquest terms $99-153/lead), but it has never been profitable (~0.24-0.27 realized). It is held as the value seed for a future value-bidding path, not as a working P&L.

Other fleets and probes

  • Old brand-expansion state fleet (June): $5,394 at 0.115, all paused; uaic EXACT alone burned $931/0 conv.
  • GenIntent state fleet (June PHRASE): $17,430 at 0.141, the biggest pure bleed of the June era; killed/paused.
  • FT-S funded head-term pool: $22,463 at 0.282, exited 07-14. Its MCV experiment verdict was VOID (Google’s auto-added keywords contaminated the control arm).
  • PRIME-EXPLORE-v1: killed 07-23. $2,080 spent / $361 revenue, EPL ~$20 per the fresh lifetime pull (18 leads; the kill-time read said ~$14, an unresolved 12-vs-18 lead ambiguity that changes the EPL, not the verdict), zero leads ≥ $40. Verdict: prime leads do not come from broad exploration on generic quote intent. Revival gate: uploaded $80+ customer-match lists, list-targeted only. (Note: EXPLORE-v1, a different campaign, actually spent $993 at 0.028 before pause; only the six EXPLORE-v2 cells are truly $0.)
  • June cluster Phase-A: 45 clicks/0 conversions in 3 days; PHRASE themes under MaxConv starved the EXACT cores; killed; the corrected EXACT-only recipe became the BAR relaunch.
  • Broad probes: BROAD’s CPC edge is real (−20.3% vs EXACT, 6/6, P=0.016) and BROAD is CAQ’s best match type by ROAS (0.259); its CVR edge was a mix artifact. MakesGrid is the live test; its $1,500 kill line buys only ~2.4 conversions/cell vs ~10 needed, so a kill there is a delivery-cost read, not a verdict on make-EPL.
  • Arbitrage shells (otto insurance, jerry, zebra...): 30.4% of BROAD spend at 0.253, which beats CAQ EXACT (0.193 on the fresh Google-side pull / 0.204 at the 07-27 mining read). Not waste; and post-07-28 these are PFM’s own house brands, so request their playbook rather than reverse-engineering it.
  • Conquest doctrine: the only conquest pocket that ever paid was ONE keyword family (responsive adjacents, $118-153 leads, n=3); absolute-top position buying is unprofitable (the AbsTop probe never served an impression); bid floor and lift CVR.
  • Video: Google’s auto-generated DG videos did $1,472 / 1 conversion / 0.0052 and were killed at the generator setting. Operator VSL is forbidden despite BAR’s 2025 VSL cohort at 1.0226× being the only profitable format in either account’s history. Never propose VSL.

Match-type cost mix

CAQ keyword cost by match type
Track = cost, fill = value returned, label = ROAS. BROAD is the best match type by ROAS and the smallest by cost.
CAQ match typeKeywords w/ spendCostCost shareROAS
EXACT370$40,55151.9%0.193
PHRASE196$26,30733.7%0.149
BROAD92$11,20814.4%0.259
BAR match type (LOW-N)CostCost share
PHRASE$2,51763.2%
EXACT$1,17529.5%
BROAD$2917.3%

BAR’s PHRASE cost is dominated by the paused GenIntent tier/state fleet; the live BAR book is EXACT-first.

Do-not-relitigate box (adjudicated structural truths)

These are settled. Re-open one only with new live data that contradicts it, reported explicitly.

  1. Head terms are structurally dead, not mispriced. Never re-bid the head pool.
  2. Quality Score is not the wall; EPL-vs-CPC is. 64% of Search spend is not QS-addressable.
  3. RANK, not bid. Never raise sub-clearing bids. Budget is not binding on Search; never add budget to EXACT/manual cells.
  4. 1.00× is unreachable by pure adjustment. Prune+mix ceiling ~0.44×; breakeven needs 2.2-2.8× EPL. A ≥ 1.0× book must be manufactured on the value side.
  5. The ROAS gap is 85-94% value-structural. PFM’s own properties monetize each click 2-3×; we are single-lane.
  6. Cheap CPC does not equal EPL. “High-risk $8-15 clicks” was refuted live three times ($37-68 real).
  7. PMax is banned (no Search-Partners opt-out). Its good numbers do not reopen this.
  8. Blended/mix CVR wins are artifacts. Never compare CVR/ROAS across channels or match types.
  9. BROAD’s −20.3% CPC edge is real; its CVR edge was a mix artifact.
  10. Non-owner/no-car is cut; buyers pay only for with-car leads.
  11. The ~0.5× reprice is already in the uploaded value. Benchmark on realized net EPL (~$17.27 blended; the T14 sheet’s net mean is ~$13.90), never T14 gross.
  12. Winner rule: 1-day ROAS ≥ 0.95× over a $30-50/day cost floor. No reads off partial days; full-cost re-derive before any GO.
  13. Nothing in this book buys leads below ~$30 full-cost CPL (cheapest ever: $31.79). There are no “cheap lead” cells to scale.
  14. Do not anchor on “TRUE ROAS 0.290/0.167”: superseded; full-cost multiplier is 1.01×. Always use full-book denominators.
  15. Cross-ACCOUNT keyword overlap between CAQ and BAR is ACCEPTED (separate legal entities; two SERP slots beat one). Never propose splitting it; intra-account duplicates remain fair game.
  16. Operating rules that ride with all of this: no automatic rollbacks (kill lines and dated gates are standing GOs); the operator drives everything; personas propose, only backend-ads-engineer mutates; no buyer conversations (price discovery only, $100-140/high-quality lead); run a red-team pass before any quantitative verdict.

What we still do not know (honest list, condensed)

The DG break’s root cause; why BAR Display underperforms BAR DG 16.7×; the DG experiment randomization unit; whether the 07-26 Search cut gate fired; OFFERSHEET’s steady state (read ~08-08); whether make/model selection moves EPL; the sign of the marginal Display dollar; incrementality of any channel (Display GBR pricing is the highest-value unpriced item); per-lead value ground truth (the $80+ customer-match lists are still not uploaded); why April/May worked (era/scale/creative/account-age fully confounded); whether PFM will grant us additional monetization lanes (the adjudicated real gap, unanswered ask); and the git history rewrite.

7

Who converts

The headline: nobody, at the profit bar. No age, gender, income, device, state, hour, or day-of-week cell in either account clears even 0.50× (best cells: CAQ hour-3 at 0.485 on low spend, CAQ DG 65+ at 0.474, Colorado 0.435). Every “winner” below is least-unprofitable. And the standing caveat: slicing a smart-bidding campaign by a variable the bidder optimized is post-treatment description, not targeting evidence.

CAQ by age band: all channels vs. Search only
Google-side, lifetime. Track = cost, fill = value returned, label = ROAS. Delivery skews old; Search value skews young.
Age bandCostConvROASCVRSearch costSearch ROAS
18-24$10,6451240.253.05%$7,3340.21
25-34$18,8742910.323.64%$11,2290.23
35-44$20,2863030.293.37%$9,3140.23
45-54$19,0093680.345.23%$7,4420.16
55-64$24,8894750.355.12%$10,4070.20
65+$49,5861,1380.355.88%$15,8820.13
Undetermined$32,6095500.304.80%$16,4580.18

Age is channel-dependent. All-channel delivery skews old because Demand Gen sends 85.6% of its spend to 55+ (65+ alone is 69% of DG spend; by impressions it is 66.1%, so quote spend share, not “90% of impressions”). On Search the ordering flips: 25-34 and 35-44 are best (0.23) and 65+ is worst (0.13) despite taking the most Search spend. Value is younger than spend. The 07-25 “45-54 best DG band” read does not hold on the lifetime window (65+ 0.474 > 55-64 0.467 > 45-54 0.427), though 45-54 keeps the best EPL; the adjudicated no-op verdict on age overlays stands either way.

Other cuts (CAQ)

  • Gender: flat (M 0.343 / F 0.338). No lever.
  • Income: mild consistent signal; the 70-80th-percentile tier leads (0.403, 255 conv), then 50-60 (0.374). Context, not targeting.
  • Device: mobile is 95% of spend at 0.329; desktop is scarcer and no better Google-side (0.300). The desktop 2× EPL tilt is value-per-lead and already in uploads; positive device bid modifiers are a documented API no-op.
  • Geo: best large states CO 0.435 / NC 0.386 / TN 0.384 / IL 0.381 / MD 0.366; worst funded: OH 0.276, TX 0.284. TX+FL together are 33% of CAQ spend at 0.28-0.31, the biggest structural drag; TX under-delivers its #1 T14 spend rank. Adjudicated: geo/ZIP VALUE tiering is null (five tests); income index is a volume ranker only; no geo-value builds.
  • Time: edge hours win: 8-9pm (0.45/0.41) and 6-7am (0.40/0.44) ET; Mon/Tue best (0.37), Thu worst (0.297); 4-6pm is the worst funded window. Weekends read ~0.30 lifetime, softer than weekdays but not the earlier 0.22-0.25 claim.

BAR: nearly everything is LOW-N; do not plan off BAR splits. The only non-noise reads (all still LOW-N by CAQ standards):

BAR cutROASn / note
Age 55-640.25361 conv (the only band with real volume)
Male0.219vs female 0.145
IL0.26725 conv (LOW-N)
Desktop0.27318 conv (LOW-N)

DUI is the exception that proves the daypart rule: all 9 DUI conversions ever were Saturday/Sunday (weekday $750/0 conv, P~0.001), which is why the lane survives only as one national weekend cell.

8

Creative & compliance

The compliance wall

The PFM Notion document is the only compliance authority. The wall:

  • “As low as $X/mo” is OK only at $X ≥ $30. Block “From $X” phrasing entirely.
  • No carrier names in ad copy (targeting carriers’ keywords is allowed; naming them in copy is not).
  • User-count / social-proof numbers are not banned when substantiated (07-25/26 clarification): the org-wide basis is 5,000,000+, the current approved rung is 500,000+, and compliant counts serve live today (e.g. BAR’s “125,000 Found A Deal”). Never call a live count fabricated and never rewrite one downward; on-image counts render as words (“OVER HALF A MILLION”), never numerals. What IS blocked: unsubstantiated claims and fake urgency/scarcity/quota messaging.
  • Savings claims need exactly ONE qualifier: “up to” OR “on average” (a bare figure is blocked); above $800 the word “average” is REQUIRED. Caps: $950/yr, and 80% for form flows / 50% for call flows (the call flow also carries a $50/mo or $713/yr minimum).
  • No curiosity-bait and no negative life events in copy or imagery. This rule is not from the PFM doc: its source is the 2026 Google clickbait policy. The PFM doc’s actual visual restrictions: no flags/government seals/police uniforms/authority clothing, no AI faces/celebrities/fake lawyers/food-stamp references, no cash visuals, no stolen property, no alcohol-while-driving, no dental/vision.
  • Image generation: gpt-image-2, quality=high only.
  • VSL video is forbidden, full stop, despite being the only historically profitable format.
  • LPs are PFM-provided and PFM-approved: never re-flag LP content in compliance scans; the BAR footer carrier logos are licensed.
  • SR-22/DUI offense-as-product copy is allowed (“SR-22 insurance”, “DUI insurance” as the product being sought).
  • Naming: never use “BRANDJACK” in campaign names. Eleven major carriers are absolutely avoided even for targeting (State Farm, Progressive, Geico, Allstate, USAA, Liberty Mutual, Farmers, American Family, Nationwide, Esurance, AAA), and so are their wholly-owned subsidiaries (the 2026-07-07 subsidiary block: Bristol West, The General / Permanent General / PGC, Direct Auto / Direct General, Titan, GAINSCO, National General). Genuinely independent non-standard carriers stay fair game, targeting-only and never in copy: UAIC, Kemper, Infinity, Dairyland, Acceptance, Freeway, Fred Loya, Amax. Note that AAA is a deliberate hard block despite being the single highest-EPL carrier term ever observed ($89.60 EPL); a lure, not an opportunity.
  • Asset reuse: TEXT is mixable across PFM submissions; IMAGES must come from ONE submission.

The PFM approval flow

Only PFM-approved creative deploys (north star #3). Pipeline: generate, then a regex+LLM compliance scan (source the API keys first; an empty LLM response is a soft-pass trap, not a pass), then ppc pfm-submit-*, then poll ppc pfm-verdict, then attach verbatim with provenance gating. Key reality for the LLM scan: the .env OpenAI key is DEAD (401); the operator-provided funded key lives in the oaivb file at repo root (not gitignored; credential discipline applies), and as of 07-25 that key too was out of quota, leaving zero funded keys until billing is topped up. Always verify a non-empty LLM response with an actual billable call before trusting any scan pass. Recent throughput: 07-26 Set A landed 33/33 with zero rejections; the 07-29 MakesGrid tier copy is 6/6 pending. Note: a clean compliance scan does NOT settle a trademark question; PFM’s verdict does.

What actually served (verbatim, by impressions)

CAQ top headlines: “Full Coverage As Low As $34/mo” (181,211 impressions), “Up To 50% Off Auto Insurance” (121,755), “Full Coverage as low as $39/mo” (102,774), “Savings for US Drivers” (89,050), “Compare In Just 2 Minutes” (62,854). Top descriptions: “See auto insurance rates from multiple options in one simple search.” (264,756), “Many Americans overpay for car insurance. Do you?” (214,789). The visible angle families: price-anchor ($30/34/39-mo), compare-speed, renewal-shock (“Renewal Shock?”, “Open Renewal Mail?”), skepticism/challenge (“Don’t Stop At One Quote”), and curiosity hooks (“Glove Box Find”).

BAR: “Car Insurance $44/mo” (43,013), “Drive Smarter Today” (best click-puller, 762 clicks), “Renewal Date Looming” (strongest CTR in the top-30: 588 clicks on 7,156 impressions).

Standing risk note: the $39/mo price-anchor copy family is the adjudicated #1 account-termination risk, consciously RISK-ACCEPTED by the operator. Do not expand the pattern without a GO, and do not re-litigate the acceptance.

The identification wall: do NOT read the above as a winners list. No ad-level or asset-level comparison is identified on any channel; the engine chooses exposure (median non-top Search ad gets 8.6% serve share) and data-driven attribution splits credit. Text partitions the ad only on Display; images partition nowhere. Judging one image properly costs ~$37.6k and 41 days. “Challenger tests” on Search+DG are non-identified; never call an ad swap an A/B.

Image creative reality

The winning creative pattern on the network (from the sibling teardown) is a discount-store offer-sheet: yellow starburst, price ladder, ZIP CTA bar; $10.3k/654 conv/1.18× at the sibling, and a premium-styled variant of the same layout did 0.96. The cheap look wins. Square 1200×1200 carries ~70% of image spend. Our compliant 8-concept offer-sheet family (gpt-image-2) became the OFFERSHEET tournament. Caution: the sibling’s own copy breaches our wall ($39/mo anchors, fake-checkout UI); copy the MEDIA pattern, never the message.

Before generating anything, check the library: cmd/clone-ppc/data/pfm_asset_catalog.json holds 2,138 approved-asset entries across 130 submissions with a 26-cluster enrichment taxonomy, and the standing finding is that deployment lags generation (about two-thirds of enabled ad groups ran one generic “Compare Quotes” block while approved themed copy sat on the shelf). Also: a POOR ad-strength badge on a carrier-conquest RSA is a compliance-wall artifact, not a defect (449 POOR ENABLED CAQ RSAs are steady state).

Inventory by the numbers

  • Ad-type mix: 952 IMAGE_AD, 917 RSA, 77 DG multi-asset, 70 responsive Display, 20 DG video.
  • Image assets: 604 account-wide (368 linked via campaign/ad-group link or embedded in an ad, 236 orphaned/unlinked).
  • Disapproved/limited: 17 ads carry approval status other than APPROVED (14 APPROVED_LIMITED, 3 still in review).
  • A 23-angle ranked creative backlog already exists; check it before generating new angles.
9

Funnel & tracking architecture

Condensed from funnel-architecture.md; read that file before touching any URL, suffix, or lane.

Hosts and shortcodes

BrandSearchDisplayPMaxDemand GenState LPLane shells (Srch/DG/Disp)
CAQP4qQq4mXkjg714Mk57MXvjRXk7bQvByBwkZB / P4qjZB / k4DLK4
BARd7Lzd4eBxAA7ZB9nM7VXmpO7--

Live census (07-29): CAQ Search serves a mix of yBwkZB (49 ads), k7bQvB (22), P4qQq4 (16), all bare; CAQ Display and DG have fully migrated to the LP-v2 shells k4DLK4/P4qjZB; BAR Search matches its map; the 4 live BAR DG ads still run legacy inline URLs. Both the historical map and the live census are correct; never “normalize” either direction without operator GO. Cross-brand cloning must swap host AND shortcode together.

The suffix contract

Ads carry bare final URLs. All parameters ride final_url_suffix, set at the most specific rung that needs to differ. The account-level suffix (identical on both brands):

sub1={creative}&sub2={adgroupid}&sub3={campaignid}&sub4={_sub4}&sub5={keyword}&sub6={placement}&sub7=Google&sub8={gclid}&sub9={wbraid}&sub10={gbraid}

  • sub8 = {gclid} is THE attribution key. Lose it and conversions upload nowhere.
  • final_url_suffix REPLACES down the hierarchy (ad > ad group > campaign > customer); it never merges. Writing sub11=<lane> alone at any rung silently wipes sub8. Always write the FULL suffix string, copied from a proven live cell.
  • sub4 is the routing/label slot (geo criterion ID on the state/lane shells via {loc_physical_ms}); sub11 is the LP lane slug.
  • sub11 routes ONLY on the lane shells (yBwkZB and twins). On any other shortcode it is a no-op passthrough: 64 clicks/$910 of specialized traffic sent lanes to P4qQq4 and produced zero conversions. And yBwkZB with NO sub11 is the worst cell ever measured (0.036 fallthrough). Known lane slugs: quote, es, sr22, high-risk, reinstate, permit, direct, non-owner, dui, luxury, broad-form, new-driver. The never-converted lanes are non-owner, luxury, and new-driver (boxed test first; non-owner is additionally a permanently cut lane: buyers pay only for with-car leads). broad-form HAS converted (the AG routed to it 07-27 reads 0.366).

LP shells and the form

Every lane LP is a shell over ONE vehicle-first form (ZIP, Year, Make, Model, all mandatory; the Make list is year-conditional with 58 makes; walk the live form, never trust the repo’s stale 18-make mirror). The LP is a CVR lever, not a value lever; any promise the form cannot honor is poison (that is what killed non-owner). sites/lp-suite/ in the repo is a build, not the live intake.

Traps table (memorize the first five)

#TrapRule
1Suffix REPLACES, never mergesFull suffix string always; assert sub8 present after any suffix write
2Inline params double-append (router comma-joins dupes, kills gclid)Never inline; bare URL first, then suffix
3{replace} vs {_replace} underscoreCustom-param TOKENS take a leading underscore; keys and builtins do not
4sub11 on a non-lane shell = silent zeroSpecialized intent goes on yBwkZB + lane only
5yBwkZB without sub11 = 0.036 fallthroughEvery yBwkZB placement gets an explicit lane
6Missing sub4 custom paramWire the campaign label param at create/reactivate
7Host-only cross-brand cloneSwap host AND shortcode together
8Campaign-rung lane over multi-lane AGsSet the lane at the most specific rung that differs
9New lane before intake verifiedCanary one cell; confirm a conversion lands WITH attribution
10Reading Google value as grossBenchmark on realized net EPL ($17.27 blended lifetime; T14-sheet net mean ~$13.90); breakeven 2.2-2.8× EPL
11Waiting for value to “mature”Value is final at submission; zero on real clicks is real
12Targeting legacy conversion actionsOnly Auto - Conversions is live signal
13“Fixing” shortcodesMap and live census are both correct; no normalization without GO
14Re-flagging LP contentLPs are PFM-approved; out of compliance scope
15Trusting repo LP config as liveWalk the live form
16BAR DG legacy inline ads (live today)Flagged; retrofit is a mutation, needs GO
10

Tooling & safety

Repo layout

  • cmd/clone-ppc/: the operational CLI (subcommands: extract, rank, plan, apply, images, oauth-init, create-test-conversion-action; sealed container via run.sh), plus single-purpose tools (caq_nocar_cut.py, search_term_miner.py, the MakesGrid builder) and the creative data (data/pfm_asset_catalog.json).
  • internal/sidecar/: the reusable Python library: ads_client.py (GAQL), oauth_client.py, batch_job_client.py, errors.py (sanitization), stream_helper.py; pytest suite; uv-managed venv at internal/sidecar/.venv (always use that interpreter).
  • app/ (submodule): the Go application: River-queue workers, the launcher, and the serveui cockpit (P&L reads, live state), operated via appctl through a Cloudflare tunnel. Deploys: main → GitLab CI → Flux.
  • google-ads-gateway/ (submodule): the Google Ads API gateway service.
  • .planning/: dated working files, handovers/ (panel syntheses), and directories like this one. Naming conventions signal state: -PROPOSAL, -DRYRUN, -FROZEN, -SYNTHESIS, -FACTS.
  • graphify-out/: the code knowledge graph. For any codebase question run graphify query "<question>" first.

Conventions: stdlib-first Python, type hints, argparse subcommands, structured JSON to stdout with progress to stderr, stable exit codes, and mutating operations are dry-run by default; only --confirm/--apply mutates.

Mutation-safety invariants

  • Only vlad.-prefixed entities may be touched; final-URL host must equal the CID’s canonical domain (strict equality; reject get., t., bare apex).
  • Everything is propose → operator GO → apply. Personas and analyses PROPOSE; only the backend-ads-engineer role applies Google Ads mutations, behind the gates. Nothing auto-applies bids. No automatic rollbacks (kill lines and dated gates are standing GOs; everything else waits for an explicit GO).
  • API gotchas that have bitten us: keyword criterion IDs are keyed (text, match) ACCOUNT-WIDE, so mutate via the ad-group-scoped path; explicit FieldMask on the leaf for booleans; v24 UNKNOWN enum sentinels are real values, never mass-strip; positive device bid modifiers are silently ignored; v24 campaign create requires contains_eu_political_advertising; GAQL has no OR, LIKE treats _ as a wildcard, change_event needs a date filter inside 30 days plus a LIMIT; OAuth refresh tokens die weekly (cli.py oauth-init --from-yaml).
  • Google fights back: the 07-13 auto-apply incident means auto-apply subscription status is a permanent daily check, and Google’s video auto-generation and recommendation bursts are watched via direct entity read-backs (change_event is blind to some of it).

The 45-persona team and skills

.claude/agents/ppc-team/ defines 45 specialist personas across eight pods (PPC & Growth, Engineering & Platform, Data, Infra, Risk/Compliance/Legal, Creative & Product, Monetization & Funnel, Auction/Geo/Scheduling). Dispatch by description; for cross-cutting decisions run a parallel panel and synthesize into .planning/handovers/ (the “N-vet” pattern). Check prior panels before convening a new one. Key skills: ppc-team (roster + canonical account facts), ppc-daily-loop (the canonical read-only daily operating loop; value gate first, STATE update last), search-term-mining (the negation/harvest hygiene loop), ppc-vbb-migrate (gated value-based-bidding migration), app-ops, and red-teaming-your-own-analysis (mandatory before any quantitative verdict).

The operator memory system

The operator memory index (MEMORY.md in the Claude project memory directory) is a one-line index; the linked files hold the substance (ground truth, incidents, adjudicated verdicts). Treat adjudicated verdicts as authoritative unless live data contradicts them, and if it does, report the contradiction explicitly; never silently pick a side. Style rules that apply to everything you write here: no em dashes, no emojis, visual-first collaboration, commit regularly with explicit adds (never git add -A), and credential discipline (never commit or echo secrets; treat any secret found on disk as exposed and recommend rotation).

11

The mandate & the path

The mandate, exactly

Make Search the primary channel at ~80% of spend, at least $20,000/day at ≥ 0.95× ROAS, then scale to $300,000/day over the next six months.

The frame that keeps this honest: the target is aspirational by design; the binding operating rule is that money only scales where ≥ 0.95× is proven (1-day winner rule, section 2). Nothing scales on projection.

Today
$3,841/day
blended, ~0.31-0.34× ROAS. Search: $1,557/day (40.5% share) at ~0.21 live
13× Search spend
× 5× Search ROAS
the hard part
The gate
$20,000/day
Search-primary (~80% of spend) at ≥ 0.95× proven, never projected
15× scale
only after the gate holds
Six months out
$300,000/day
winner-gated expansion of proven cells

So the mandate asks for roughly a 13× expansion of daily Search spend into a 5× improvement in Search ROAS, and then a further 15× scale-up. Stated that plainly so nobody mistakes the distance.

Why pure bid/budget moves cannot close it (adjudicated)

Every mechanical lever has been formally tested and closed: there is no CPC cut (07-16 panel); QS remediation cannot move expected CTR (compliance-capped clickability); rank, not bid, gates delivery, and budget is not binding on Search; the prune-and-mix ceiling is ~0.44×; breakeven requires 2.2-2.8× the current EPL. A ≥ 0.95× Search book must be manufactured on the value side, not selected from the current one.

The identified levers

  1. Value-side manufacturing (the big one). The 07-28 PFM finding names the mechanism precisely: PFM’s own properties monetize each click through 2-3 lanes (form lead + Ringba pay-per-call + post-submit click-listing at $6.30-9.60/click) while we run single-lane form-fill. Getting additional monetization lanes granted on our LPs is an operator-to-PFM ask, currently unanswered, and is the single largest identified lever. Guardrails: never phrase this as “manufacture the lead product” (adjudicated phrasing rule: tune EXISTING search for value), and no buyer conversations beyond price discovery.
  2. The non-standard EXACT pool + per-campaign tCPA throttles. The pool holds the entire $40+ lead tail and runs under per-campaign MaxConv + tCPA set from the per-keyword clearing-CPA ladder at floor ×1.10 (the 07-24 same-day step-UP: NonStd $152 / SuspLic $140 / TierA $90 / Senior $201 / VehicleNiche $109 / Permit $89 / Aseguranza $65; this matches the live book, though Permit has since been retuned to $80.35). The flip initially set ~1.5× trailing EPL ($28-57), which survives only as the step-DOWN reference. This is the current bidding regime after the portfolio-tROAS experiments darkened the fleet. It is the value seed for the value-bidding path (ppc-vbb-migrate), pending the $80+ customer-match list uploads that gate every value-rule plan.
  3. Winner-gated scaling. The 1-day ≥ 0.95× over $30-50/day rule plus standing kill lines (e.g. $90 & 0 conv for DG cells; click-based zero-conversion floors; pre-registered retire lines). Cells that clear get budget; nothing else does.
  4. State/daypart mix. Shift weight toward CO/NC/TN/IL/MD and the 6-7am / 8-9pm / Mon-Tue windows, away from the TX+FL drag and Thu / 4-6pm, within the no-geo-value-builds constraint (volume ranking is allowed; value tiering is adjudicated null).
  5. Broad-probe harvesting. BROAD’s real −20.3% CPC edge, mined weekly (search-term hygiene loop: negate junk, harvest converters to EXACT at the $11 harvest bar), plus the live BROAD-vs-EXACT experiments and MakesGrid as structured probes. Two hard rules ride with the hygiene loop: (a) shared negative sets 12102166887 and 12112276039 are LOAD-BEARING gaps; never attach them to anything. (b) The competitor-domain negative sets (31 domains, both brands) do NOT inherit; attach them manually to every NEW launch, and never re-enable paused-dark keywords without carving their blocking negatives first.
  6. Creative deployment over generation. The approved library outruns what is deployed; filling ad groups with already-approved themed copy is free (section 8).

What would change the math from outside the levers: a PMax unlock (Search-Partners opt-out via the rep ask; PMax is the best-ROAS channel we have ever run), Display incrementality pricing (one analyst-day, $0 media), and the OFFERSHEET survivor read (~08-08).

12

Day-1 checklist + glossary

First week

  1. Read MEMORY.md top to bottom, then the north-star memory and every memory marked with a star. Treat adjudicated verdicts as settled.
  2. Read the onboarding data directory (.planning/2026-07-29-onboarding/): what-worked.md, pfm-history-summary.md, both structure summaries, timeline.md, demographics.md, funnel-architecture.md.
  3. Run the daily loop (ppc-daily-loop skill), read-only. Check: PFM stats, the live book’s daily series (not aggregates), auto-apply subscription status, pfm-ads@ activity on CAQ/BAR (PFM’s MCC service account; it has never written here, verify that stays true), the OFFERSHEET tournament (protected until ~08-08), MakesGrid delivery, the 5 dark Display cells.
  4. Shadow one full propose → operator GO → apply cycle before proposing anything yourself.
  5. Never mutate without an explicit GO. No --apply, no --confirm, no BatchJobs, no PFM submissions. Dry-run is the default everywhere; keep it that way.
  6. When exploring code, graphify query first. When writing anything, no em dashes, no emojis, cite your sources.
  7. Before your first quantitative verdict, run the red-team skill on your own analysis. Cheap + reversible + unmeasured means boxed test, not verdict.

Reproducing the numbers

  • Google-side (GAQL): use the sidecar venv interpreter internal/sidecar/.venv/bin/python with sidecar.ads_client.GoogleAdsApiClient and google-ads.yaml; probe_campaigns.py in the onboarding directory is the working template (explicit BETWEEN dates, vlad.% LIKE filter, JSON to stdout).
  • PFM-side (money truth): the app submodule’s go run ./cmd/ppc pfm-stats. Money arrives in cents (convert), and windows are rolling; pin explicit dates before comparing anything to this document.
  • Cockpit P&L: appctl through the Cloudflare tunnel (skill app-ops) for live P&L and launcher-state reads, read-only.

Glossary

TermMeaning
AGAd group
BARBudgetAutoRates (brand; CID 3646520839)
BROAD / PHRASE / EXACTGoogle Ads keyword match types, loosest to strictest
CAQCheapestAutoQuotes (brand; CID 2290970423)
CIDGoogle Ads customer ID
CMCustomer Match (uploaded first-party audience lists)
CPCCost per click
CPLCost per lead (spend / leads)
CTRClick-through rate
CVRConversion rate (leads / clicks here)
DDAData-driven attribution (Google’s credit-splitting model)
DGDemand Gen (Google’s feed/YouTube/Discover visual channel)
EPLEarnings per lead (revenue / leads; net of the buyer reprice)
FR-44Virginia/Florida high-risk financial-responsibility filing (like SR-22, higher limits)
gclidGoogle Click ID; the attribution key carried in sub8
GAQLGoogle Ads Query Language (SQL-like read API)
ISImpression share
LALLookalike audience
LPLanding page
MaxConv / MCVMaximize Conversions / Maximize Conversion Value bidding
MCCMy Client Center (Google Ads manager account); ours is Rockman 7498902464
PEWCPersonalized-ads exclusion / consent flag family (targeting fails closed on it)
PFMPowerFox Media, the lead buyer, LP provider, and compliance authority
PMaxPerformance Max campaign type (banned here)
QSQuality Score
ROASReturn on ad spend (revenue / spend; 1.0 = breakeven on media)
RSAResponsive Search Ad
SR-22State-mandated proof-of-insurance filing for high-risk drivers
sub1..sub11Our tracking parameters on the final-URL suffix (sub8 = gclid, sub11 = LP lane)
T14The buyer’s EPL-by-state gross tier sheet (repo root CSV)
tCPA / tROASTarget cost-per-acquisition / target return-on-ad-spend bidding
TISTarget Impression Share bidding
VSLVideo sales letter (long-form direct-response video; forbidden format)
A

Full campaign roster

Every one of the 324 PFM-billed vlad.* campaigns, lifetime (2026-04-01 to 07-29, PFM-side). Search, sort any column, filter by brand or status. Two unattributed credit rows (~1.8% of CAQ) are excluded here but included in the brand totals of section 3; July is month-to-date.

Brand Campaign Type Status Spend Revenue ROAS Leads CPL CTR CVR EPL

Sources & method. Compiled 2026-07-29 by a 10-agent research workflow: six parallel pull agents (PFM per-campaign history via RetrieveScopedStats with Pacific-day windows; full GAQL v24 structure extracts of both accounts; 30-day change-event history plus repo/memory timeline reconstruction; demographics, device, geo, and daypart splits; live funnel/URL census), a synthesis pass, and an adversarial verification pass (16 fact-check findings and 11 completeness findings, all resolved before publication). Data files live in .planning/2026-07-29-onboarding/: campaign-inventory.json, pfm-history.json, caq/bar-structure.json + summaries, change-history.json, timeline.md, demographics.json/md, funnel-architecture.md, what-worked.md, per-campaign-pfm.md, ONBOARDING.md (the markdown twin of this report). Money figures are PFM-side unless labeled Google-side. Nothing in this document was produced by mutating either account.