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.

Provider 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.

Final 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.

Before/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.