---
name: coppica-optimization-loop
description: Use on a recurring cadence (weekly or biweekly) to improve a client's copy from real conversion signal. This is Coppica's flagship loop: rank winners, diagnose why, iterate on them, redeploy with tracking, and report. Run it as a scheduled routine.
---

# The optimization loop

This is the routine that turns Coppica from a generator into a compounding system. Run it on a
cadence per client (weekly or biweekly works well). It assumes outcomes are being reported (see
`coppica-close-the-loop`); if they aren't, there is nothing to learn from yet.

## The loop

1. **Pull signal.** Review outcomes and attribution since the last run. `coppica-signal-report`
   gives you the human-readable version; for the loop you mainly need to know which outputs have
   accumulated conversions and feedback.
2. **Rank.** `coppica_rank_outputs` (2 to 20 outputs) returns a signal-informed ordering by
   taxonomy weight, channel affinity, novelty, and feedback density. It returns a
   `confidence_tier`. **Respect it**: this is prioritization, not prediction. Low confidence means
   treat the ranking as a tiebreaker, not gospel.
3. **Diagnose.** For top performers and notable underperformers, call `coppica_diagnose_output`.
   It explains per-technique contribution and family context, and returns the appropriate
   `mutation_strategy` for the next step.
4. **Iterate on winners.** `coppica_iterate_on_winner` generates N variations of a deployed
   output using the recommended `mutation_strategy` (`refresh_hook`, `pivot_angle`,
   `tighten_close`, or `voice_swap`). Variations inherit lineage automatically.
5. **Redeploy with tracking.** Deploy the new variants and attach tracking links + outcome
   reporting for each (load `coppica-close-the-loop`). Without this, the next loop is blind.
6. **Report.** Summarize for the user in plain language: what you scaled, what you killed or
   paused, what you spun up, and why.

## Decision branches

- **A winner is clearly fatigued** (declining outcomes)? Diagnose, then `refresh_hook` or
  `pivot_angle`.
- **Confidence tier is low across the board?** You need more outcomes. Hold iteration, keep copy
  running, and revisit next cadence.
- **An output is a consistent loser?** Pause it; diagnose to learn why before generating more in
  that direction.

## Verify

Each iterated variant exists with inherited lineage, is deployed, and has a tracking link.

## Cadence

Schedule this. The tail of small, compounding improvements is the whole point; a single run is
just a generation.
