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.

Reviewed and correctedIndependent review · 21 Sep
Settings checkedbudget correction verified
21 + 21enabled variant 1 + paused alternate
Open checkspolicy, paid attribution, claim meaning

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 readbackHistorical provider UI screenshot. Independent settings readback: 2026-09-21 21:28 UTC.

❌ 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 5,538.61 HUF/day after independent correction.
  • MTD spend is 85,929.76 HUF. The former calculation understated unchanged local-pool exposure. Its conservative upper bound was 236,052.56 HUF, exceeding the 215,000 HUF ceiling.
  • Corrected bound: 84,348.20 HUF local reservation + 75,265.66 HUF Generic spent + 55,386.10 HUF Generic calendar-day allowance = 214,999.96 HUF. This is a documented-rule calculation, not an account-wide hard cap or spend guarantee.
Google Ads budgets and biddingHistorical screenshot above predates the correction. Current authority: scripts/ads/budget_control.py and the independent review receipts. Generic provider readback is 5,538.61 HUF/day.

❌ 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.
CORRECTED · Generic reduced from 7,643.87 to 5,538.61 HUF/day. Local pool unchanged. Monday control now resets the catch-up amount before a new month. Failure to run on the local host remains an operational risk. The 190,000 HUF floor is demand-dependent.
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.
  • Business site supports fixed/advance phone pricing and departure within 10 minutes. Reviews endpoint returned 351 reviews at 5.0. Departure timing does not fully substantiate the broader “Segítünk akár 10 percen belül” promise. Exact owner-supplied copy is preserved, with that interpretation open.
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. Confirm the operational meaning of the 10-minute assistance wording.
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 corrected prompt reserves unchanged local-pool exposure, checks real budget history, account-wide spend and reporting lag, and sets a safe next-month budget on the final Monday before month-end.
  • 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 remains ACTIVE, Monday 15:00 Budapest. Durable controller: scripts/ads/budget_control.py. Same-object readback and validation required. No claim of hard enforcement when the local host or scheduled run is unavailable.
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 record includes an independent review correction above the historical execution state.
  • 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.
INDEPENDENT REVIEW · Fresh account readbacks pass the agreed settings. Budget exposure and stale operating instructions were corrected. Review evidence: .tmp/ads-final-review-20260921/. Earlier receipts remain historical. Policy approval, genuine paid attribution and the exact response-time claim remain open.