Threshold assumptions and validation status
Defaults in skills are plausible, not validated. Every numeric cutoff is
marked ASSUMPTION in the skill bodies until it has been backtested against
real optimization outcomes.
How to read a threshold
A default here is a starting point, not a recommendation with evidence behind it. Run the skill read-only first, compare what it flags against what you would have done yourself, and tune the cutoff for your vertical and geo before you let anything write.
Threshold registry
| Rule | Default | Status |
|---|---|---|
| CPA block (CPA Tune) | > 2.0× target | ASSUMPTION |
| CPA QF decrease (manual CPC) | > 1.5× target | ASSUMPTION |
| CTR fatigue drop | ≥ 30% vs prior 7d | ASSUMPTION |
| Budget cap hit | spend ≥ 95% of dailyLimit on 5/7 days | ASSUMPTION |
| Anomaly trigger | 7d vs prior 7d ≥ 40% on CPC/CVR/CPA | ASSUMPTION — no day-over-day |
| Pause teaser recovery rate | 30–70% sibling absorption | ASSUMPTION |
| Block wasted-share formula | 1 - target/actual |
ASSUMPTION |
| Apply drift warn | 10% change in spent or CPA | ASSUMPTION |
| Simulator default campaign scope | 25 active campaigns | DEFAULT — ask user if more |
Simulator campaign scope
| Constant | Value | Notes |
|---|---|---|
DEFAULT_CAMPAIGN_SCOPE |
25 | Analyze all active when count ≤ 25 |
When active campaign count exceeds 25, the agent must ask the user before Phase 2 whether to run top-25-by-spend (default), all active, or named ids.
User overrides (“all active”, explicit ids, “top 50”) always win over the default.
CPA Tune — learning phase (critical)
ASSUMPTION pending ads-team confirmation: manually blocking sources or
aggressive QF cuts while bidding.strategy is cpa (CPA Tune) may fight the
algorithm during its learning period.
Until learning is complete:
- Prefer monitor-only (
alert_anomaly) over blocks. - Suppress block recommendations with
cpa_tune_learningwhen:- Campaign age < 14 days (
ASSUMPTION), or - Conversions in lookback < 50 (
ASSUMPTION), or - User has not confirmed learning is complete.
- Campaign age < 14 days (
Replace the heuristics above with the documented learning-phase signals once they are published.
Client-configurable overrides
# Example — store in ads-mcp server config per client, not in skill files
cpa_block_multiplier: 2.0
cpa_qf_multiplier: 1.5
max_budget_shift_pct: 20
max_qf_change_pct: 25
min_source_clicks: 50
min_source_spend_usd: 10
cpa_tune_learning_min_days: 14
cpa_tune_learning_min_conversions: 50
stats_drift_warn_pct: 10
default_campaign_scope: 25