Ad Account Diagnostic
Diagnose the root cause of an underperforming paid ad account - why the ads stopped working, why CPA went up, why ROAS dropped - instead of defaulting to 'increase the budget'. Weighs tracking, account structure, targeting, creative, bidding and budget, offer, and external forces, and returns a prioritised verdict with evidence and confidence. Covers B2B and B2C on search, paid social, video, and native. Use whenever the user mentions an ad account audit, a campaign structure review, wasted ad spend, rising cost per lead, or says their ads used to work - even if they never say 'diagnostic'. Diagnosis only, and it stops at the click: post-click page problems are mbfinotti/advertising-skills@paid-landing-page-audit and creative decay is mbfinotti/advertising-skills@ad-creative-fatigue.
- Skill ID
- mbfinotti/advertising-skills/ad-account-diagnostic
- Publisher
- mbfinotti
- Repository
- advertising-skills
- Installs
- 889
- Files
- 5
- License
- MIT
- Synced
- Oct 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
mbfinotti/advertising-skills/ad-account-diagnosticInstalls these files- SKILL.md
- evals/evals.json
- references/examples.md
- references/layer-evidence.md
- references/metric-decomposition.md
What this skill tells the agent
Account Diagnostic
Find the root cause of an underperforming ad account before anyone touches it. The whole discipline is refusing the reflex fix: an account that "stopped working" has at least seven candidate failure layers, and the most common responses - raise the budget, swap the creative, blame the algorithm - each treat one unproven hypothesis as a verdict. This skill works the layers in a fixed order, measurement first, because every downstream number is read off the conversion signal: as Adspirer puts it, the checklist is "ordered the way an experienced PPC manager actually works it: measurement first (because every other number is wrong if tracking is broken)".
It decomposes the metric chain to localise the failing link before naming a cause, compares the account against its own history rather than industry benchmarks, and refuses to issue any verdict the data cannot support. The output is a diagnosis with confidence, evidence, and a prioritised handoff plan - never an executed change.
This skill stops at the account boundary; everything past the click hands off elsewhere, and this skill never becomes a budget skill - it exists precisely because "increase the budget" is the wrong default.
- Past the click (message match, page friction, the page fix list):
mbfinotti/advertising-skills@paid-landing-page-audit. This skill only flags "the evidence points downstream of the click" and hands off. - Fragmentation verdict (merge plan):
mbfinotti/advertising-skills@ad-campaign-consolidation. - Creative-layer verdict (decay analysis):
mbfinotti/advertising-skills@ad-creative-fatigue, which hands back here when the cause is not creative - the two are reciprocal. - Tracking verdict (fix checklist):
mbfinotti/advertising-skills@ad-conversion-tracking. - Cross-platform discrepancy quantification:
mbfinotti/advertising-skills@ad-attribution-gap. - Search-term mining:
mbfinotti/advertising-skills@ad-negative-keywords. - Targeting design:
mbfinotti/advertising-skills@ad-audience-targeting. - Budget and bidding decisions:
mbfinotti/advertising-skills@ad-budget-pacing,mbfinotti/advertising-skills@ad-spend-allocation,mbfinotti/advertising-skills@paid-media-scaling, andmbfinotti/advertising-skills@ad-bidding-strategy.
Interview
Ask before opening any data. One question per message; offer multiple-choice answers where possible; skip anything already supplied or visible in the data.
- Which platform(s) does the account run on? (search / paid social / video / native / several)
- B2B or B2C/ecommerce?
- Monthly spend, and roughly how many conversions per month on the event the account optimises to? (Decides whether the Evidence Gate can clear at all.)
- What window is under suspicion - when did performance degrade, and against which prior period is it being judged?
- What changed, and exactly when? (Budget, bids, creative, targeting, optimization event, landing page, site release, consent banner, price, promo calendar - dates matter more than the list.)
- What can you export, and at what granularity? (Per-campaign per-day is the working minimum; per-ad-set and per-ad breakdowns unlock the localisation step.)
- What is the target CPA/ROAS - and is it derived from unit economics or inherited from a dashboard?
- Is CRM or backend revenue data reachable for reconciliation? (Yes, directly / yes, via someone / no.)
- Which attribution window and counting settings does reporting use, and did they change in the window?
- Who will implement the fixes, and what is their effort ceiling - hours available, whose hands (developer, marketing ops, creative studio, page owner), and how reversible a change is allowed to be? (The handoff plan is addressed to them; see Prioritisation for how a ceiling reshapes the queue.)
- By what date does the recovery have to show up in reporting? (A hard deadline promotes fast-acting fixes - tracking repair, unblocking a genuinely budget-capped campaign - and demotes offline-outcome wiring and creative programmes, whose payoff lands a window or two later.)
- One-off recovery, or a compounding asset? (A compounding mandate promotes the offline-outcome feedback loop and structural consolidation above the quick wins; see Prioritisation.)
Workflow
- Run the Interview; collect every answer before touching data.
- Reconcile before interpreting. Compare platform-reported conversions against CRM/backend truth over a lag-mature window, against OnlyDeb's practitioner reference points:
- Gap above roughly 40%: something is broken - stop, record a tracking FAIL, and hand off.
- Gap within roughly 10%: proceed to the other layers.
These are attributed starting points, not laws - the account's own historical ratio, and whether that ratio is _stable_ week to week, is the real criterion. If backend data is unreachable, every later finding carries at most medium confidence, and the verdict must say so.
- Decompose the failing metric with references/metric-decomposition.md. Chain the funnel - impressions → clicks → conversions → revenue - and express the outcome as CPM × CTR × CVR × AOV (Pigeon Digital) to find which single link actually moved. Name no cause before the failing link is localised.
- Break down and compare. Pull the failing metric by campaign, then ad set, then ad, and compare each against the account's own history - never industry benchmarks. AdStellar's rule for CPM generalises: elevated evenly across everything points external; concentrated in one branch points to a targeted internal cause. This step is what separates internal from external causes.
- Walk the layers in fixed order (below) using references/layer-evidence.md. For each layer record one of four states -
pass(evidence rules it out),FAIL(evidence confirms it),unknown(evidence missing),not applicable- with its own severity and confidence. Never collapse to a binary:unknownis notpass, and treating an unchecked layer as clean is the most common way audits go wrong. - Apply the Evidence Gate (below). If it fails, the verdict is
insufficient evidence: state exactly what additional days, spend, or access would clear it, and stop. No verdict on underpowered data. - Issue the Root-Cause Verdict (block below; worked versions in references/examples.md). A compound verdict - two unrelated confirmed causes - is legitimate; rank them.
- Rank the findings by efficiency (Prioritisation section) and write the handoff: which sibling skill or owner takes each finding, in rung order.
- Log the prediction. Every verdict must state which metric should move, in which direction, by roughly how much, once the recommended fix ships - this is the raw material for the Measuring section.
- Set a re-check date one full comparison window (at equal attribution-lag maturity) after the fix ships.
- If your harness has persistent memory, memorise the account's baselines, the per-layer screen, the verdict, fixes applied, predictions, and re-check dates, so the next run starts from history instead of re-deriving it. If it does not, emit a short state block the user can paste into the next session.
If your harness can read the exports or run the calculations, compute every step directly; otherwise emit the exact export steps and spreadsheet formulas (columns, ratio, delta (current - baseline) / baseline) for the user to run and report back.
The Layer Order
Fixed order, because each layer's evidence is only readable if the layers before it hold:
- Tracking corrupts every number.
- Structure corrupts the data pooling and learning that targeting and creative reads depend on.
- Bidding reads assume the auction inputs above it are sane.
- Offer & downstream sits past the click.
More from mbfinotti
Use this skill in a project
Open any RiverX project, search the Skills panel for mbfinotti/advertising-skills/ad-account-diagnostic, and install it in one click.
