Verification and Constraints

Live acceptance board for the Csupi Google Ads end state. The initial plan is black. Executor progress, evidence, and changed status are added in blue.

Configuration verifiedADS-C01 revision 2
7 / 7deliverables reconciled
21 + 21enabled variant 1 + paused alternate
2 external gatespolicy review and genuine paid attribution

End goal system

ConfirmedAssumptionOpen
flowchart TD
  Q["Mobile searcher
Weekdays 07:45–19:00"] --> S{"Search intent
Local name or generic"} S -->|Named location| L["Location campaigns
Hungary-wide exact terms"] S -->|Generic| G["Generic campaign
50 km presence radius"] L --> LA["Local RSA pair
Variant 1 enabled, variant 2 paused"] G --> GA["Generic RSA pair
Variant 1 enabled, variant 2 paused"] LA --> P["Phone interaction
Reveal or widget · Count One"] GA --> P P --> O["Call outcome
Qualified lead and job open"] O --> W["Weekly control
Monday 15:00 report and permitted pacing"] W --> N["Notion evidence
Settings, spend, proof, risks"] W --> B["Monthly spend band
190k–215k HUF, midpoint 200k"] class Q,S,L,G,LA,GA,P,W,N,B confirmed class O open classDef confirmed fill:#E8F5E9,stroke:#2E7D32,color:#173B25 classDef assumption fill:#FCE4EC,stroke:#C2185B,color:#5B1430 classDef open fill:#FFFFFF,stroke:#94A3B8,color:#475569,stroke-dasharray:5 5

Pathway to the goal

flowchart LR
%%{init: {"flowchart": {"nodeSpacing": 20, "rankSpacing": 28}}}%%
  C1["Current Ads
account

21 active
Search campaigns"] --> A["Reconcile final
contract

Preserve exact
user decisions"] C2["Current
measurement

Dispatch proven,
attribution still open"] --> A C3["Current review
plan

Notion holds the
dated baseline"] --> A A --> X["Apply bounded
settings

Ads, eligibility,
bids, schedule,
devices"] X --> V["Read back
provider state

Prove targets and
protected fields"] V --> T["Prove measurement
path

Controlled GA4 test,
paid proof pending
if necessary"] T --> R["Activate weekly
control

Report and authorized
pacing"] R --> E["Verified operating
system

Live account, Notion
evidence, recoverable
changes"] class C1,C2,C3,A,X,V,T,R,E confirmed classDef confirmed fill:#E8F5E9,stroke:#2E7D32,color:#173B25 classDef assumption fill:#FCE4EC,stroke:#C2185B,color:#5B1430 classDef open fill:#FFFFFF,stroke:#94A3B8,color:#475569,stroke-dasharray:5 5
campaign eligibilityprovider readback

Configure campaigns for approved traffic

21 Search campaignssettled geo/device/schedule rules

Make only eligible mobile searches enter the correct local or generic campaign during the approved hours.

INPUT: https://ads.google.com/ · /Users/agency/Documents/Agty/csupi/deliverables/ads-junior-plan-20260921/plan.md

Verification and constraints

✅ Passed

  • 21 of 21 campaigns are Search-only with Search Partners and Display off.
  • Each campaign has explicit DESKTOP 0, MOBILE eligible, and TABLET 0 criteria. Campaign inheritance makes every enabled ad group mobile-only.
  • Each campaign has five exact schedules, Monday–Friday 07:45–19:00 Europe/Budapest.
  • Generic has one 50 km Budakeszi proximity with PRESENCE. The 20 local campaigns each have only Hungary geo target 2348.
  • Campaign IDs, 86 exact keywords, and 21 final URLs match the before-state.
Google Ads campaign readbackProvider UI and final-provider-readback.json, verified 2026-09-21 20:44.

❌ Negative checks passed

  • No desktop or tablet eligibility remains.
  • No Search Partners or Display network is enabled.
  • No local campaign retains city or radius narrowing.
  • No Generic positive location exists outside its single proximity criterion.
VERIFIED · 21 campaigns, 21 enabled ad groups, 63 explicit campaign device criteria, 105 schedules, 20 Hungary criteria, and one Generic proximity. Receipt: .tmp/ads-executor-20260921/final-provider-readback.json.
CPC controlsmonthly pacing

Set bids and budgets to limits

location cap 1,300 HUFgeneric cap 1,400 HUF

Protect local eligibility first while pacing total monthly spend inside the approved band.

INPUT: https://ads.google.com/ · monthly band 190,000–215,000 HUF · target 200,000 HUF

Verification and constraints

✅ Passed

  • All 20 local enabled ad groups read 1,300 HUF CPC. Generic reads 1,400 HUF.
  • All 20 local campaigns reference one shared budget, resource 15877360476, at 5,263.15 HUF/day.
  • Generic exclusively owns resource 15882216229 at 7,643.87 HUF/day.
  • Fresh MTD spend is 85,929.76 HUF. Ten calendar days including the change day produce a conservative aggregate provider monthly limit of 214,999.96 HUF.
  • Seven future eligible weekdays at average budgets give 176,278.90 HUF capacity. Google may pace higher on scheduled days, subject to 2× daily and the monthly limit. Lower-band delivery is not guaranteed.
Google Ads budgets and biddingFinal model: final-pacing.json. Google budget-change and spending-limit rules are linked in the evidence manifest.

❌ Negative checks passed

  • No shared budget was duplicated or multiplied by 20.
  • No CPC cap was removed.
  • Remaining weekdays were not used as the provider monthly-limit denominator.
  • No future spend, lead volume, or exact month-end result is promised.
VERIFIED · Revision 2 reduced Generic from 11,032.60 to 7,643.87 HUF/day after provider-limit reconciliation. The 200,000 HUF figure is a midpoint, while 214,999.96 HUF is the current conservative post-change provider limit.
2 local RSAs2 generic RSAs

Publish approved ads to campaigns

user-supplied Hungarian copykeyword insertion

Allow only the approved pinned headline sequences and supplied descriptions to display.

INPUT: exact copy in /Users/agency/Documents/Agty/csupi/goals/csupi-google-ads-executor-goal-20260921.refined.md

Verification and constraints

✅ Passed

  • Each campaign has one enabled variant 1 and one paused variant 2 manual alternate. Google cannot choose between headline variants.
  • All managed RSAs contain exactly three headlines pinned to H1, H2, and H3 and exactly the three approved descriptions.
  • Local H1 is valid {KeyWord:Autómentés}. All 86 exact keywords are at most 24 characters and the 10-character fallback is within the 30-character limit.
  • Legacy ads are paused. Campaign text automation and final-URL text expansion are opted out.
  • Claim proof: current public business site states phone-fixed pricing, exact advance pricing, and departure within 10 minutes. Current reviews endpoint returned 351 reviews at 5.0.
Provider export contains the local, motorway, and Generic managed RSA pairs. Character and claim receipts: copy-character-receipt.json and claim-substantiation.json.

⚠ External gate

  • All 42 managed RSAs remain REVIEW_IN_PROGRESS / UNKNOWN.
  • Policy approval is not inferred from submission.
  • H3 and a second description may be omitted by Google on an impression.
  • No ad-strength or sparse performance winner is claimed.
VERIFIED CONFIGURATION · 21 enabled variant-1 RSAs plus 21 paused variant-2 alternates. PENDING EXTERNAL · Google policy review for all 42. Exact per-ad readback is in final-provider-readback.json.
GA4 receiptAds conversion readback

Verify phone conversions through reporting

reveal buttonsfloating widgettel_szam_katt

Prove the real measurement path without manufacturing a lead or mislabeling a click as a completed call.

INPUT: https://analytics.google.com/ · https://tagmanager.google.com/ · https://ads.google.com/

Verification and constraints

✅ Passed

  • A controlled tagged browser session exercised both number reveal and floating widget paths.
  • GA4 realtime changed from zero rows to two tel_szam_katt events at minutesAgo 01.
  • Google Ads action remains primary and ONE_PER_CLICK.
  • DOM receipt found 10 GFN links, one revealed number state, and one widget control.
Controlled phone event verificationBefore/after GA4 receipts: ga4-realtime-20260921T202427.json and ga4-realtime-20260921T202506.json.

⚠ External gate

  • No real call was placed.
  • No paid ad was clicked and no fake paid conversion was imported.
  • The two events do not prove paid attribution, a connected call, a qualified lead, a job, revenue, or profit.
  • No caller data was stored.
VERIFIED INSTRUMENTATION · Reveal and widget delivered two provider-visible GA4 events. PENDING EXTERNAL · a legitimate paid interaction must prove Ads attribution naturally.
Codex automationNotion weekly report

Create weekly pacing automation

Monday 15:00 BudapestGeneric pacing authority

Create a recoverable weekly run that reports evidence and adjusts only the authorized pacing control.

INPUT: Codex Automations · https://app.notion.com/p/3e29cef986ad8119b0faf2495305b25d

Verification and constraints

✅ Passed

  • csupi-weekly-ads-pacing is ACTIVE in project 🚗 CsupiAutómentő for Monday 15:00 Europe/Budapest.
  • The saved prompt reads fresh Ads and GA4, models calendar-day provider limits, budget history, local reservation, 2× daily limits, 30.4× limits, and reporting lag.
  • Only the exclusively owned Generic budget may be mutated. Missing or ambiguous evidence forces a no-op.
  • The immediate authenticated test read Ads and GA4, wrote this dated Notion record, and provider-read the page back.
  • No duplicate matching active automation exists.
Provider receipt: /Users/agency/.codex/automations/csupi-weekly-ads-pacing/automation.toml. Notion test receipt is shown in the next item.

❌ Negative checks passed

  • No local budget, CPC, ad, keyword, geo, device, schedule, network, goal, billing, or payment authority exists in the automation.
  • No weekly mutation is allowed when identity, ownership, spend, lag, budget history, or forecast is ambiguous.
  • No duplicate Notion date entry is permitted.
  • No exact spend or job outcome is promised.
VERIFIED · Automation provider readback is ACTIVE. The prompt was revised after ADS-C01 revision 2 and preserves Generic-budget-only mutation authority.
Notion implementation record

Update Notion plan with evidence

existing Activity plandecision transcript

Turn the dated recommendation into an exact record of decisions, live state, risks, rollback, and ownership.

DELIVERABLE: https://app.notion.com/p/3e29cef986ad8119b0faf2495305b25d

Verification and constraints

✅ Passed

  • The existing canonical Activity page was updated in place. Its historical campaign inventory remains present.
  • The new top section records DECIDED, APPLIED, VERIFIED, PENDING, and UNKNOWN states, exact copy, rollback paths, measurement, and automation.
  • Provider re-fetch found the execution heading, RSA state, policy gate, automation ID, and pacing values.
  • No caller information was added.

❌ Negative checks passed

  • No competing canonical page was created.
  • No historical inventory was replaced or deleted.
  • Paid attribution and commercial outcomes remain visibly pending or unknown.
  • Configuration is not labeled profitable performance.
VERIFIED · Notion provider readback preserved the original long-form campaign inventory and added the dated live execution section at the top.
final evidence bundlerollback map

Prove final account state

all provider readbackslive verification board

Demonstrate the integrated end state and keep each material change recoverable.

DELIVERABLE: /Users/agency/Documents/Agty/csupi/.tmp/ads-executor-20260921/ · this live review URL

Verification and constraints

✅ Passed

  • final-verification.json passes ADS-C01 revision 2 with 21 campaigns, 21 enabled ads, and 21 paused alternates.
  • Before/after comparison confirms the same 21 campaign IDs, same 86 enabled exact keywords, and same 21 final URL sets.
  • Every mutation class has validation, apply response, same-object readback, and before-state files.
  • The final evidence manifest records expected, actual, timestamp, receipt, rollback, and PASS/PENDING status.
Evidence root: /Users/agency/Documents/Agty/csupi/.tmp/ads-executor-20260921/
Rollback starts with before-settings.json, before-criteria.json, and before-ads.json.

⚠ Remaining unknowns

  • 42 managed RSAs await Google policy review.
  • Genuine paid attribution awaits a legitimate future interaction.
  • Qualified calls, jobs, revenue, and profit are UNKNOWN.
  • The 190,000 HUF lower band depends on real demand and provider pacing. It is not forced through broader traffic.
FINAL CONFIGURATION VERIFIED · Board, Ads provider state, GA4 receipts, Notion, automation, and manifest agree. External gates remain explicit and do not masquerade as completed business outcomes.