Two ad accounts, $287k spent, and what it bought us.
This is the complete operating history of both accounts: every campaign, every ad group, every ad, what each one cost and what came back. It is written for someone who is about to get the keys. The headline is not good, and it is not buried.
What you are looking at
Two brands, one business model, and the reason the numbers look the way they do.
We run paid acquisition for two auto insurance lead generation brands. We are not an insurer and we do not sell policies. We buy clicks, send them to a form, and sell the completed form to a downstream buyer. Revenue is per lead, not per policy.
That single fact drives everything else in this document. Our ceiling is set by what a lead is worth to the buyer, and that number is roughly $19. Every campaign in these accounts is, in the end, an attempt to buy a form fill for less than that.
CheapestAutoQuotes (CAQ)
Account 2290970423. Traffic lands on find.cheapestautoquotes.com. First dollar spent 29 April 2026, so this account is about three months old. It is the search heavy account and the more experimental of the two.
BudgetAutoRates (BAR)
Account 3646520839. Traffic lands on quote.budgetautorates.com. First dollar spent 8 May 2025, but it has only 93 days of actual spend across that window, so most of its life it has been dark. It is Demand Gen heavy.
They are separate entities
CAQ and BAR are separate legal entities with separate owners. Compare them side by side, never merge them, and never let creative or tracking cross between them.
There is no era before this team
Worth knowing up front, because it changes how you read everything else: all 432 campaigns across both accounts carry the vlad. prefix, with zero exceptions. Nothing here was inherited from a previous agency or a previous build. The first vlad. campaign went live on 7 May 2025 on BudgetAutoRates, and that date is the start of this engagement.
So the history in this document is roughly fifteen months of one team's work, not a mix of eras. Every result below, good and bad, belongs to us.
One lead sells more than once
A detail that confuses everyone at first: our buyer reports — conversions sold against — leads delivered. The ratio is about 1.6. A single form fill is resold to roughly one and a half buyers on average, and the revenue we are credited with is the sum of those sales. So do not read "conversions sold" as "leads". The lead count is the smaller number.
The money, first
Lifetime, both accounts, PowerFox Media revenue. No smoothing.
The bar above is the whole business in one object. We spent — and — came back. That is a blended — return. The target is 0.95×, which is where this operation breaks even after the downstream repricing is accounted for.
We are not close to it, and we have never been close to it in aggregate. Anyone who tells you a tweak to bids will fix this has not looked at the distribution below.
Where the money actually sat
Every campaign that ever spent, bucketed by what it returned.
How we know these numbers
Two systems disagree slightly and we show both. PowerFox Media is the buyer and therefore the truth for revenue. Google Ads is the truth for structure and configuration. Where a PFM figure exists we use it, and every row in this document carries a source tag.
They agree closely, which is the main reason to trust either. On cost the gap is 1.4% for CAQ and 0.1% for BAR. PFM reports 4% to 8% more revenue than Google Ads does, because the buyer keeps restating lead values upward after the fact and those restatements do not all make it back into Google.
| Reconciliation | Google Ads | PFM | Gap |
|---|---|---|---|
| CAQ spend | $172,599.82 | $174,960.05 | +1.4% |
| CAQ revenue | $55,449.40 | $59,827.72 | +7.9% |
| BAR spend | $112,313.69 | $112,162.71 | −0.1% |
| BAR revenue | $79,812.80 | $83,325.59 | +4.4% |
PFM also carries a −$3,519.91 bucket with no campaign attached. That is a credit or adjustment, not a campaign, and it is excluded from every per-campaign figure here.
The one thing that worked, and it is switched off
If you read nothing else in this document, read this section.
Twenty one campaigns in the entire history of both accounts returned 0.95× or better, carrying $43,639 of spend, about 15% of the book. Sixteen of those spent at least $500 and so are worth taking seriously as evidence rather than noise. They are listed below. Several returned well over 1.0×, and one returned 1.92×.
All sixteen are BudgetAutoRates Demand Gen video campaigns. All sixteen ran between August and December 2025. And every single one of them is now paused or removed.
The central fact of this account
No campaign currently enabled, at any meaningful spend, clears the 0.95× bar. The best live performer above $500 of spend returns 0.928×, and it has spent $558. Everything that ever cleared break-even is turned off.
| Campaign | Status | Spend | ROAS |
|---|---|---|---|
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-VA-TVBAR · Demand Gen · Dec 2025 | removed | $3,167 | 1.923× |
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-PA-TVBAR · Demand Gen · Dec 2025 | removed | $2,347 | 1.775× |
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-NY-TVBAR · Demand Gen · Dec 2025 | removed | $858 | 1.303× |
| vlad.DMGN.VAC.EN.08.14.25.1_BroadAud_NewsUrg-MI-TV_45PlusUNKBAR · Demand Gen · Aug 2025 | paused | $2,716 | 1.262× |
| vlad.DMGN.VAC.EN.10.21.25.1_BroadAud_VSLCowboy-States-TX-TVBAR · Demand Gen · Oct 2025 | removed | $1,907 | 1.230× |
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-CO-TVBAR · Demand Gen · Dec 2025 | removed | $1,547 | 1.193× |
| vlad.DMGN.VAC.EN.08.14.25.1_BroadAud_FormerEmp-TV_45PlusUNKBAR · Demand Gen · Aug 2025 | paused | $7,264 | 1.147× |
| vlad.DMGN.VAC.EN.08.08.25.1_BroadAud_FLSCGA-Urg_25PlusUNKBAR · Demand Gen · Aug 2025 | paused | $4,638 | 1.135× |
| vlad.DMGN.VAC.EN.08.14.25.1_BroadAud_NewsUrg-IL-TV_45PlusUNKBAR · Demand Gen · Aug 2025 | paused | $899 | 1.134× |
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-CA-TVBAR · Demand Gen · Dec 2025 | removed | $851 | 1.089× |
| vlad.DMGN.VAC.EN.08.08.25.1_BroadAud_FLSCGA-Urg_45PlusUNKBAR · Demand Gen · Aug 2025 | paused | $5,232 | 1.087× |
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-MI-TVBAR · Demand Gen · Dec 2025 | removed | $2,590 | 1.084× |
| vlad.DMGN.VAC.EN.08.14.25.1_BroadAud_NewsUrg-AZ-TV_45PlusUNKBAR · Demand Gen · Aug 2025 | paused | $2,330 | 1.072× |
| vlad.DMGN.VAC.EN.10.27.25.1_BroadAud_VSLCowboy-States-TX-TVBAR · Demand Gen · Oct 2025 | removed | $3,358 | 1.064× |
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-SC-TVBAR · Demand Gen · Dec 2025 | removed | $1,478 | 1.053× |
| vlad.DMGN.VAC.EN.12.22.25.1_BroadAud_VSLWorstState-States-FL-TVBAR · Demand Gen · Dec 2025 | removed | $1,502 | 1.018× |
Every campaign in both accounts with $500 or more of spend and a return at or above 0.95×. Six paused, ten removed, zero live.
What they had in common
- Demand Gen, video first. Not search. Not display.
- Broad audience targeting, marked BroadAud in the name, rather than tight intent segments.
- One state per campaign. Look at the suffixes: VA, PA, NY, MI, TX, CO, SC, FL, CA, AZ, IL. The winners were geographically split, one cell per state.
- An age floor of 25+, 35+ or 45+, never unbounded.
- A long form video asset per cell, tagged VSL or NewsUrg or FormerEmp.
Why they were switched off
Not for performance. On 6 June 2026 all 28 BudgetAutoRates VSL Demand Gen campaigns were removed in a single operation, by operator instruction, because the video sales letter format was ruled to violate internal compliance. The removal record is in the repository at .planning/scripts/bar_vsl_removal_results.json.
The likely specific problem is the state comparative framing. Thirteen of the twenty eight were VSLWorstState cells, which assert that a named state is the "worst" for something. That is an unsubstantiated comparative claim in a regulated vertical, and it is the kind of thing that costs an account rather than an ad.
These are banned, not parked
Do not re-enable a paused VSL campaign, and do not propose a VSL theme for either brand, without explicit sign off that references this decision. The performance data says the format worked. The compliance position says it is not allowed. Both are true at once, and that tension is the defining problem of this account: the only thing we found that paid for itself is the one thing we cannot run.
What that cost us, measured
The effect shows up cleanly in the current run rate. Over the last 30 days the two accounts together spent $127,580 and returned $40,247. That is 0.316×, well below the 0.499× lifetime blend.
In other words, the accounts are not slowly improving. They are running worse than their own history, because the cohort that pulled the lifetime average up is gone and what replaced it performs at a third of break even. At current pace that is $4,253 of spend and $2,911 of unrecovered spend per day.
| Last 30 days | Spend | Revenue | ROAS |
|---|---|---|---|
| CheapestAutoQuotes | $112,957 | $36,710 | 0.325× |
| BudgetAutoRates | $14,624 | $3,537 | 0.242× |
| Combined | $127,580 | $40,247 | 0.316× |
Pulled directly from PFM on 28 July 2026, independent of the lifetime figures above. Note that BAR, the account that used to carry the winners, is now the smaller spender and the worse performer of the two.
How the accounts are built
Read the campaign name and you know most of what a campaign is.
Every campaign name begins vlad. and that prefix is load bearing: our tooling refuses to mutate anything that does not start with it. It is the safety catch that stops an automated job touching a campaign it did not create. All 432 campaigns satisfy it today, so the guard has never actually had to block anything. Treat that as a property worth preserving, not as proof the guard is unnecessary.
- vlad
- Mutation safety prefix. Tooling will not touch a campaign without it.
- DMGN
- Channel. SRCH search, DISP display, DMGN Demand Gen, PMAX Performance Max.
- CAQ
- Brand. CAQ or BAR. Must match the account it lives in.
- OFFERSHEET
- Strategic family. The experiment or lane this campaign belongs to.
- switch-blue-v1
- The specific cell. Usually a creative variant or a state.
There is an older naming generation too
82 campaigns use an earlier form: vlad.SRCH.EN_TX_GenIntent. Channel, then language, then state, then family, with no brand token. If you write anything that parses campaign names, handle both or you will silently mis-bucket a fifth of the account.
Channel split
CheapestAutoQuotes
BudgetAutoRates
The two accounts are almost mirror images. CAQ's money went into Search and Display. BAR's went almost entirely into Demand Gen.
Do not conclude that BAR is the better account
BAR's lifetime 0.743× against CAQ's 0.342× is a survivorship number. Split it by year and the picture inverts.
| Era | Spend | Revenue | ROAS |
|---|---|---|---|
| BAR, 2025 (May, Aug, Oct, Nov, Dec) | $87,174 | $75,282 | 0.864× |
| BAR, 2026 (Jun, Jul) | $25,140 | $4,531 | 0.180× |
| CAQ, 2026 (its entire life) | $172,600 | $55,449 | 0.321× |
Google Ads money, the only figure that carries a date axis. In the current period CAQ outperforms BAR by a wide margin, and it does so on every channel. Almost all of BAR's lifetime revenue was earned in 2025 by campaigns that no longer exist.
BAR has been deleting its best work
Sort BAR's spend by campaign status and the ordering is backwards from what you would expect in a healthy account:
- REMOVED: $35,527 at 1.023×
- PAUSED: $71,874 at 0.632×
- ENABLED: $4,761 at 0.334×
The deleted campaigns are the best performing bucket in the account and the live ones are the worst. That is section 03 showing up in a different cut of the data. CAQ does not have this pattern: its statuses run 0.366× enabled, 0.329× paused, 0.291× removed, which is the normal shape of an account pruning its losers.
Everything we tried
432 campaigns, 729 ad groups, 2,760 ads. Grouped by the strategic family the name encodes.
A campaign family is one idea, usually run as several cells at once. This is the list of ideas that were tested, with what each cost and returned. Sixty six campaigns were built and never spent a dollar, so they appear nowhere below.
CheapestAutoQuotes by family
BudgetAutoRates by family
Note the shape of BAR: one family, VAC, is 70 campaigns and carries almost the entire account. Note the shape of CAQ: no family dominates, because CAQ has been a sequence of experiments rather than a scaled winner.
The 30 largest campaigns, CheapestAutoQuotes
The 30 largest campaigns, BudgetAutoRates
What worked, what did not, what is still running
Ranked honestly. The second table is the bill for what we learned.
What is running right now
Everything currently enabled, largest first. This is the surface you would be operating on from day one.
Best return, at real spend
Largest unrecovered spend
By ad format
The format table is worth sitting with. BAR Demand Gen video is the single largest block of spend in either account and returns 0.91×, close to break even. CAQ responsive search ads are the second largest and return 0.19×, which is the worst ratio at scale anywhere in the book. We have spent more on search text ads at CAQ than on anything else except BAR's video, and it has returned about nineteen cents on the dollar.
Why CAQ search fails, in one number
CAQ Search spent $76,148 and bought 3,652 clicks. That is $20.85 per click. Compare it to the other channels in the same account:
| CAQ channel | Spend | Clicks | Cost per click | Cost per lead | ROAS |
|---|---|---|---|---|---|
| Search | $76,148 | 3,652 | $20.85 | $141.54 | 0.192× |
| Display | $57,075 | 46,082 | $1.24 | $35.85 | 0.449× |
| Demand Gen | $39,712 | 16,506 | $2.41 | $33.77 | 0.462× |
| Performance Max | $2,025 | 1,209 | $1.68 | $27.75 | 0.603× |
A search click costs seventeen times what a display click costs and about nine times what a Demand Gen click costs. A lead is worth roughly $19. At $20.85 a click, a single click has to convert at better than one in one to pay for itself, and it converts at roughly one in seven. That is the entire CAQ search problem and no amount of keyword selection closes a gap of that shape.
Ad strength does not predict money here
A natural instinct is to go fix the POOR rated ads. The data says do not bother. Across the responsive search ads, POOR strength returned 0.135× and EXCELLENT returned 0.248×. Higher strength does buy meaningfully better click through rate, roughly 3.9% at POOR against 7.4% at EXCELLENT, but the entire spread from worst to best sits far below the 0.95× bar. Strength buys clicks. It does not buy return.
Google's own asset performance labels are also unusable in these accounts: of 19,290 ad assets, 15,427 are still PENDING and the remainder are unlabelled. There is not a single LOW, GOOD or BEST label anywhere. Rank headlines by joined PFM spend, which is what this document does, not by Google's labels.
The creative
What the ads actually looked like, reconstructed from the live account.
Below are the highest spending responsive search ads, assembled the way Google serves them. A responsive search ad is a pool of headlines and descriptions, not a fixed ad: Google picks three headlines and two descriptions per impression. What you see is a representative combination honouring the pins we set, not the only one that ran. Expand any card to see the full asset pool.
Display and Demand Gen ads
These formats do not render as a search result. Google assembles them from a pool of short headlines, descriptions and images or video, laid out differently per placement. Shown below are the text pools of every display and Demand Gen ad that ever spent, which is where the messaging strategy is actually visible.
Image creative, CheapestAutoQuotes
Ranked by the spend of the campaigns each image was attached to. Click to enlarge.
Image creative, BudgetAutoRates
Video creative
The Demand Gen video library. This is the format that produced every campaign in section 03. Thumbnails link to YouTube.
The copy that ran most widely
Copy here is policy constrained, and the rules are specific
Auto insurance is one of the most heavily policed verticals on Google, and the real risk is losing the account rather than losing an ad. The constraints are narrower than "be careful", so learn the actual shape of them before writing anything:
- Price framing. "As low as $X a month" is permitted at $30 and above. "From $X" is not. You will see real dollar figures in the image creative above and they are compliant for that reason, not in spite of the rule.
- Savings claims must be hedged with "up to" and capped: no more than 80% on a form-fill flow, no more than 50% on calls.
- No carrier names in copy, ever. Competitors can be targeted, but never named in the ad.
- No fabricated urgency, counts, or ratings, and no negative life events in copy or imagery.
Copy and imagery go through compliance review before deploy, not after.
Live creative is currently out of compliance with our own wall
Replaying the production scanner (app/internal/compliance, the same ScanPairwise path the generator uses, which judges each asset in isolation because Google can serve it in isolation) over every enabled ad in both accounts: 331 of 929 live ads, 36%, trip at least one rule today.
| Rule | Live ads | Most common match |
|---|---|---|
| savings_avg_required | 207 | "save up to $900" |
| savings_no_up_to | 59 | "Save Over 50%", "Save hundreds" |
| price_floor | 33 | "rates from 2", "From $1", "starting at $3" |
| carrier_name | 30 | "nationwide" |
| instant_insurance | 2 | "insurance in minutes" |
Read this carefully before acting on it. Google has approved every one of these ads. This is our own internal wall, which is deliberately stricter than Google's, and the live book has drifted out of alignment with it. Two specific caveats:
- The 30 carrier_name hits all match the word "nationwide". In context that is almost certainly the adverb, not the carrier Nationwide, so treat those as a regex false positive until someone reads them.
- The 207 savings_avg_required hits are a real rule working as designed: a savings figure above $800 needs an "on average" qualifier in the same asset. Several of these ads do carry "Save $950/yr On Average" as a separate headline, but Google can serve the unqualified one on its own, which is exactly why the scanner judges assets individually.
Either the creative needs fixing or the rule needs an explicit exception. Do not assume this was already reviewed and accepted; ask.
Keywords and targeting
Search side only. Demand Gen and Display are targeted by audience, not by term.
Reading these numbers correctly
The two accounts look wildly different here and the asymmetry is real. CAQ carries 16,800 keyword placements over 7,462 distinct terms. BAR carries 1,000 placements over 186 terms. CAQ is where the search experimentation happened.
One gotcha that will bite you: a keyword's criterion ID is keyed on the text and match type across the whole account, not per ad group. CAQ's 16,800 placements resolve to only 8,198 distinct criterion IDs because the same term is reused across many ad groups. If you mutate by criterion ID alone you will hit every ad group that shares it. Always address a keyword as adGroupCriteria/<ad_group_id>~<criterion_id>.
Second gotcha: keyword level conversion counts are lower than campaign level counts for the same spend, because Google does not attribute every conversion down to a keyword. Use keyword CPL to compare keywords against each other. Do not compare it against the campaign CPL in section 02.
The unit economics
Why the number is 0.5 and what would have to change for it not to be.
Strip away the campaign structure and the business is two numbers. We pay — to acquire a lead. We earn — when we sell it. Everything else is detail.
To reach 0.95× from here, one of two things has to happen, and the size of the required move is the point:
- Cost per lead has to fall from $38.45 to about $20.18, a 48% reduction, holding lead value constant.
- Or earnings per lead has to rise from $19.17 to about $36.53, a 91% increase, holding cost constant.
Neither is a bid adjustment. A 48% cut in CPL is not something smart bidding delivers on traffic that is already being bought at auction; a 91% lift in lead value is a commercial negotiation or a different lead product, not an ads change.
The honest read
The gap between what we pay and what a lead is worth is structural, not a tuning problem. The accounts are well instrumented and have been optimised hard. The evidence that this is structural rather than operational is section 03: the only cohort that ever cleared break even did it by changing the channel and format, not by bidding differently on the same traffic.
The per brand split shows the same story at two scales. BAR buys leads at $27.43 and sells at $20.38. CAQ buys at $51.78 and sells at $17.71. BAR is closer to viable because Demand Gen video buys attention more cheaply than the search auction does, not because BAR's leads are worth much more.
What changed recently
The Google Ads API change log. It reaches back 30 days and no further.
Google keeps a change log with a hard 30 day window. Everything older is gone from the API, and the only record of it is our own repository: 500 dated handover notes in .planning/handovers/ plus the commit history. If you need to know why something was done in May, that is where to look.
Within the window, the tempo is high. 15,125 changes across both accounts in 30 days, almost all of them ours, applied through the API by our own tooling rather than by hand in the web interface.
The longer chronology
Reconstructed from handover filenames, git history and campaign create dates. Every entry is anchored to a file or commit that exists in the repository.
- BAR opens. The engagement starts here.
The first vlad. campaigns go live: in-market audience Demand Gen and Display cells, followed three days later by the state level YouTube cells. Nothing in either account predates this date.
- BAR's big push, and the best coherent block in either account
21 campaigns on broad audience TV and news-urgency creative. $48,318 in the month at 0.794×.
- The VSL era begins
15 campaigns on long form video. Mixed results.
- State-split VSL launch. Best month on record.
13 campaigns, month ROAS 1.210×. This is the cohort in section 03.
- BAR goes dark
No spend for five months.
- CAQ opens, eleven months into the engagement
Demand Gen image cells; first spend lands 29 April. Ramps to $11,120 in May at 0.756×.
- The repo era starts
First handovers: URL remediation, PMax day one on CAQ, expert panels on CAQ cost per lead.
- All 28 BAR VSL campaigns removed
Operator instruction, internal compliance, not performance. The winning cohort ends here.
- 14 brand-expansion trials terminated at once
All ended in the same minute. Audience factory and value reconciler shipped.
- Mass reset
25 BAR cells paused in one second, 20 CAQ cells paused, BAR EXACT search built from scratch, 140-campaign tracking-suffix retrofit.
- Target moved from 0.95× to 1.05×
Verdict recorded: 1.05× is earned on lead value, not bought on volume.
- Clean-slate panel: the lever is the lead product, not the auction
Phase-0 applied. First Google recommendation burst on both accounts.
- AI Max switched off account wide
CAQ 125 operations, BAR 52.
- 23 campaigns created in a single day
Demand Gen open-scale, senior, vehicle-niche, and 12 state level DUI cells. Second recommendation burst.
- The auto-apply incident
Three Google recommendation subscriptions paused, AI Max hardened off across 14 campaigns, 10 ad groups reverted, a $2,692 per day budget ratchet quantified and undone, 37 keywords stripped that nobody on the team had added.
- Demand Gen fully paused on both brands
19 cells, roughly $900 a day of run rate. Head-term search pool exited: 4 cells, $1,704 a day, at 0.175× to 0.363×.
- A 6,071-event day
Seven exploration campaigns built with about 5,600 keywords, all created paused, all still at $0.00.
- Fleet-wide negative attach
31 competitor-domain phrase negatives attached across both brands, 89 dark keywords paused.
- BAR goes quiet
Last recorded BAR change at 23:08. Nothing since.
- Offer-sheet tournament goes live
8 Demand Gen concept campaigns created. Lookalike budget fence cut from $2,440 a day to $440. The Demand Gen video generator was killed at source.
- Broad versus exact experiments launched
Running on 3 CAQ campaigns through the end of August. 54 negatives applied from broad-match mining.
- Today, where this document ends
27 image attachments sourced from Google recommendations, and a new ad on the switcher campaign.
Google's recommendations, and why they matter more than they look
236 of the 15,125 changes, 1.6%, came from Google's recommendation system. That sounds negligible. It is not, because of what they changed. They split into two categories and the difference matters:
Truly autonomous: 7 events
Client type GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION, user Recommendations Auto-Apply. No human involved. All seven were on CAQ, all flipped optimized_targeting_enabled on ad groups, and all were caught and reverted in the 13 July defuse. BAR has zero, because BAR never had subscriptions.
One-tap applies: 229 events
Client type GOOGLE_ADS_RECOMMENDATIONS, user vlad@cyberlands.us. Google proposed, a human accepted the suggestion wholesale in the web interface. These are far more numerous and far more consequential than the autonomous seven. 152 on CAQ, 77 on BAR.
What the one-tap applies actually did
This is the part to internalise. Accepting a Google recommendation in the UI is not a small act here. Within this 30 day window those 229 events included:
- 45 campaign budget raises (19 CAQ, 26 BAR)
- 114 keywords injected into search campaigns nobody on the team chose (88 CAQ, 26 BAR)
- AI Max turned on across six CAQ campaigns, which can override negative keywords
- A bid strategy flipped to target impression share on a brand defence campaign
- 30 ad groups switched to optimised targeting
- A live ad's headlines and descriptions rewritten, along with its tracking template
The 13 July defuse was scoped to CAQ only. BAR's 77 events were not covered by it. Treat any unexplained keyword, budget or targeting change as recommendation-sourced until you have checked, and do not accept a recommendation in the UI on either account without understanding what it touches.
Before you touch anything
The rules that exist because something went wrong once.
- Every mutation is dry run by default. Tools take --apply or --confirm and without it they only print what they would do. Read the dry run. Every time.
- Nothing gets mutated unless its campaign name starts vlad. This is enforced in code and it is not negotiable.
- The final URL host must match the brand. CAQ goes to find.cheapestautoquotes.com, BAR to quote.budgetautorates.com. Crossing them sends a brand's traffic to the wrong entity.
- Copy changes go through compliance before deploy. Not after. The downside here is account termination, not a rejected ad. Note that 36% of what is live today already fails our own scanner (section 07), so "it is already running" is not evidence that something passed.
- Nothing auto applies bids. Tooling proposes, a human approves, then it applies. If you build something that changes money on its own, you have built the wrong thing.
- Check for Google auto-apply first when something looks strange. See section 10.
- Do not compare a paused campaign's lifetime ROAS to a live one's without checking when each ran. The 2025 BAR cohort and the 2026 CAQ cohort operated in different auctions with different creative rules.
Where to look for anything this document does not cover
- .planning/handovers/ is 500 dated notes and is the real change record beyond 30 days.
- cmd/clone-ppc/ holds the operator tooling, including everything used to build this report.
- outputs/onboarding/ holds the raw extract this page was generated from, including every ad and keyword not shown here.
- PFM is the buyer's reporting surface and the arbiter of revenue. Google Ads is the arbiter of structure.
The questions worth asking on day one
Is any part of the Demand Gen video format still permitted, given that section 03 is the only thing that ever worked? Are the 331 live ads that trip our own compliance wall a known and accepted state, or a drift nobody has looked at? What is the current spend envelope per brand, and who authorises a change to it? Who signs off copy? And is the plan to fix CAQ search or to stop buying it?
That last one matters most. CAQ responsive search ads have consumed $75,632 at 0.19× and remain the second largest block of spend in the book.