---
name: manage-the-learning-phase
description: >-
  Manages the Meta learning phase - the exploration window an ad set enters at launch or after a significant
  edit, where delivery is broader while the algorithm hunts its ~50 optimization events in a rolling 7-day
  window. Below that threshold past the first week the ad set is Learning Limited: a structural problem, not
  something patience fixes. Catalogs which edits reset the clock (budget over ~20%, audience, optimization
  event, creative, bid strategy, or schedule changes), then sequences unavoidable edits to minimize thrash -
  batch into one pass, time for low-traffic windows, and hold off judging until the ad set clears the
  threshold again. Reach for it before editing any live or recent ad set, and when performance looks
  volatile from repeatedly re-entering learning. It ends at ad sets classified as learning, Learning
  Limited, or exited - structural fixes live in exit-learning-limited and consolidate-fragmented-account,
  floor sizing in set-minimum-viable-budget.
---
# Manage the Learning Phase

## Purpose
During learning Meta explores broadly to find who triggers the optimization event, so cost-per-result is
volatile and typically worse than steady state, this is expected, not a sign of a bad build. Exiting
depends on banking roughly 50 optimization events within a rolling 7-day delivery window. Any edit that
materially changes what's being optimized restarts that clock. Left uncoordinated, a stream of small
edits keeps an ad set perpetually exploring instead of ever converging on efficient delivery. This skill
is the discipline layer: classify status correctly, know what resets the clock, and sequence changes to
pay the reset cost once instead of repeatedly.

## When to run
- An ad set just launched or was just significantly edited and needs a plan for being left alone.
- Multiple ad sets are flagged Learning Limited and it's unclear whether the fix is time, budget, or
  structure.
- Several small edits are queued and need sequencing to minimize learning resets.
- Performance looks inconsistent, and on inspection the ad set is still in, or keeps re-entering, learning.

## When NOT to run
- The ad set is structurally unable to reach ~50 events (audience too narrow, event too rare) →
  `exit-learning-limited` or `consolidate-fragmented-account` fix the cause; this skill manages the
  phase, not the underlying structure.
- The daily budget itself needs sizing against the ~50-event floor → `set-minimum-viable-budget`.
- The bid strategy hasn't been chosen yet → `select-bid-strategy`.
- Value optimization prerequisites (purchase volume or value variance) are the actual blocker →
  `set-up-value-optimization`.

## Prerequisites
- `optimization_goal` and `bid_strategy` already set (`select-campaign-objective`, `select-bid-strategy`).
- Ability to pull per-ad-set optimization-event counts and delivery status via
  `mads_run_insights` / `mads_get_insights`.
- A list of any edits currently queued for the account, so they can be batched instead of trickled in.

## Procedure
1. **Pull current learning status.** Run `mads_run_insights` per ad set for the trailing 7 days:
   optimization-event count and delivery status. Under ~50 events in that window means the ad set is
   still learning, or Learning Limited depending on how long it has been stuck there.
2. **Classify each ad set.** Under 7 days old and under ~50 events = normal learning, leave it alone.
   Over 7 days old and still under ~50 events = Learning Limited, the fix is structural (event choice,
   budget, audience breadth), not patience; route to `exit-learning-limited` or
   `consolidate-fragmented-account`. At or above ~50 events with stable delivery = exited; safe to
   evaluate and edit normally.
3. **Before any edit, check whether it resets learning.** Resets: a budget change of roughly more than
   20%, an audience or targeting change, an optimization event change, a creative swap, a `bid_strategy`
   change, or an ad-set schedule change. Small budget nudges under ~20% and non-substantive edits (name,
   non-delivery-affecting toggles) generally do not.
4. **Batch queued edits into one pass.** If several reset-triggering edits are pending on the same
   entity, say a budget increase and a new creative, apply them together in one commit rather than
   spreading them across days; each separate edit restarts the clock independently.
5. **Time the change for a low-traffic window.** Pull the hourly/daily delivery breakdown from
   `mads_run_insights` and push the batched edit during the ad set's lowest-delivery period, so
   re-entering learning costs the least live spend.
6. **Preview, diff, and get approval.** Plain-English diff, entity, field(s), from → to, expected
   impact, and an explicit note that this resets learning and roughly how long re-exit should take
   (another ~50 events at the current delivery pace). **HUMAN STEP.** Get explicit approval before
   committing, since the account will look worse before it stabilizes.
7. **Commit via `mads_update_adset`** (or `mads_update_campaign` for campaign-level fields), and log the
   reset timestamp so post-change evaluation knows to exclude the following ~7 days.
8. **Hold off judging performance until re-exit.** No further edits and no verdict on cost-per-result
   until the ad set clears ~50 events again post-change, reacting to mid-learning numbers is what causes
   edit thrash in the first place.
9. **Re-check status** with the same `mads_run_insights` pull and confirm the ad set has exited
   before resuming normal optimization cadence.

## Decision rules
- IF an ad set is under 7 days old and below ~50 events THEN leave it alone, this is expected learning,
  not a problem to solve.
- IF an ad set is over 7 days old and still below ~50 events in a rolling 7-day window THEN it is
  Learning Limited, treat as structural (`exit-learning-limited` or `consolidate-fragmented-account`),
  not something more time fixes on its own.
- IF a pending edit changes budget by roughly more than 20%, or changes audience, optimization event,
  creative, bid strategy, or schedule THEN it resets learning, plan the timing and batching accordingly.
- IF a pending edit changes budget by less than ~20% or is non-substantive THEN it can usually go in
  without a fresh reset, still preview and confirm the impact before committing.
- IF multiple reset-triggering edits are queued for the same entity THEN batch them into a single commit, sequential separate edits multiply resets instead of paying the cost once.
- IF several thin ad sets are each separately Learning Limited on the same audience or event THEN
  consolidation is likely the real fix, hand off to `consolidate-fragmented-account`.
- IF the daily budget can't plausibly deliver ~50 events/week even with correct structure THEN the floor
  itself is wrong, hand off to `set-minimum-viable-budget` before touching anything else.
- **Done means:** every ad set touched is classified as learning, Learning Limited, or exited; any queued
  edits were batched and timed rather than trickled in; and no performance verdict was drawn before
  re-exit.

## Common failure modes
- **Judging performance mid-learning.** Cost-per-result during learning is not representative; pausing
  or "fixing" an ad set off days 1-5 numbers is the single most common self-inflicted wound.
- **Trickling edits in one at a time.** Each separate reset-triggering change restarts the clock; five
  small edits over five days can keep an ad set in learning indefinitely.
- **Mistaking Learning Limited for "needs more time."** Past ~7 days without ~50 events, more time alone
  does not fix it, the structure (event, budget, audience) does.
- **Fragmenting a scarce event across many ad sets** so none individually reaches ~50/week, while the
  account-level event volume would easily have supported one or two ad sets.
- **Editing during peak delivery hours**, maximizing how much live spend lands inside the post-reset
  exploration window.

## Related skills
- Before: `select-bid-strategy`, `select-campaign-objective` (define what's being optimized).
- After / structural fixes: `exit-learning-limited`, `consolidate-fragmented-account`.
- Related: `set-minimum-viable-budget` (sizes the floor that makes ~50 events/week reachable).
