PPC Agent (Profasee: Marko)¶
Adjusts bids daily using real margins, mines search terms, and kills wasted ad spend. Highest-value action agent after demand, and the data is already flowing.
Already built¶
scripts/pull_ad_spend.pypulls SP, SB, SD spend nightly intoraw.ad_spend_daily.agg.ad_spend_unified_dailyandagg.ad_spend_unified_asin_dailygive clean per-day, per-ASIN spend (API preferred over backfill sources; see Forecasting ยง2-3).raw.search_query_performance(SQP) for search-term data.agg.profit_dailyfor real per-day margin, so bids can be set against true contribution, not revenue.
Needs building¶
- Read side (brief, do first): detect wasted spend (spend with no/low sales per ASIN or term over a trailing window), low-ACOS scaling opportunities, and search terms to harvest or negate. Pure analysis over existing tables.
- Write side (action mode): Amazon Ads API bid/budget/keyword writes via
lib_sticky.ads_api_request+get_ads_api_creds. This is real money movement, so it goes throughguarded_actionwith spend caps and no-fly keyword lists.
Recommends (for the brief)¶
- Kill waste: keyword/ASIN, spend with zero or negative-contribution sales over N days, dollars wasted.
- Scale winners: terms/campaigns under target ACOS with headroom.
- Harvest / negate: search terms from SQP to add as keywords or to negate.
Actions (action mode)¶
- Adjust bids toward a target ACOS computed from real margin (
agg.profit_daily). - Pause keywords/ASINs flagged as pure waste.
- Pause ad spend on ASINs the Demand agent flags as stockout-risk (the headline cross-agent behavior).
Guardrails (critical, this one spends money)¶
- Daily and per-action spend caps enforced in
guarded_action. - Keyword/ASIN no-fly list (hero terms never touched without approval).
- Before-state logged on every bid/budget change for rollback.
- Starts
observe, thenapprove-each, thenautonomouswithin caps.