Copilot
Copilot is the automatic optimization and supply engine for your Meta Ads campaigns. It runs every hour, 24/7, on your real deduplicated conversions (CRM plus DURUM.ai server pixel), not on the Meta pixel estimate.
In short: Copilot cuts what does not perform, concentrates budget on winners, and (optionally) pulls from your library to launch new tests, with no manual work.
What it does
- Optimizes: cuts unprofitable ads, raises the budget of winners, reallocates continuously.
- Supplies (optional): keeps a floor of active ads and injects tests pulled from your library.
- Publishes: only approved creatives go live. By default everything is created PAUSED (a human activates afterward); direct-to-live publishing is an explicit, per-client choice.
- Logs everything: every action is automatically traced in the History tab.
Optimization (every hour)
Each hour the rule re-reads a rolling window (7 days by default) and applies your settings:
| Setting | Role |
|---|---|
| Objective | The event to optimize (lead, application, booking, sale) |
| Window | Number of days re-read each pass |
| Target cost | The target cost per conversion |
| Cut if cost above | Above it, the ad or adset is paused |
| Minimum spend before cut | Cut only after a real chance |
| Confidence (conversions) | Minimum conversions before judging |
| Adset floor budget | The guaranteed minimum per adset |
| Budget cap | The maximum to spread |
| Max reallocation | The maximum move in a single pass |
| Max efficiency | A winner can receive up to X times its share |
Each hour: re-read the window, cut losers, reallocate toward winners (progressive, capped).
Supply rules (optional)
An optimization rule can also, optionally, pull from your library so you never run out of ads.
Active-ads floor
Always keeps enough material for the algorithm. Two combinable criteria (each at zero is ignored, so you use one, the other, or both):
- By spend: at least 1 active ad per X dollars of daily spend.
- By count: a minimum of active creatives and a minimum of active adsets.
Below the threshold, Copilot pulls the best creatives from the queue and launches new tests. Scope is configurable: this campaign, or the whole account.
Test injection
Reserves a share of the budget (10 to 20 percent) to continuously test new creatives, sized by their potential. The rest of the budget stays concentrated on proven winners. This cap only throttles the creation of new adsets (which adds test budget): filling existing adsets is budget-neutral and always continues.
Anti-duplicate and variety guarantees
Copilot permanently enforces four guarantees on what it publishes:
- Unique-creatives floor at the account level: a minimum of DISTINCT live creatives across all campaigns. The same creative present in two campaigns counts as one. When below the floor, selection prioritizes never-published creatives.
- Existing-post reuse: when an already-published creative is launched again elsewhere (another adset or campaign), the new ad points to the same Meta post instead of creating a copy. Social proof (reactions, comments) accumulates on a single post.
- Never an exact copy: two live ads with the same visual AND the same text never coexist in the same adset. The same visual with different texts remains allowed (legitimate copy variants).
- Batch fill: each adset is filled up to its minimum number of ads in a single pass (adding an ad does not change the budget), then drip-fed up to the maximum.
Library and queue
- Library: your creative bank, with winners flagged automatically.
- Queue (reserve): approved creatives, ready to go live, ranked by potential.
- Smart prioritization: each waiting creative is scored on the recipe of the ads that perform for the campaign objective. A creative close to a winner moves up; one too close to what is already live moves down (avoiding near-duplicates).
Golden rule: a creative becomes usable only once approved.
Adset lifecycle
An adset is a test cell: same audience, same objective, its own budget.
- Test: created from the approved queue (the best-scored creative of an angle), with a test envelope.
- Continuous evaluation: the rule judges it every hour over the window.
- Two exits: a winner moves to the scale pool (budget raised); a loser is cut and replaced by a new test pulled from the queue.
Safety
- Created PAUSED by default: Copilot does not set an ad live on its own, a human activates. Direct-to-live publishing exists, but as an explicit per-client opt-in.
- Simulation mode by default: it shows its decisions without touching anything until you validate.
- Nothing triggers until you arm publishing for that client.
- Everything is traced: every engine pass is logged in the History tab (see below).
History (the action log)
Every Copilot pass is automatically logged in the History tab (/ads/historique) of the Ads section. It is the complete trace of everything the engine does, with zero configuration.
For each run you see:
| Element | Description |
|---|---|
| APPLIED / SIMULATION | Applied = the change was actually pushed to Meta. Simulation = the rule was in simulation mode, nothing was touched. |
| Ads cut | Every ad paused, with its spend, conversions and cost per conversion at decision time |
| Budget reallocations | Every adset whose budget moved, before and after (e.g. 325 to 350 dollars per day). A budget that was checked but did not move is not a change: it is summarized as "N adsets checked, budget unchanged". |
| Adsets paused | Adsets emptied by the cuts, whose budget was redistributed |
| Alerts and errors | Anything that prevented or limited a pass (budget not configured, Meta error, etc.) |
At the top of the page, the window totals: runs, applied runs, ads cut, budgets adjusted, adsets paused, errors, and the time of the engine's last pass.
Filters
| Filter | Options |
|---|---|
| Rule | All the client's rules, or a single one |
| Period | Last 7, 30, 90 or 180 days |
| Show | Changes only (default), ad cuts, budget reallocations, errors, or all runs (including no-change passes) |
By default the page only shows passes that changed something. Passes where the engine checked the campaign without touching anything remain available via "All runs".
Why it matters
History makes Copilot verifiable: every dollar of budget moved and every ad cut is traced, with the numbers that motivated the decision. Applied runs containing a real change are kept with no time limit.