Ad Creative Fatigue Detector
SKILL.md
HOW_TO_USE.md
sample_input.json
expected_output.json
skillscreativeSKILL.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
# Ad Creative Fatigue Detector
Your best ad today is tomorrow's worst performer. Catch fatigue before it kills your CPA.
## Core Philosophy
**Creative fatigue is inevitable.** Every ad has a lifecycle. The question isn't if it will fatigue, it's when, and whether you'll catch it in time.
**The Fatigue Trap:** Most advertisers notice fatigue after it's already cost them thousands. By the time CPA spikes, the damage is done.
**The Three Laws of Creative Fatigue:**
1. **Frequency is the leading indicator:** High frequency = fast fatigue
2. **CTR decays before CPA spikes:** Watch click-through rate, not just cost
3. **Winners fatigue fastest:** Your best ads get the most impressions, and burn out quickest
---
## Required Context
### Must Have
**1. Creative Performance Data**
For each active ad/creative:
- Ad name or identifier
- Format (video, image, carousel, etc.)
- Impressions (total or daily)
- Click-through rate (CTR)
- Days running
- Current CPA or conversion rate
**2. Time Series Data**
At minimum:
- Performance by week (CTR and/or CPA)
- OR performance comparison: first 7 days vs. last 7 days
### Strongly Recommended
**3. Engagement Metrics (especially for video)**
- Hook rate / thumb-stop rate (% watched 3+ seconds)
- Average watch time or % completion
- Engagement rate (likes, comments, shares)
**4. Frequency Data**
- Ad-level or ad set-level frequency
- Audience size
- Days since launch
**5. Platform Context**
- Which platform (Meta, Google, TikTok, LinkedIn)
- Campaign type (prospecting vs. retargeting)
- Audience type (broad vs. narrow)
### Nice to Have
- Historical performance of similar creatives
- Baseline metrics for this account/vertical
- Creative refresh history (when were new ads added?)
- Seasonal context
---
## Fatigue Detection Framework
### Primary Fatigue Indicators
**Indicator 1: CTR Decay**
The most reliable early warning sign.
| CTR Change | Fatigue Level | Action |
|------------|---------------|--------|
| Stable (ยฑ10%) | None | Monitor |
| -10% to -20% | Early | Prepare rotation |
| -20% to -35% | Moderate | Rotate within 1 week |
| -35% to -50% | Severe | Rotate immediately |
| >-50% | Critical | Pause, replace now |
**Indicator 2: Frequency Threshold**
Platform-specific thresholds where fatigue accelerates:
| Platform | Prospecting | Retargeting | Critical |
|----------|-------------|-------------|----------|
| Meta | 2.5-3.0 | 4.0-5.0 | >6.0 |
| TikTok | 3.0-4.0 | 5.0-6.0 | >7.0 |
| LinkedIn | 4.0-5.0 | 6.0-8.0 | >10.0 |
| Google Display | 3.0-4.0 | 5.0-6.0 | >8.0 |
| YouTube | 2.0-3.0 | 3.0-4.0 | >5.0 |
**Indicator 3: Hook Rate Decay (Video)**
For video ads, watch the first 3 seconds.
| Hook Rate Change | Status |
|------------------|--------|
| -0% to -15% | Normal variance |
| -15% to -30% | Early fatigue |
| >-30% | Severe fatigue |
**Indicator 4: CPA Inflation**
Lagging indicator, by the time CPA rises, you've already lost money.
| CPA Change | Status |
|------------|--------|
| +0% to +15% | Acceptable variance |
| +15% to +30% | Fatigue likely present |
| >+30% | Fatigue confirmed |
---
### Fatigue Velocity Factors
**Factors that accelerate fatigue:**
| Factor | Impact | Why |
|--------|--------|-----|
| Narrow audience | Fast fatigue | Same people see ad repeatedly |
| High spend | Fast fatigue | Burns through audience quickly |
| Retargeting | Fast fatigue | Small pool, high frequency |
| Single creative | Fast fatigue | No variety to spread impressions |
| Static image | Moderate fatigue | Less engaging than video |
| Viral creative | Fast fatigue | Algorithm pushes hard, burns fast |
**Factors that slow fatigue:**
| Factor | Impact | Why |
|--------|--------|-----|
| Broad audience | Slow fatigue | Fresh eyeballs continuously |
| Multiple creatives | Slow fatigue | Impressions spread across ads |
| Video content | Slower fatigue | More engaging, longer view time |
| Lower frequency cap | Slow fatigue | Limits exposure per person |
| Dynamic creative | Slow fatigue | Variations extend lifespan |
---
### Creative Lifecycle Model
```
PERFORMANCE
โ
โ โญโโโโโโโฎ
โ โฑ โฒ โ Learning โ Peak โ Fatigue
โ โฑ โฒ
โ โฑ โฒ
โโฑ โฒ
โ โฒ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ TIME
|โ Learning โ|โ Peak โ|โ Fatigue โ|โ Exhausted โ|
(1-2 wks) (2-6 wks) (2-4 wks) (pause)
```
**Typical Creative Lifespans by Platform:**
| Platform | Prospecting | Retargeting |
|----------|-------------|-------------|
| Meta | 3-6 weeks | 2-4 weeks |
| TikTok | 2-4 weeks | 1-3 weeks |
| LinkedIn | 6-10 weeks | 4-6 weeks |
| Google Display | 4-8 weeks | 3-5 weeks |
| YouTube | 4-8 weeks | 3-5 weeks |
---
## Fatigue Scoring Model
### Calculate Fatigue Score (0-100)
```
Fatigue Score = (CTR Decay Score ร 0.4) +
(Frequency Score ร 0.3) +
(Age Score ร 0.2) +
(CPA Score ร 0.1)
```
**CTR Decay Score (0-100):**
- No decay: 0
- 10% decay: 25
- 20% decay: 50
- 35% decay: 75
- 50%+ decay: 100
**Frequency Score (0-100):**
- Below threshold: 0
- At threshold: 50
- 50% above threshold: 75
- 2x threshold: 100
**Age Score (0-100):**
- <2 weeks: 0
- 2-4 weeks: 25
- 4-6 weeks: 50
- 6-8 weeks: 75
- >8 weeks: 100
**CPA Score (0-100):**
- At or below baseline: 0
- 15% above: 25
- 30% above: 50
- 50% above: 75
- >50% above: 100
**Interpretation:**
| Score | Status | Action |
|-------|--------|--------|
| 0-25 | Fresh | Monitor weekly |
| 26-45 | Healthy | Prepare backup creative |
| 46-65 | Early Fatigue | Rotate within 2 weeks |
| 66-80 | Moderate Fatigue | Rotate within 1 week |
| 81-100 | Severe Fatigue | Pause/rotate immediately |
---
## Output Format
### Creative Fatigue Report
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
CREATIVE FATIGUE ANALYSIS
Platform: [Platform]
Analysis Period: [Date Range]
Total Creatives Analyzed: [X]
Creatives Needing Rotation: [X]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
---
### Fatigue Summary Dashboard
**Overall Creative Health: [HEALTHY/WARNING/CRITICAL]**
```
Creative Status Distribution:
Fresh (0-25): โโโโโโโโ [X] creatives
Healthy (26-45): โโโโโโ [X] creatives
Early Fatigue (46-65): โโโโ [X] creatives
Moderate Fatigue (66-80): โโ [X] creatives
Severe Fatigue (81-100): โ [X] creatives
```
**Urgent Attention Required:** [X] creatives need immediate rotation
---
### Creative-Level Analysis
**CRITICAL - Rotate Immediately:**
| Creative | Format | Days Live | Fatigue Score | CTR Decay | Frequency | Action |
|----------|--------|-----------|---------------|-----------|-----------|--------|
| [Name] | [Format] | [X] | [X]/100 | -[X]% | [X] | Pause now |
**WARNING - Rotate Within 1 Week:**
| Creative | Format | Days Live | Fatigue Score | CTR Decay | Frequency | Action |
|----------|--------|-----------|---------------|-----------|-----------|--------|
| [Name] | [Format] | [X] | [X]/100 | -[X]% | [X] | Prepare rotation |
**MONITOR - Early Signs:**
| Creative | Format | Days Live | Fatigue Score | CTR Decay | Frequency | Status |
|----------|--------|-----------|---------------|-----------|-----------|--------|
| [Name] | [Format] | [X] | [X]/100 | -[X]% | [X] | Watch CTR |
**HEALTHY - No Action:**
| Creative | Format | Days Live | Fatigue Score | Status |
|----------|--------|-----------|---------------|--------|
| [Name] | [Format] | [X] | [X]/100 | Performing well |
---
### Detailed Creative Analysis
**[Creative Name]**
```
Status: [CRITICAL/WARNING/MONITOR/HEALTHY]
Fatigue Score: [X]/100
Performance Timeline:
Week 1: CTR [X]% | CPA $[X] | Freq [X] โ Baseline
Week 2: CTR [X]% | CPA $[X] | Freq [X] | Change: [X]%
Week 3: CTR [X]% | CPA $[X] | Freq [X] | Change: [X]%
Week 4: CTR [X]% | CPA $[X] | Freq [X] | Change: [X]%
Decay Analysis:
- CTR: [X]% โ [X]% ([X]% decline)
- CPA: $[X] โ $[X] ([X]% increase)
- Frequency: [X] (vs [X] threshold)
Diagnosis: [Why this creative is fatiguing]
Recommendation: [Specific action]
```
---
### Video Creative Analysis (if applicable)
| Video | Hook Rate Wk1 | Hook Rate Now | Decay | Avg Watch Time | Status |
|-------|---------------|---------------|-------|----------------|--------|
| [Name] | [X]% | [X]% | -[X]% | [X]s | [Status] |
**Video-Specific Insights:**
- [Insight about hook rate patterns]
- [Insight about watch time degradation]
---
### Campaign/Ad Set Context
**High-Risk Ad Sets (accelerating fatigue):**
| Ad Set | Audience Size | Frequency | Creatives | Risk Level |
|--------|---------------|-----------|-----------|------------|
| [Name] | [X]M | [X] | [X] | HIGH |
**Notes:** [Why these ad sets are burning creative faster]
---
### Rotation Schedule
**Immediate (This Week):**
1. [ ] Pause [Creative Name] - Fatigue score [X]
2. [ ] Replace with [new creative type/angle]
**Next Week:**
1. [ ] Prepare rotation for [Creative Name]
2. [ ] Test [X] new variations of [winning angle]
**2-3 Weeks:**
1. [ ] Monitor [Creative Name] for fatigue signs
2. [ ] Have backup ready for [Creative Name]
---
### Creative Pipeline Recommendations
**Current Velocity:**
- Creatives launched last 30 days: [X]
- Average creative lifespan: [X] weeks
- Rotation rate needed: [X] new creatives per week
**Recommended Pipeline:**
- Always have [X] creatives in testing
- Plan [X] new creatives per week
- Keep [X] proven concepts ready for iteration
**Creative Types to Test:**
Based on what's fatiguing:
1. [Recommendation based on analysis]
2. [Recommendation based on analysis]
3. [Recommendation based on analysis]
---
### Fatigue Prevention Strategies
**For This Account:**
1. [Specific strategy based on analysis]
2. [Specific strategy based on analysis]
3. [Specific strategy based on analysis]
**General Best Practices:**
- Set frequency caps on prospecting (3.0 for Meta)
- Run 3-5 creatives per ad set minimum
- Iterate on winners before they fatigue (variations)
- Monitor CTR weekly, not just CPA
---
## Platform-Specific Guidance
### Meta Ads
- Watch frequency most closely
- Hook rate decay is early warning for video
- Consider Advantage+ Creative for auto-optimization
- Dynamic creative can extend lifespan
### Google Display/YouTube
- Frequency data less granular, use time-based rotation
- Rotate every 6-8 weeks proactively
- Performance Max obscures creative data, check asset reports
### TikTok
- Fastest fatigue of any platform
- Trend-based content fatigues even faster
- Plan 2-week creative cycles
- Hook rate is everything
### LinkedIn
- Slower fatigue due to smaller audiences
- Can run longer before rotation
- But when fatigued, hard to recover
- B2B audiences are finite, refresh matters
---
## Limitations
**I can provide:**
- Fatigue scoring and prioritization
- Rotation schedules and timelines
- Pattern identification
- Prevention recommendations
**I cannot provide:**
- New creative concepts or copywriting
- Visual design or video editing
- Audience strategy (separate skill)
- Attribution analysis
**For better analysis, also provide:**
- Week-over-week performance data (not just current snapshot)
- Frequency data at ad or ad set level
- Hook rate / video metrics if running video
- Audience sizes
---
## Quality Checklist
Before delivering analysis:
- [ ] All creatives scored with consistent methodology
- [ ] Urgency levels clearly indicated
- [ ] Rotation schedule is actionable
- [ ] Platform-specific thresholds applied
- [ ] Root causes identified (not just symptoms)
- [ ] Prevention strategies included
- [ ] Pipeline recommendations based on actual velocity needs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# How to Use This Skill
Hey Claude, I just added the "ad-creative-fatigue-detector" skill. Can you analyze my ads and tell me which ones are fatigued?
## Example Invocations
**Example 1: Full Creative Audit**
Hey Claude, I just added the "ad-creative-fatigue-detector" skill. Here's performance data for all my Meta Ads creatives over the last 30 days. Which ones are fatigued and need rotation?
**Example 2: Performance Drop Diagnosis**
Hey Claude, I just added the "ad-creative-fatigue-detector" skill. My Meta Ads CPA jumped 40% in the last 2 weeks. Is this creative fatigue? How do I know which ads to rotate?
**Example 3: Video Ad Analysis**
Hey Claude, I just added the "ad-creative-fatigue-detector" skill. I have 5 video ads running. Here are the hook rates and CTRs by week. Which videos are losing effectiveness?
**Example 4: Rotation Schedule**
Hey Claude, I just added the "ad-creative-fatigue-detector" skill. I need to create a creative rotation schedule for my campaigns. Here's my current performance data, when should I rotate each ad?
**Example 5: Multi-Platform Check**
Hey Claude, I just added the "ad-creative-fatigue-detector" skill. I'm running ads on Meta, TikTok, and LinkedIn. Here's the data, which platform has the most fatigue issues?
## What to Provide
**Required:**
- Ad/creative names or identifiers
- Days each ad has been running
- CTR (click-through rate) for each ad
- Ideally: CTR from first week vs. current week
**Highly Recommended:**
- Frequency (at ad or ad set level)
- CPA or conversion rate
- Impressions
- Platform (Meta, Google, TikTok, LinkedIn)
**For Video Ads:**
- Hook rate / thumb-stop rate (3-second views)
- Average watch time or completion rate
**Optional:**
- Audience size
- Campaign type (prospecting vs. retargeting)
- Historical creative performance
- Week-by-week breakdown
## What You'll Get
1. **Fatigue Score** - 0-100 score for each creative
2. **Status Classification** - Critical/Warning/Monitor/Healthy
3. **Decay Analysis** - How much CTR, CPA, etc. have changed
4. **Root Cause** - Why each creative is fatiguing
5. **Rotation Schedule** - What to rotate and when
6. **Pipeline Recommendations** - How many new creatives you need
7. **Prevention Strategies** - How to slow fatigue in the future
## Pro Tips
- Export ad-level data from Ads Manager including date breakdowns
- Compare Week 1 performance to current week, the delta matters most
- Frequency data is often the earliest warning sign
- Hook rate decay for video is more predictive than CTR
- Don't wait for CPA to spike, that's already too late
- High-performing ads fatigue faster because they get more impressions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
{
"account_context": {
"platform": "Meta Ads",
"business": "DTC Skincare",
"campaign_type": "Prospecting",
"audience_type": "Broad + Lookalikes",
"average_audience_size": "15M",
"analysis_period": "Last 30 days"
},
"creatives": [
{
"name": "Video - Before/After Transformation",
"format": "Video",
"duration_seconds": 30,
"days_running": 45,
"total_spend": 12000,
"total_impressions": 850000,
"current_frequency": 3.2,
"weekly_performance": [
{
"week": 1,
"ctr": 2.4,
"cpa": 28,
"hook_rate": 42,
"impressions": 180000
},
{
"week": 2,
"ctr": 2.3,
"cpa": 29,
"hook_rate": 40,
"impressions": 195000
},
{
"week": 3,
"ctr": 2,
"cpa": 32,
"hook_rate": 36,
"impressions": 185000
},
{
"week": 4,
"ctr": 1.7,
"cpa": 38,
"hook_rate": 31,
"impressions": 160000
},
{
"week": 5,
"ctr": 1.4,
"cpa": 45,
"hook_rate": 26,
"impressions": 90000
},
{
"week": 6,
"ctr": 1.2,
"cpa": 52,
"hook_rate": 22,
"impressions": 40000
}
],
"current_metrics": {
"ctr": 1.2,
"cpa": 52,
"hook_rate": 22
},
"baseline_metrics": {
"ctr": 2.4,
"cpa": 28,
"hook_rate": 42
}
},
{
"name": "UGC - Customer Testimonial Sarah",
"format": "Video",
"duration_seconds": 45,
"days_running": 28,
"total_spend": 8500,
"total_impressions": 620000,
"current_frequency": 2.8,
"weekly_performance": [
{
"week": 1,
"ctr": 2.1,
"cpa": 32,
"hook_rate": 38,
"impressions": 150000
},
{
"week": 2,
"ctr": 2,
"cpa": 33,
"hook_rate": 37,
"impressions": 165000
},
{
"week": 3,
"ctr": 1.8,
"cpa": 36,
"hook_rate": 34,
"impressions": 170000
},
{
"week": 4,
"ctr": 1.5,
"cpa": 42,
"hook_rate": 29,
"impressions": 135000
}
],
"current_metrics": {
"ctr": 1.5,
"cpa": 42,
"hook_rate": 29
},
"baseline_metrics": {
"ctr": 2.1,
"cpa": 32,
"hook_rate": 38
}
},
{
"name": "Carousel - Product Benefits",
"format": "Carousel",
"days_running": 35,
"total_spend": 6000,
"total_impressions": 480000,
"current_frequency": 2.4,
"weekly_performance": [
{
"week": 1,
"ctr": 1.6,
"cpa": 35,
"impressions": 95000
},
{
"week": 2,
"ctr": 1.5,
"cpa": 36,
"impressions": 105000
},
{
"week": 3,
"ctr": 1.4,
"cpa": 38,
"impressions": 110000
},
{
"week": 4,
"ctr": 1.3,
"cpa": 40,
"impressions": 100000
},
{
"week": 5,
"ctr": 1.2,
"cpa": 43,
"impressions": 70000
}
],
"current_metrics": {
"ctr": 1.2,
"cpa": 43
},
"baseline_metrics": {
"ctr": 1.6,
"cpa": 35
}
},
{
"name": "Static - Lifestyle Hero Shot",
"format": "Image",
"days_running": 60,
"total_spend": 4500,
"total_impressions": 380000,
"current_frequency": 3.8,
"weekly_performance": [
{
"week": 1,
"ctr": 1.4,
"cpa": 38,
"impressions": 90000
},
{
"week": 2,
"ctr": 1.3,
"cpa": 40,
"impressions": 85000
},
{
"week": 3,
"ctr": 1.1,
"cpa": 45,
"impressions": 75000
},
{
"week": 4,
"ctr": 0.9,
"cpa": 52,
"impressions": 60000
},
{
"week": 5,
"ctr": 0.7,
"cpa": 62,
"impressions": 40000
},
{
"week": 6,
"ctr": 0.6,
"cpa": 70,
"impressions": 30000
}
],
"current_metrics": {
"ctr": 0.6,
"cpa": 70
},
"baseline_metrics": {
"ctr": 1.4,
"cpa": 38
}
},
{
"name": "Video - Product Demo 15s",
"format": "Video",
"duration_seconds": 15,
"days_running": 14,
"total_spend": 3500,
"total_impressions": 280000,
"current_frequency": 1.8,
"weekly_performance": [
{
"week": 1,
"ctr": 2.2,
"cpa": 30,
"hook_rate": 45,
"impressions": 140000
},
{
"week": 2,
"ctr": 2.1,
"cpa": 31,
"hook_rate": 44,
"impressions": 140000
}
],
"current_metrics": {
"ctr": 2.1,
"cpa": 31,
"hook_rate": 44
},
"baseline_metrics": {
"ctr": 2.2,
"cpa": 30,
"hook_rate": 45
}
},
{
"name": "UGC - Influencer Review Mark",
"format": "Video",
"duration_seconds": 60,
"days_running": 7,
"total_spend": 1800,
"total_impressions": 145000,
"current_frequency": 1.2,
"weekly_performance": [
{
"week": 1,
"ctr": 1.9,
"cpa": 34,
"hook_rate": 35,
"impressions": 145000
}
],
"current_metrics": {
"ctr": 1.9,
"cpa": 34,
"hook_rate": 35
},
"baseline_metrics": {
"ctr": 1.9,
"cpa": 34,
"hook_rate": 35
}
}
],
"ad_set_context": [
{
"name": "Broad - US Women 25-45",
"audience_size": "25M",
"frequency": 2.6,
"creatives_running": 4
},
{
"name": "LAL - Purchasers 1%",
"audience_size": "2.5M",
"frequency": 4.1,
"creatives_running": 3
}
],
"account_benchmarks": {
"target_cpa": 40,
"average_ctr": 1.8,
"average_hook_rate": 35
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
{
"summary": {
"total_creatives_analyzed": 6,
"creatives_needing_rotation": 3,
"overall_health": "WARNING",
"urgent_actions": 2,
"primary_finding": "2 high-spend creatives are severely fatigued, dragging account CPA up 30%+. Immediate rotation needed."
},
"fatigue_distribution": {
"fresh_0_25": 2,
"healthy_26_45": 1,
"early_fatigue_46_65": 0,
"moderate_fatigue_66_80": 1,
"severe_fatigue_81_100": 2
},
"creative_analysis": {
"critical_rotate_immediately": [
{
"name": "Static - Lifestyle Hero Shot",
"format": "Image",
"fatigue_score": 92,
"days_running": 60,
"ctr_decay": "-57%",
"ctr_current": 0.6,
"ctr_baseline": 1.4,
"cpa_increase": "+84%",
"cpa_current": 70,
"cpa_baseline": 38,
"frequency": 3.8,
"frequency_threshold": 3,
"diagnosis": "Severely exhausted static image. Running 60 days with 57% CTR decline. High frequency (3.8) on narrow audience accelerated decay. CPA nearly double baseline.",
"weekly_decay_pattern": [
{
"week": 1,
"ctr": 1.4,
"status": "baseline"
},
{
"week": 2,
"ctr": 1.3,
"change": "-7%"
},
{
"week": 3,
"ctr": 1.1,
"change": "-15%"
},
{
"week": 4,
"ctr": 0.9,
"change": "-18%"
},
{
"week": 5,
"ctr": 0.7,
"change": "-22%"
},
{
"week": 6,
"ctr": 0.6,
"change": "-14%"
}
],
"action": "PAUSE IMMEDIATELY. This creative has been dead for 3+ weeks.",
"estimated_waste": "$2,500+ in last 3 weeks at inflated CPA"
},
{
"name": "Video - Before/After Transformation",
"format": "Video",
"fatigue_score": 88,
"days_running": 45,
"ctr_decay": "-50%",
"ctr_current": 1.2,
"ctr_baseline": 2.4,
"hook_rate_decay": "-48%",
"hook_rate_current": 22,
"hook_rate_baseline": 42,
"cpa_increase": "+86%",
"cpa_current": 52,
"cpa_baseline": 28,
"frequency": 3.2,
"frequency_threshold": 3,
"diagnosis": "Former top performer now severely fatigued. Hook rate collapsed from 42% to 22% - audience has seen the opening too many times. CTR halved, CPA nearly doubled.",
"weekly_decay_pattern": [
{
"week": 1,
"ctr": 2.4,
"hook_rate": 42,
"status": "peak performance"
},
{
"week": 2,
"ctr": 2.3,
"hook_rate": 40,
"change": "-4% CTR"
},
{
"week": 3,
"ctr": 2,
"hook_rate": 36,
"change": "-13% CTR, -10% hook"
},
{
"week": 4,
"ctr": 1.7,
"hook_rate": 31,
"change": "-15% CTR, fatigue accelerating"
},
{
"week": 5,
"ctr": 1.4,
"hook_rate": 26,
"change": "-18% CTR, clear fatigue"
},
{
"week": 6,
"ctr": 1.2,
"hook_rate": 22,
"change": "-14% CTR, exhausted"
}
],
"action": "PAUSE or drastically reduce spend. Create 2-3 variations with NEW hooks using same winning concept (before/after angle).",
"estimated_waste": "$4,000+ in last 3 weeks at inflated CPA"
}
],
"warning_rotate_within_1_week": [
{
"name": "UGC - Customer Testimonial Sarah",
"format": "Video",
"fatigue_score": 72,
"days_running": 28,
"ctr_decay": "-29%",
"ctr_current": 1.5,
"ctr_baseline": 2.1,
"hook_rate_decay": "-24%",
"hook_rate_current": 29,
"hook_rate_baseline": 38,
"cpa_increase": "+31%",
"cpa_current": 42,
"cpa_baseline": 32,
"frequency": 2.8,
"frequency_threshold": 3,
"diagnosis": "Moderate fatigue with clear decay trend. Still below frequency threshold but CTR and hook rate declining week-over-week. Has 1-2 weeks of life left.",
"weekly_decay_pattern": [
{
"week": 1,
"ctr": 2.1,
"hook_rate": 38,
"status": "baseline"
},
{
"week": 2,
"ctr": 2,
"hook_rate": 37,
"change": "-5% CTR"
},
{
"week": 3,
"ctr": 1.8,
"hook_rate": 34,
"change": "-10% CTR"
},
{
"week": 4,
"ctr": 1.5,
"hook_rate": 29,
"change": "-17% CTR"
}
],
"action": "Prepare rotation for next week. Test new UGC testimonial with different customer/hook.",
"estimated_remaining_life": "1-2 weeks before critical"
}
],
"monitor_early_signs": [
{
"name": "Carousel - Product Benefits",
"format": "Carousel",
"fatigue_score": 58,
"days_running": 35,
"ctr_decay": "-25%",
"ctr_current": 1.2,
"ctr_baseline": 1.6,
"cpa_increase": "+23%",
"cpa_current": 43,
"cpa_baseline": 35,
"frequency": 2.4,
"frequency_threshold": 3,
"diagnosis": "Early-moderate fatigue. Consistent slow decline over 5 weeks. Frequency still manageable. Not urgent but trending down.",
"action": "Monitor weekly. If CTR drops below 1.0% or CPA exceeds $48, rotate.",
"estimated_remaining_life": "2-3 weeks at current trajectory"
}
],
"healthy_no_action": [
{
"name": "Video - Product Demo 15s",
"format": "Video",
"fatigue_score": 18,
"days_running": 14,
"ctr_decay": "-5%",
"ctr_current": 2.1,
"ctr_baseline": 2.2,
"hook_rate_decay": "-2%",
"hook_rate_current": 44,
"hook_rate_baseline": 45,
"cpa_increase": "+3%",
"cpa_current": 31,
"cpa_baseline": 30,
"frequency": 1.8,
"frequency_threshold": 3,
"diagnosis": "Fresh creative performing well. Minimal decay, low frequency, strong metrics.",
"action": "No action. This is currently your best performer - protect it.",
"estimated_remaining_life": "3-4 weeks before fatigue expected"
},
{
"name": "UGC - Influencer Review Mark",
"format": "Video",
"fatigue_score": 8,
"days_running": 7,
"ctr_decay": "0%",
"ctr_current": 1.9,
"ctr_baseline": 1.9,
"hook_rate_decay": "0%",
"hook_rate_current": 35,
"hook_rate_baseline": 35,
"cpa_increase": "0%",
"cpa_current": 34,
"cpa_baseline": 34,
"frequency": 1.2,
"frequency_threshold": 3,
"diagnosis": "Brand new creative in learning phase. Too early to assess fatigue. Performance is solid.",
"action": "Monitor. Capture baseline metrics for future comparison.",
"estimated_remaining_life": "4-5 weeks (typical for UGC)"
}
]
},
"video_specific_analysis": {
"hook_rate_summary": [
{
"creative": "Video - Product Demo 15s",
"hook_rate": 44,
"decay": "-2%",
"status": "strong"
},
{
"creative": "UGC - Customer Testimonial Sarah",
"hook_rate": 29,
"decay": "-24%",
"status": "declining"
},
{
"creative": "UGC - Influencer Review Mark",
"hook_rate": 35,
"decay": "0%",
"status": "baseline"
},
{
"creative": "Video - Before/After Transformation",
"hook_rate": 22,
"decay": "-48%",
"status": "collapsed"
}
],
"insight": "Hook rate is the leading indicator. Before/After video's hook rate collapsed weeks before CPA spiked. Monitor hook rate decay as early warning for all videos."
},
"ad_set_risk_analysis": [
{
"ad_set": "LAL - Purchasers 1%",
"frequency": 4.1,
"threshold": 3,
"audience_size": "2.5M",
"risk_level": "HIGH",
"diagnosis": "Small lookalike audience (2.5M) with high frequency (4.1). All creatives will fatigue faster in this ad set.",
"recommendation": "Expand to 2-3% LAL or add more creatives to spread impressions"
},
{
"ad_set": "Broad - US Women 25-45",
"frequency": 2.6,
"threshold": 3,
"audience_size": "25M",
"risk_level": "LOW",
"diagnosis": "Large audience with manageable frequency. Good environment for creative longevity.",
"recommendation": "Maintain current structure"
}
],
"rotation_schedule": {
"immediate_this_week": [
{
"action": "PAUSE",
"creative": "Static - Lifestyle Hero Shot",
"reason": "Fatigue score 92, CTR at 0.6%, CPA at $70"
},
{
"action": "PAUSE or reduce 75%",
"creative": "Video - Before/After Transformation",
"reason": "Fatigue score 88, former winner now exhausted"
},
{
"action": "LAUNCH",
"creative": "2-3 new variations of Before/After concept with different hooks",
"reason": "The concept works, just needs fresh execution"
}
],
"next_week": [
{
"action": "PREPARE ROTATION",
"creative": "UGC - Customer Testimonial Sarah",
"reason": "Fatigue score 72, declining trajectory"
},
{
"action": "LAUNCH",
"creative": "New UGC testimonial (different customer)",
"reason": "Maintain UGC presence as format performs well"
}
],
"week_2_3": [
{
"action": "MONITOR",
"creative": "Carousel - Product Benefits",
"trigger": "Rotate if CTR < 1.0% or CPA > $48"
},
{
"action": "SCALE",
"creative": "Video - Product Demo 15s",
"reason": "Best performing creative, capture value while fresh"
}
]
},
"creative_pipeline_recommendations": {
"current_velocity_analysis": {
"creatives_launched_30_days": 2,
"average_lifespan": "4-5 weeks",
"current_rotation_rate": "0.5 creatives/week",
"required_rotation_rate": "1-2 creatives/week"
},
"pipeline_gap": "Under-producing by 50%+. Need to double creative velocity.",
"recommended_pipeline": {
"always_in_testing": "3-4 creatives",
"new_per_week": "1-2 creatives",
"backup_ready": "2-3 proven concepts ready for iteration"
},
"creative_types_to_prioritize": [
{
"type": "Before/After variations",
"reason": "Proven concept, needs fresh hooks",
"priority": "HIGH"
},
{
"type": "New UGC testimonials",
"reason": "UGC format performing well, diversify faces/stories",
"priority": "HIGH"
},
{
"type": "Short-form (<15s) product demos",
"reason": "Current 15s video is top performer",
"priority": "MEDIUM"
},
{
"type": "Static images",
"reason": "Test new approach - lifestyle shot exhausted",
"priority": "LOW"
}
]
},
"fatigue_prevention_strategies": {
"for_this_account": [
"Set frequency cap at 3.0 for prospecting campaigns",
"Expand LAL from 1% to 2% to slow fatigue",
"Run minimum 4 creatives per ad set (currently running 3-4)",
"Create variation library of winning hooks before they fatigue",
"Weekly CTR monitoring - rotate when -20% from baseline"
],
"general_best_practices": [
"Iterate on winners early - don't wait for decline",
"Diversify hooks even on same concept",
"Use Advantage+ Creative to auto-optimize variations",
"Budget new creative development as ongoing cost, not one-time"
]
},
"impact_summary": {
"estimated_waste_last_month": "$6,500+",
"cause": "Running fatigued creatives too long",
"projected_savings": "$4,000-5,000/month",
"method": "Implementing rotation schedule and pipeline",
"cpa_improvement_potential": "-15% to -20% blended CPA"
},
"next_steps": [
"Pause Static - Lifestyle Hero Shot immediately",
"Reduce Video - Before/After Transformation by 75%",
"Brief creative team on 3 new Before/After hook variations",
"Source 1-2 new UGC testimonials",
"Set frequency cap at 3.0 on prospecting ad sets",
"Schedule weekly creative health review"
]
}
ReadyAd Creative Fatigue Detector
MarkdownUTF-8