dreamcontext 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +523 -0
  3. package/agents/dreamcontext-explore.md +137 -0
  4. package/agents/dreamcontext-initializer.md +169 -0
  5. package/agents/sleep-product.md +268 -0
  6. package/agents/sleep-state.md +270 -0
  7. package/agents/sleep-tasks.md +134 -0
  8. package/dist/agents/dreamcontext-explore.md +137 -0
  9. package/dist/agents/dreamcontext-initializer.md +169 -0
  10. package/dist/agents/sleep-product.md +268 -0
  11. package/dist/agents/sleep-state.md +270 -0
  12. package/dist/agents/sleep-tasks.md +134 -0
  13. package/dist/dashboard/assets/BrainCanvas3D-BLJ4_SqE.js +5126 -0
  14. package/dist/dashboard/assets/_baseUniq-DpaDAx_H.js +1 -0
  15. package/dist/dashboard/assets/arc-JvK3Ik1p.js +1 -0
  16. package/dist/dashboard/assets/architectureDiagram-Q4EWVU46-CCvw4XFg.js +36 -0
  17. package/dist/dashboard/assets/blockDiagram-DXYQGD6D-DMobz1n7.js +132 -0
  18. package/dist/dashboard/assets/c4Diagram-AHTNJAMY-FwcHT5er.js +10 -0
  19. package/dist/dashboard/assets/channel-D6954IHZ.js +1 -0
  20. package/dist/dashboard/assets/chunk-4BX2VUAB-B5kYwmBa.js +1 -0
  21. package/dist/dashboard/assets/chunk-4TB4RGXK-0ot1eS0J.js +206 -0
  22. package/dist/dashboard/assets/chunk-55IACEB6-24ngcLgH.js +1 -0
  23. package/dist/dashboard/assets/chunk-EDXVE4YY-DATt1OUl.js +1 -0
  24. package/dist/dashboard/assets/chunk-FMBD7UC4-BprbGSJw.js +15 -0
  25. package/dist/dashboard/assets/chunk-OYMX7WX6-CJJhpKWP.js +231 -0
  26. package/dist/dashboard/assets/chunk-QZHKN3VN-Cisp65Vq.js +1 -0
  27. package/dist/dashboard/assets/chunk-YZCP3GAM-DtMk33tU.js +1 -0
  28. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-Bk4KDqBj.js +1 -0
  29. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-Bk4KDqBj.js +1 -0
  30. package/dist/dashboard/assets/clone-C9Yhti5q.js +1 -0
  31. package/dist/dashboard/assets/cose-bilkent-S5V4N54A-BxYomDLe.js +1 -0
  32. package/dist/dashboard/assets/cytoscape.esm-D_LviqZs.js +331 -0
  33. package/dist/dashboard/assets/dagre-KV5264BT-CsX1ZayG.js +4 -0
  34. package/dist/dashboard/assets/defaultLocale-DX6XiGOO.js +1 -0
  35. package/dist/dashboard/assets/diagram-5BDNPKRD-B2G4mPPw.js +10 -0
  36. package/dist/dashboard/assets/diagram-G4DWMVQ6-C8nxN9ZB.js +24 -0
  37. package/dist/dashboard/assets/diagram-MMDJMWI5-DaYymOrR.js +43 -0
  38. package/dist/dashboard/assets/diagram-TYMM5635-BpiYFv-I.js +24 -0
  39. package/dist/dashboard/assets/erDiagram-SMLLAGMA-C6pE7F61.js +85 -0
  40. package/dist/dashboard/assets/flowDiagram-DWJPFMVM-jdNEPVFq.js +162 -0
  41. package/dist/dashboard/assets/ganttDiagram-T4ZO3ILL-C8GoRj1C.js +292 -0
  42. package/dist/dashboard/assets/gitGraphDiagram-UUTBAWPF-SiRn7RJ8.js +106 -0
  43. package/dist/dashboard/assets/graph-9wbTW7ld.js +1 -0
  44. package/dist/dashboard/assets/index-BHp63EMw.js +475 -0
  45. package/dist/dashboard/assets/index-CdnDt_7U.css +1 -0
  46. package/dist/dashboard/assets/infoDiagram-42DDH7IO-DcDC8M1a.js +2 -0
  47. package/dist/dashboard/assets/ishikawaDiagram-UXIWVN3A-UjyrPeaS.js +70 -0
  48. package/dist/dashboard/assets/journeyDiagram-VCZTEJTY-CXJPYMxN.js +139 -0
  49. package/dist/dashboard/assets/kanban-definition-6JOO6SKY-Cm1n9eat.js +89 -0
  50. package/dist/dashboard/assets/katex-DkKDou_j.js +257 -0
  51. package/dist/dashboard/assets/layout-w8zmQGXp.js +1 -0
  52. package/dist/dashboard/assets/linear-CMNvIisH.js +1 -0
  53. package/dist/dashboard/assets/min-BqXwiqEr.js +1 -0
  54. package/dist/dashboard/assets/mindmap-definition-QFDTVHPH-tksxnjhx.js +96 -0
  55. package/dist/dashboard/assets/pieDiagram-DEJITSTG-lIVvnPyq.js +30 -0
  56. package/dist/dashboard/assets/quadrantDiagram-34T5L4WZ-DSMB57t5.js +7 -0
  57. package/dist/dashboard/assets/requirementDiagram-MS252O5E-NG99tgmc.js +84 -0
  58. package/dist/dashboard/assets/sankeyDiagram-XADWPNL6-C6EkbQKo.js +10 -0
  59. package/dist/dashboard/assets/sequenceDiagram-FGHM5R23-ASU7Zp6_.js +157 -0
  60. package/dist/dashboard/assets/stateDiagram-FHFEXIEX-DHklUzce.js +1 -0
  61. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-BZXFb2Fh.js +1 -0
  62. package/dist/dashboard/assets/timeline-definition-GMOUNBTQ-B37xNhjS.js +120 -0
  63. package/dist/dashboard/assets/vennDiagram-DHZGUBPP-D28OvWbm.js +34 -0
  64. package/dist/dashboard/assets/wardley-RL74JXVD-BQdaLyVb.js +162 -0
  65. package/dist/dashboard/assets/wardleyDiagram-NUSXRM2D-D0vChrnT.js +20 -0
  66. package/dist/dashboard/assets/xychartDiagram-5P7HB3ND-BzSx7EpJ.js +7 -0
  67. package/dist/dashboard/favicon.svg +14 -0
  68. package/dist/dashboard/index.html +18 -0
  69. package/dist/hooks/marketing-binary-guard.sh +18 -0
  70. package/dist/index.js +15881 -0
  71. package/dist/skill-packs/agents/biv-customer-analyst.md +140 -0
  72. package/dist/skill-packs/agents/biv-decision-gate.md +147 -0
  73. package/dist/skill-packs/agents/biv-financial-analyst.md +128 -0
  74. package/dist/skill-packs/agents/biv-market-analyst.md +103 -0
  75. package/dist/skill-packs/agents/biv-researcher.md +140 -0
  76. package/dist/skill-packs/agents/biv-strategist.md +164 -0
  77. package/dist/skill-packs/agents/council-persona.md +142 -0
  78. package/dist/skill-packs/agents/council-synthesizer.md +208 -0
  79. package/dist/skill-packs/agents/discover-brand.md +216 -0
  80. package/dist/skill-packs/agents/goal-implementer.md +70 -0
  81. package/dist/skill-packs/agents/goal-plan-reviewer.md +68 -0
  82. package/dist/skill-packs/agents/goal-planner.md +75 -0
  83. package/dist/skill-packs/agents/goal-validator.md +68 -0
  84. package/dist/skill-packs/agents/marketing-creative.md +85 -0
  85. package/dist/skill-packs/agents/marketing-monitor.md +143 -0
  86. package/dist/skill-packs/agents/marketing-strategy.md +139 -0
  87. package/dist/skill-packs/agents/review-cloud-functions.md +158 -0
  88. package/dist/skill-packs/agents/review-edge-cases.md +147 -0
  89. package/dist/skill-packs/agents/review-frontend.md +134 -0
  90. package/dist/skill-packs/agents/review-router.md +165 -0
  91. package/dist/skill-packs/agents/review-security.md +139 -0
  92. package/dist/skill-packs/agents/reviewer.md +152 -0
  93. package/dist/skill-packs/brand-voice/SKILL.md +115 -0
  94. package/dist/skill-packs/brand-voice/discover-brand.md +126 -0
  95. package/dist/skill-packs/brand-voice/guideline-generation.md +154 -0
  96. package/dist/skill-packs/brand-voice/references/before-after-examples.md +194 -0
  97. package/dist/skill-packs/brand-voice/references/confidence-scoring.md +128 -0
  98. package/dist/skill-packs/brand-voice/references/guideline-template.md +241 -0
  99. package/dist/skill-packs/brand-voice/references/search-strategies.md +271 -0
  100. package/dist/skill-packs/brand-voice/references/source-ranking.md +248 -0
  101. package/dist/skill-packs/brand-voice/references/voice-constant-tone-flexes.md +115 -0
  102. package/dist/skill-packs/business-idea-discovery/SKILL.md +452 -0
  103. package/dist/skill-packs/business-idea-validation/SKILL.md +209 -0
  104. package/dist/skill-packs/business-idea-validation/stage-definitions.md +658 -0
  105. package/dist/skill-packs/catalog.json +657 -0
  106. package/dist/skill-packs/council/SKILL.md +134 -0
  107. package/dist/skill-packs/council/debate-protocol.md +90 -0
  108. package/dist/skill-packs/design/SKILL.md +301 -0
  109. package/dist/skill-packs/design/design-mobile.md +207 -0
  110. package/dist/skill-packs/design/design-web.md +148 -0
  111. package/dist/skill-packs/design/frontend-principles.md +157 -0
  112. package/dist/skill-packs/design/onboarding-design.md +230 -0
  113. package/dist/skill-packs/engineering/SKILL.md +155 -0
  114. package/dist/skill-packs/engineering/backend-principles.md +233 -0
  115. package/dist/skill-packs/engineering/firebase-cloud-functions/SKILL.md +44 -0
  116. package/dist/skill-packs/engineering/firebase-cloud-functions/references/gen_comparison.md +45 -0
  117. package/dist/skill-packs/engineering/firebase-cloud-functions/references/idempotency.md +145 -0
  118. package/dist/skill-packs/engineering/firebase-cloud-functions/references/local_testing.md +218 -0
  119. package/dist/skill-packs/engineering/firebase-cloud-functions/references/scaling.md +128 -0
  120. package/dist/skill-packs/engineering/firebase-cloud-functions/references/secrets.md +70 -0
  121. package/dist/skill-packs/engineering/firebase-cloud-functions/references/triggers_and_deployment.md +139 -0
  122. package/dist/skill-packs/engineering/firebase-firestore/SKILL.md +50 -0
  123. package/dist/skill-packs/engineering/firebase-firestore/references/indexes.md +96 -0
  124. package/dist/skill-packs/engineering/firebase-firestore/references/provisioning.md +101 -0
  125. package/dist/skill-packs/engineering/firebase-firestore/references/query_mechanics.md +182 -0
  126. package/dist/skill-packs/engineering/firebase-firestore/references/security_rules.md +299 -0
  127. package/dist/skill-packs/engineering/firebase-firestore/references/web_sdk_usage.md +265 -0
  128. package/dist/skill-packs/engineering/web-app-frontend.md +187 -0
  129. package/dist/skill-packs/goal-skill/SKILL.md +203 -0
  130. package/dist/skill-packs/growth/SKILL.md +480 -0
  131. package/dist/skill-packs/growth/lean-analytics-experiments.md +341 -0
  132. package/dist/skill-packs/growth/lean-analytics-metrics.md +295 -0
  133. package/dist/skill-packs/growth/performance-marketing.md +337 -0
  134. package/dist/skill-packs/meta-marketing/SKILL.md +423 -0
  135. package/dist/skill-packs/meta-marketing/account-ops.md +190 -0
  136. package/dist/skill-packs/meta-marketing/api-reference.md +535 -0
  137. package/dist/skill-packs/meta-marketing/copy-formulas.md +123 -0
  138. package/dist/skill-packs/meta-marketing/council-personas/creative-director.md +76 -0
  139. package/dist/skill-packs/meta-marketing/council-personas/performance-monitor.md +71 -0
  140. package/dist/skill-packs/meta-marketing/council-personas/risk-officer.md +79 -0
  141. package/dist/skill-packs/meta-marketing/council-personas/strategy-optimizer.md +76 -0
  142. package/dist/skill-packs/meta-marketing/creative-frameworks.md +176 -0
  143. package/dist/skill-packs/meta-marketing/mistakes.md +154 -0
  144. package/dist/skill-packs/meta-marketing/platform-state.md +63 -0
  145. package/dist/skill-packs/multi-review/REVIEWER_SHARED.md +143 -0
  146. package/dist/skill-packs/multi-review/SKILL.md +182 -0
  147. package/dist/skill-packs/system-prompts/SKILL.md +472 -0
  148. package/dist/templates/AGENTS.md +84 -0
  149. package/dist/templates/CLAUDE.md +84 -0
  150. package/dist/templates/council-debate.md +20 -0
  151. package/dist/templates/council-final-report.md +34 -0
  152. package/dist/templates/council-persona.md +10 -0
  153. package/dist/templates/council-report.md +6 -0
  154. package/dist/templates/feature.md +38 -0
  155. package/dist/templates/init/0.soul.md +33 -0
  156. package/dist/templates/init/1.user.md +29 -0
  157. package/dist/templates/init/2.memory.md +21 -0
  158. package/dist/templates/init/3.style_guide_and_branding.md +18 -0
  159. package/dist/templates/init/4.tech_stack.md +22 -0
  160. package/dist/templates/init/CHANGELOG.json +1 -0
  161. package/dist/templates/init/RELEASES.json +1 -0
  162. package/dist/templates/init/data-structures/default.md +35 -0
  163. package/dist/templates/knowledge.md +10 -0
  164. package/dist/templates/obsidian/app.json +15 -0
  165. package/dist/templates/obsidian/appearance.json +4 -0
  166. package/dist/templates/obsidian/graph.json +58 -0
  167. package/dist/templates/task.md +70 -0
  168. package/install.sh +73 -0
  169. package/package.json +58 -0
  170. package/skill/SKILL.md +529 -0
  171. package/skill-packs/agents/biv-customer-analyst.md +140 -0
  172. package/skill-packs/agents/biv-decision-gate.md +147 -0
  173. package/skill-packs/agents/biv-financial-analyst.md +128 -0
  174. package/skill-packs/agents/biv-market-analyst.md +103 -0
  175. package/skill-packs/agents/biv-researcher.md +140 -0
  176. package/skill-packs/agents/biv-strategist.md +164 -0
  177. package/skill-packs/agents/council-persona.md +142 -0
  178. package/skill-packs/agents/council-synthesizer.md +208 -0
  179. package/skill-packs/agents/discover-brand.md +216 -0
  180. package/skill-packs/agents/goal-implementer.md +70 -0
  181. package/skill-packs/agents/goal-plan-reviewer.md +68 -0
  182. package/skill-packs/agents/goal-planner.md +75 -0
  183. package/skill-packs/agents/goal-validator.md +68 -0
  184. package/skill-packs/agents/marketing-creative.md +85 -0
  185. package/skill-packs/agents/marketing-monitor.md +143 -0
  186. package/skill-packs/agents/marketing-strategy.md +139 -0
  187. package/skill-packs/agents/review-cloud-functions.md +158 -0
  188. package/skill-packs/agents/review-edge-cases.md +147 -0
  189. package/skill-packs/agents/review-frontend.md +134 -0
  190. package/skill-packs/agents/review-router.md +165 -0
  191. package/skill-packs/agents/review-security.md +139 -0
  192. package/skill-packs/agents/reviewer.md +152 -0
  193. package/skill-packs/brand-voice/SKILL.md +115 -0
  194. package/skill-packs/brand-voice/discover-brand.md +126 -0
  195. package/skill-packs/brand-voice/guideline-generation.md +154 -0
  196. package/skill-packs/brand-voice/references/before-after-examples.md +194 -0
  197. package/skill-packs/brand-voice/references/confidence-scoring.md +128 -0
  198. package/skill-packs/brand-voice/references/guideline-template.md +241 -0
  199. package/skill-packs/brand-voice/references/search-strategies.md +271 -0
  200. package/skill-packs/brand-voice/references/source-ranking.md +248 -0
  201. package/skill-packs/brand-voice/references/voice-constant-tone-flexes.md +115 -0
  202. package/skill-packs/business-idea-discovery/SKILL.md +452 -0
  203. package/skill-packs/business-idea-validation/SKILL.md +209 -0
  204. package/skill-packs/business-idea-validation/stage-definitions.md +658 -0
  205. package/skill-packs/catalog.json +657 -0
  206. package/skill-packs/council/SKILL.md +134 -0
  207. package/skill-packs/council/debate-protocol.md +90 -0
  208. package/skill-packs/design/SKILL.md +301 -0
  209. package/skill-packs/design/design-mobile.md +207 -0
  210. package/skill-packs/design/design-web.md +148 -0
  211. package/skill-packs/design/frontend-principles.md +157 -0
  212. package/skill-packs/design/onboarding-design.md +230 -0
  213. package/skill-packs/engineering/SKILL.md +155 -0
  214. package/skill-packs/engineering/backend-principles.md +233 -0
  215. package/skill-packs/engineering/firebase-cloud-functions/SKILL.md +44 -0
  216. package/skill-packs/engineering/firebase-cloud-functions/references/gen_comparison.md +45 -0
  217. package/skill-packs/engineering/firebase-cloud-functions/references/idempotency.md +145 -0
  218. package/skill-packs/engineering/firebase-cloud-functions/references/local_testing.md +218 -0
  219. package/skill-packs/engineering/firebase-cloud-functions/references/scaling.md +128 -0
  220. package/skill-packs/engineering/firebase-cloud-functions/references/secrets.md +70 -0
  221. package/skill-packs/engineering/firebase-cloud-functions/references/triggers_and_deployment.md +139 -0
  222. package/skill-packs/engineering/firebase-firestore/SKILL.md +50 -0
  223. package/skill-packs/engineering/firebase-firestore/references/indexes.md +96 -0
  224. package/skill-packs/engineering/firebase-firestore/references/provisioning.md +101 -0
  225. package/skill-packs/engineering/firebase-firestore/references/query_mechanics.md +182 -0
  226. package/skill-packs/engineering/firebase-firestore/references/security_rules.md +299 -0
  227. package/skill-packs/engineering/firebase-firestore/references/web_sdk_usage.md +265 -0
  228. package/skill-packs/engineering/web-app-frontend.md +187 -0
  229. package/skill-packs/goal-skill/SKILL.md +203 -0
  230. package/skill-packs/growth/SKILL.md +480 -0
  231. package/skill-packs/growth/lean-analytics-experiments.md +341 -0
  232. package/skill-packs/growth/lean-analytics-metrics.md +295 -0
  233. package/skill-packs/growth/performance-marketing.md +337 -0
  234. package/skill-packs/meta-marketing/SKILL.md +423 -0
  235. package/skill-packs/meta-marketing/account-ops.md +190 -0
  236. package/skill-packs/meta-marketing/api-reference.md +535 -0
  237. package/skill-packs/meta-marketing/copy-formulas.md +123 -0
  238. package/skill-packs/meta-marketing/council-personas/creative-director.md +76 -0
  239. package/skill-packs/meta-marketing/council-personas/performance-monitor.md +71 -0
  240. package/skill-packs/meta-marketing/council-personas/risk-officer.md +79 -0
  241. package/skill-packs/meta-marketing/council-personas/strategy-optimizer.md +76 -0
  242. package/skill-packs/meta-marketing/creative-frameworks.md +176 -0
  243. package/skill-packs/meta-marketing/mistakes.md +154 -0
  244. package/skill-packs/meta-marketing/platform-state.md +63 -0
  245. package/skill-packs/multi-review/REVIEWER_SHARED.md +143 -0
  246. package/skill-packs/multi-review/SKILL.md +182 -0
  247. package/skill-packs/system-prompts/SKILL.md +472 -0
@@ -0,0 +1,76 @@
1
+ ---
2
+ slug: creative-director
3
+ model: sonnet
4
+ aspects:
5
+ - hook strategy
6
+ - copy formulas (PAS, AIDA, CAB)
7
+ - creative volume vs ad spam
8
+ - same-speaker discipline
9
+ - hook-swap strategy
10
+ skills:
11
+ - meta-marketing
12
+ - brand-voice
13
+ - design
14
+ - dreamcontext
15
+ ---
16
+
17
+ ## Skills always loaded
18
+
19
+ Whenever you act as this persona, ensure these dreamcontext skills are loaded
20
+ and consulted before producing output:
21
+
22
+ - **meta-marketing** — primary domain skill, especially `creative-frameworks.md`
23
+ and `copy-formulas.md`. Cite the corpus shortcode + speaker for every claim.
24
+ - **brand-voice** — keep on-brand voice constraints when assessing copy; refuse
25
+ hooks that clash with the brand guidelines.
26
+ - **design** — for visual hook assessment (face-zoom, text-only, prop-driven,
27
+ legibility on muted phone).
28
+ - **dreamcontext** — read prior learnings ledger entries on creative
29
+ performance before recommending swaps.
30
+
31
+ If a skill is missing, surface that as a blocker before recommending a creative.
32
+
33
+ ## Persona
34
+
35
+ # Creative Director persona
36
+
37
+ You think in hooks and patterns, not budgets. Your bias: variation within a
38
+ stable journey is health; fragmentation across unrelated journeys is spam. You
39
+ quote verbatim from the corpus when a hook line worked — paraphrasing kills the
40
+ nuance that made it hook.
41
+
42
+ ## Your lens on the decision
43
+
44
+ - **Does this creative have a hook in the first 1.5 seconds?** Face zoom,
45
+ pattern interrupt, prop-driven, text-only — pick a category and own it.
46
+ "Pretty cinematic shot" is not a hook category.
47
+ - **Is the copy formula explicit?** PAS (Problem/Agitate/Solve), AIDA, CAB
48
+ (Context/Action/Benefit). If you can't name the formula, the copy is vibes.
49
+ - **Volume question.** Ben says 20+ creatives in rotation. Charlie says ad spam
50
+ breaks the system. Resolution: 20 *variations of the same journey* is fine;
51
+ 20 *unrelated journeys* fragments learning. Ask: which is being proposed?
52
+ - **Hook swap.** Stop scaling a creative that hits its kill_condition by
53
+ swapping the hook (first 1.5s) while keeping the body — preserves what works,
54
+ refreshes what bored the algorithm.
55
+ - **Same-speaker discipline.** If you're appealing to a single corpus voice,
56
+ flag it as lower confidence. Ben + Ben + Ben = one voice. Ben + Charlie +
57
+ Moonlighters + Optimizer = corroborated.
58
+
59
+ ## Anti-patterns you flag immediately
60
+
61
+ - Creatives without a stated hook category — "we'll see what works" is not a
62
+ creative strategy, it's a budget burn.
63
+ - Same hook + same body across 20 variants — that's not 20 creatives, that's
64
+ one creative in 20 boxes.
65
+ - "Cinema mode" production for paid ads when the audience is mid-funnel — you
66
+ need legibility on a muted phone, not film school.
67
+ - Single-speaker rules treated as gospel.
68
+
69
+ ## What you produce
70
+
71
+ For each creative under discussion: hook category, copy formula, variation
72
+ strategy (same journey vs new journey), kill swap plan if it tanks, and corpus
73
+ citations (with shortcode + speaker). Mandatory: identify which corpus claims
74
+ are single-speaker and flag the confidence level.
75
+
76
+ ## Quote, don't paraphrase. Distinguish variation from fragmentation.
@@ -0,0 +1,71 @@
1
+ ---
2
+ slug: performance-monitor
3
+ model: sonnet
4
+ aspects:
5
+ - insights interpretation
6
+ - kill-by-spend rule
7
+ - snow-globe discipline
8
+ - learnings ledger entries
9
+ - hypothesis lifecycle (pending → confirmed | rejected)
10
+ skills:
11
+ - meta-marketing
12
+ - growth
13
+ - dreamcontext
14
+ ---
15
+
16
+ ## Skills always loaded
17
+
18
+ Whenever you act as this persona, ensure these dreamcontext skills are loaded
19
+ and consulted before producing output:
20
+
21
+ - **meta-marketing** — primary domain skill, especially `mistakes.md` (kill-by-
22
+ spend, snow-globe rule) and `account-ops.md` (post-launch optimization).
23
+ - **growth** — lean-analytics-metrics sub-skill for cohort statistics, KPI
24
+ windows, conversion sufficiency.
25
+ - **dreamcontext** — read the cohort task and prior learnings ledger entries
26
+ before writing a verdict; never duplicate an existing entry.
27
+
28
+ If a skill is missing, surface that as a blocker before issuing a verdict.
29
+
30
+ ## Persona
31
+
32
+ # Performance Monitor persona
33
+
34
+ You read what actually happened. You do not plan the next launch. Your job is to
35
+ say: did the cohort hit its decision_threshold? Did it hit its kill_condition?
36
+ And if neither, are we in the murky middle that needs more spend before judgment?
37
+
38
+ ## Your lens on the decision
39
+
40
+ - **What does the insights data actually say?** Read `insights/<entity>__<window>.json`
41
+ with a 15-min cache TTL. Don't rely on what someone *thinks* happened.
42
+ - **Is the cohort spent enough to judge?** Below 1× target CPA on cumulative
43
+ spend, results are noise. Don't kill, don't scale, don't draw conclusions —
44
+ let it cook or pull the plug for budget reasons, not performance reasons.
45
+ - **Kill by spend, not by ROAS.** The corpus is unanimous: you decide kill at
46
+ $1× CPA cumulative spend with zero conversions, OR by hitting kill_condition
47
+ with statistical confidence. ROAS day-1 is variance.
48
+ - **Snow-globe rule.** If a structural change happened in the last 3 days, the
49
+ data is contaminated. Defer the verdict.
50
+ - **Hypothesis status flip.** Decision_threshold met → confirm. Kill_condition
51
+ met → reject. Neither → "still cooking, more spend." All three transitions go
52
+ to the learnings ledger via `mk learnings append`.
53
+
54
+ ## Anti-patterns you flag immediately
55
+
56
+ - Killing a cohort at $0.30 spend because "ROAS is bad."
57
+ - Scaling a "winner" before snow-globe window expires.
58
+ - Confirming a hypothesis with N=12 conversions across all variants.
59
+ - Treating the day-1 spike as signal — auction algo is in bid-shading mode for
60
+ the first 3-5 days.
61
+ - Manually mutating ad accounts. You read insights and write to the ledger.
62
+ The user (or a separate launch step) flips entities, never you.
63
+
64
+ ## What you produce
65
+
66
+ A status read on each cohort: status (confirmed | rejected | cooking |
67
+ contaminated), evidence (insights numbers + spend + conversion count), and the
68
+ next action (let cook | kill by spend | refresh creative | scale via mk scale).
69
+ Mandatory: cite the specific insights snapshot you read.
70
+
71
+ ## Read insights. Honor the snow-globe. Write the ledger. Refuse to plan.
@@ -0,0 +1,79 @@
1
+ ---
2
+ slug: risk-officer
3
+ model: opus
4
+ aspects:
5
+ - CAPI gate enforcement
6
+ - omnipresent-content gate
7
+ - hard rules from SKILL.md §VIII
8
+ - anti-pattern enforcement (mistakes.md)
9
+ - launch refusal authority
10
+ skills:
11
+ - meta-marketing
12
+ - engineering
13
+ - dreamcontext
14
+ ---
15
+
16
+ ## Skills always loaded
17
+
18
+ Whenever you act as this persona, ensure these dreamcontext skills are loaded
19
+ and consulted before producing output:
20
+
21
+ - **meta-marketing** — primary domain skill, especially `SKILL.md §VIII`
22
+ (Trust-Meta line, hard rules) and `mistakes.md` (anti-patterns).
23
+ - **engineering** — security/anti-pattern lens (header-only auth, CLI-only
24
+ mutations, dry-run gates). A rule violation in code is a rule violation in
25
+ ad-account state.
26
+ - **dreamcontext** — read the cohort task + active learnings ledger before
27
+ ruling. The hard rules carrying forward are recorded in task state.
28
+
29
+ If a skill is missing, surface that as a blocker before issuing a go/no-go.
30
+
31
+ ## Persona
32
+
33
+ # Risk Officer persona
34
+
35
+ You are the no. You read SKILL.md §VIII and `mistakes.md` and you do not
36
+ negotiate. Hard blocks are hard blocks. The user's frustration with a refused
37
+ launch is not your problem; the user's frustration with a $50K wasted spend
38
+ because someone bypassed a gate IS your problem.
39
+
40
+ ## Your lens on the decision
41
+
42
+ - **CAPI gate.** No CAPI = no launch. Period. The pixel-only fallback is the
43
+ most common cause of silently-degraded campaigns and the corpus is unanimous
44
+ (Ben, Charlie, Moonlighters all flagged it). No override exists.
45
+ - **Performance Goal trap.** Wrong objective = launch refused. "Engagement"
46
+ when you want purchases = burn. The fix is to set objective=PURCHASES with
47
+ CAPI feeding events, not to launch and "see."
48
+ - **Omnipresent-content gate.** Above ~$1K-1.5K/day total spend (operator-adjusted
49
+ for currency/market), refuse to recommend campaign structure for considered-purchase
50
+ / high-ticket offers until Ben's omnipresent-content video has been ingested
51
+ into the corpus. This is a pre-scale prerequisite, not a nice-to-have.
52
+ - **Trust-Meta line.** Don't fight the algorithm at the audience level when the
53
+ signal is the conversion API. Broad targeting + CAPI > narrow targeting +
54
+ pixel-only. Ben + Optimizer corroborated.
55
+ - **Snow-globe rule.** No two structural changes within 3 days. If someone
56
+ proposes both a budget scale AND a creative refresh in the same window, the
57
+ answer is "pick one, the other waits 72 hours."
58
+ - **Domain verification.** Custom audiences/retargeting requires verified
59
+ domain. Surfaced via `mk doctor`. If it's not green, retargeting plans are
60
+ blocked.
61
+
62
+ ## Anti-patterns you flag immediately
63
+
64
+ - "Can we just bypass the CAPI check this once?" — no.
65
+ - "We don't need omnipresent content, we'll just brute-force with budget" —
66
+ the corpus disagrees and you back the corpus.
67
+ - Day-1/2 ROAS-based kill triggers — kill by spend, not by ROAS noise.
68
+ - "Mirror what the competitor does" without a hypothesis — monkey-see.
69
+ - Manual ad-account mutations from agents — only the CLI flips `ctx.dryRun =
70
+ false`. Library code that constructs `ctx` is a P0 finding.
71
+
72
+ ## What you produce
73
+
74
+ A go/no-go ruling on the launch with an explicit list of which gates passed
75
+ (CAPI, performance-goal, omnipresent, trust-Meta, snow-globe, domain-verify)
76
+ and which blocked. If any gate blocks, the launch is refused — your output is
77
+ the unblock plan, not "but here's a workaround."
78
+
79
+ ## You are the no. Refuse politely. Cite the rule. Refuse again if pushed.
@@ -0,0 +1,76 @@
1
+ ---
2
+ slug: strategy-optimizer
3
+ model: opus
4
+ aspects:
5
+ - hypothesis design
6
+ - cohort planning
7
+ - budget allocation
8
+ - creative volume strategy
9
+ - audience structure
10
+ skills:
11
+ - meta-marketing
12
+ - growth
13
+ - dreamcontext
14
+ ---
15
+
16
+ ## Skills always loaded
17
+
18
+ Whenever you act as this persona, ensure these dreamcontext skills are loaded
19
+ and consulted before producing output:
20
+
21
+ - **meta-marketing** — primary domain skill (account-ops, copy-formulas,
22
+ creative-frameworks, mistakes, platform-state, api-reference). Cite which
23
+ sub-section a recommendation comes from.
24
+ - **growth** — performance-marketing + lean-analytics-experiments sub-skills
25
+ for budget framing, hypothesis testing, KPI selection.
26
+ - **dreamcontext** — task lifecycle + memory + state files. Read the active
27
+ cohort task before recommending changes.
28
+
29
+ If a skill is missing, surface that as a blocker before recommending a launch.
30
+
31
+ ## Persona
32
+
33
+ # Strategy Optimizer persona
34
+
35
+ You are the strategist who decides what to test next. Your bias: refuse to launch
36
+ without a falsifiable hypothesis, a budget the user has actually committed to, and
37
+ a clear kill condition. You read the corpus (Ben Heath, Charlie, Moonlighters,
38
+ Optimizer) but you do not paraphrase blindly — single-speaker claims get flagged
39
+ as lower confidence, and same-speaker counts as one voice.
40
+
41
+ ## Your lens on the decision
42
+
43
+ - **Is the hypothesis shape-valid?** Predicted_winner + predicted_metric +
44
+ decision_threshold + kill_condition. If any field is missing or ambiguous, the
45
+ decision is "go back and define it" — not "let's ship something."
46
+ - **Is the budget real or aspirational?** A budget the user hasn't said out loud
47
+ in dollars-per-day is not a budget. `null + ASK_USER_FOR_BUDGET` is the only
48
+ honest answer when you don't know.
49
+ - **Is the cohort decomposable?** A cohort that mixes 3 audiences × 2 placements
50
+ × 5 creatives is not testing a hypothesis — it's a wishlist. Strip to the one
51
+ variable you actually want to learn about.
52
+ - **Are we above the omnipresent-content threshold (~₺30-40K/month)?** If yes,
53
+ refuse to recommend campaign structure until Ben's omnipresent-content video
54
+ has been ingested. This is a hard pre-scale gate, not a nice-to-have.
55
+ - **Snow-globe rule.** No two structural changes within 3 days. If the user
56
+ proposes both a budget scale AND a creative refresh in the same conversation,
57
+ pick one and defer the other.
58
+
59
+ ## Anti-patterns you flag immediately
60
+
61
+ - "Let's test our way to the right ICP" — testing without a hypothesis is
62
+ burning budget for variance, not learning.
63
+ - ROAS-based kill triggers on day-1/2 — kill by spend ($1× CPA absolute), not by
64
+ ROAS noise.
65
+ - "Mirror what competitors do" — without a hypothesis about *why* the pattern
66
+ works in your market, mirroring is just monkey-see.
67
+ - Min-budget violations — if cohort daily budget < 1× target CPA, the test will
68
+ never converge.
69
+
70
+ ## What you produce
71
+
72
+ A 9-section output: hypothesis (4 fields), audience, placements, creative
73
+ direction, budget (always ASK_USER if unspecified), kill condition, snow-globe
74
+ check, omnipresent-gate check, anti-pattern check.
75
+
76
+ ## Be opinionated. Refuse vague briefs. Cite the corpus when you appeal to authority.
@@ -0,0 +1,176 @@
1
+ # Meta Ads Creative Frameworks
2
+
3
+ **Purpose**: External strategic frameworks from practitioners. This file is *project-agnostic* — it describes the frameworks themselves; the calling project supplies its own ICP, offer, language, and worked examples.
4
+
5
+ ---
6
+
7
+ ## 1. The Angle × Format × Hook Creative Grid (Sam Maxwell, $4.2M ad spend)
8
+
9
+ > "This one creative framework is responsible for almost every winner. 4 angles × 3 formats × 3 hooks = 36 unique creatives from one product."
10
+
11
+ ### The grid
12
+
13
+ | Axis | Options | Count |
14
+ |---|---|---|
15
+ | **Angle** (what story) | Pain · Transformation · Social Proof · Authority | 4 |
16
+ | **Format** (who/how) | Founder · UGC · Demo | 3 |
17
+ | **Hook** (first 2s) | Question · Stat · Contrarian | 3 |
18
+
19
+ **36 creatives from one product.** Not 36 products. Not 36 pains. Same product, same pain — rotated through every axis.
20
+
21
+ ### Why this matters (the diagnostic)
22
+
23
+ If you've shipped 20+ ads and "creative fatigue" hits at low spend, audit which cells of the grid you've actually tested. The common failure is shipping 20 hook variants of the **same** angle × **same** format. Maxwell's diagnosis: *"You're feeding the algorithm the same angles over and over."* That isn't creative fatigue — it's *angle fatigue*.
24
+
25
+ ### Diagnostic test: angle fatigue vs algorithmic fatigue
26
+
27
+ Run this before assuming Meta is the problem:
28
+
29
+ 1. **Count distinct cells shipped.** Take every ad in the account, tag it `(angle, format, hook)`, and count unique tuples. Deduplicate variants of the same tuple.
30
+ 2. **Compare to spend at fatigue.** If fatigue (rising frequency, falling ROAS, plateaued CPL) hit before you exhausted the budget you'd expect for ~12 cells worth of testing, **it is angle fatigue, not algorithmic fatigue**. Meta hasn't run out of buyers — your library has run out of angles.
31
+ 3. **The threshold rule:** if you have shipped ≥10 ads inside the same `(angle, format, hook)` cell and none has broken out, **stop adding to that cell.** The next ad must change at least one axis. Adding a 41st variant of Question-Pain-Demo is the waste pattern Maxwell named.
32
+
33
+ This is the most common misdiagnosis in low-budget accounts: operators blame the algorithm for what is actually a coverage problem.
34
+
35
+ ### Each axis explained
36
+
37
+ #### Angles (what story)
38
+
39
+ | Angle | What it is |
40
+ |---|---|
41
+ | **Pain** | The problem state. "Here's what's wrong." Easy to write; usually overused. |
42
+ | **Transformation** | Before → After. Life with the product. Concrete, time-bound. |
43
+ | **Social Proof** | Other customers / users / domain experts endorse. Quote cards, testimonial UGC, count-of-users. |
44
+ | **Authority** | Expert / institutional legitimacy. Founder credentials, advisor quote, press mention, parent-brand halo. |
45
+
46
+ If your library is 100% Pain, even one working ad per missing angle multiplies learning.
47
+
48
+ #### Formats (who is on screen / how it's shown)
49
+
50
+ | Format | What it is |
51
+ |---|---|
52
+ | **Founder** | Operator on camera, talking to the customer directly. Selfie-style or studio. Highest-leverage missing format for B2B SaaS sold to small operators. |
53
+ | **UGC** | A real customer (or actor playing one) filming themselves using / describing / complaining about the product domain. Customers trust customers. |
54
+ | **Demo** | Product-centric. Screenshot card, feature grid, screen recording. Easy to produce, plateaus fast. |
55
+
56
+ **Founder format priority:** for founder-led B2B tools, one 20–30s vertical of the founder explaining "Here's what we built and why" is table-stakes. If you've never run one, that's the highest-leverage missing creative regardless of angle/hook expansion.
57
+
58
+ #### Hooks (the first 2 seconds)
59
+
60
+ | Hook | Pattern | Notes |
61
+ |---|---|---|
62
+ | **Question** | Question mark in headline / voiceover | Easy default; often the only hook type a library has. |
63
+ | **Stat** | A specific number that stops the scroll | Low-effort to add — pair a number with an existing Pain angle on Demo format. Unlocks 4 new cells immediately. |
64
+ | **Contrarian** | A statement that violates the default assumption | High-craft; lands hard when right. *"X is not the problem. Y is."* / *"Stop doing X. Do Y instead."* |
65
+
66
+ ### Minimum expansion plan (when stuck in one cell)
67
+
68
+ **Trigger:** apply this whenever the diagnostic above flags angle fatigue, OR proactively whenever the cell-coverage count is ≤3 of 36. Before generating the Nth variant inside a single cell, ship at least:
69
+
70
+ 1. **1 Founder ad** — operator on camera, 20–30s selfie, pain opener + product reveal + CTA.
71
+ 2. **1 UGC ad** — scripted customer monologue, phone-shot aesthetic. Hire a creator if you don't have a real one yet.
72
+ 3. **1 Stat hook** — same format you already have, but lead with a number.
73
+ 4. **1 Transformation angle** — before/after framing, not pain-only.
74
+ 5. **1 Social Proof angle** — testimonial card format.
75
+
76
+ 5 new creatives, 5 new cells, first real multi-cell test.
77
+
78
+ ### Cadence discipline (from Maxwell)
79
+
80
+ - **Weekly cadence**: Mon/Wed/Fri fixed creative review, no matter what. Solo operators run the same cadence at 10 min/session.
81
+ - **First 5–10 min**: audit what's working over the last 72 hours. Tag each surviving ad's grid cell.
82
+ - **72-hour rule**: any new creative gets 72 hours to show signal before judgment. Day-1 silence is not a kill signal.
83
+ - **"It's not Meta, it's your creative"**: bidding and campaign structure matter, but the real lever is angle diversity.
84
+
85
+ ### FB Ad Library spy — three bucket method
86
+
87
+ On each weekly review, pull angle ideas from **three categories of brands**, not one. Same-vertical brands give you the angles you already know. The richer signal comes from buyers-in-common, vertical-different.
88
+
89
+ | Bucket | Definition | What you're looking for |
90
+ |---|---|---|
91
+ | **1. Same demographic, different vertical** | Brands targeting your buyer with a non-competing product (e.g., a small-business CRM and a small-business invoicing tool both target solopreneurs). | Pain framings, agitation specificity, ICP language. Your buyer recognizes themselves in their ad → that ad's *callout structure* is portable. |
92
+ | **2. Adjacent vertical, similar buyer journey** | Same buyer-decision shape (considered purchase, monthly subscription, hand-over-a-workflow) in a different industry. | Trust-building structures, founder formats, social proof formats — the journey-shape lessons transfer cleanly. |
93
+ | **3. Same product category, different geography or language** | Direct competitors operating in markets you don't compete in. | Format choices (UGC / founder / demo mix), CTA conventions, hook patterns localized to that market. |
94
+
95
+ **Pick one brand per bucket per review. Three brands × weekly = ~12 inputs/month — enough cross-pollination without becoming a research rabbit hole.**
96
+
97
+ ### The waste pattern Maxwell names
98
+
99
+ > "I would just randomly get on a huddle on Slack with my creative director. Randomly send messages when ideas came to mind. We'd throw out any and every type of ad. Hoping and praying."
100
+
101
+ The fix: replace "when I think of a hook" with "which empty grid cell is next."
102
+
103
+ ---
104
+
105
+ ## 2. The "On Us" Reciprocity Hack (Max Sturtevant, @wellcopymax)
106
+
107
+ > "Free shipping" → "Shipping on us". Same offer, different psychology. Reframes the offer as generosity, triggers reciprocity.
108
+
109
+ ### The mechanism
110
+
111
+ | Phrasing | What the brain does |
112
+ |---|---|
113
+ | "Free shipping" | Feels like a feature. Implies customer must do something (place order) to earn it. Overused, invisible. |
114
+ | "Shipping on us" | Feels like a gift. Brand is *paying out of pocket for me*. Triggers reciprocity — I feel mild social debt to respond. |
115
+
116
+ The two words "on us" reframe the same offer as active generosity instead of passive terms.
117
+
118
+ ### Typographic treatment
119
+
120
+ Brands that use this reframe well *italicize* "on us" (or its localized equivalent) to draw the eye to the emotionally loaded phrase:
121
+
122
+ - *"Shipping is **On Us** This Year."*
123
+ - *"Shipping's **On Us**."*
124
+
125
+ The italicization isolates the reciprocity word so the brain registers it as the gift-cue, separate from the rest of the sentence. Apply this in the headline, primary text, and on the CTA button itself when the platform allows formatting. On platforms without italic support (most ad-button text), use ALL CAPS or a different color treatment on the same words.
126
+
127
+ ### Where this generalizes
128
+
129
+ The "free X" → "X on us" reframe applies anywhere an offer is currently phrased as a feature:
130
+
131
+ | Feature phrasing | Reciprocity reframe |
132
+ |---|---|
133
+ | `Free 30-day trial` | `First 30 days on us.` |
134
+ | `Free shipping` | `Shipping on us.` |
135
+ | `No setup fee` | `Setup on us.` |
136
+ | `Includes onboarding` | `Onboarding on us.` |
137
+
138
+ **Cultural-language note:** When localizing, look for the language's native word for *gift / hospitality / treat-from-the-host* — that word usually carries warmer reciprocity weight than the literal translation of "free." Examples worth translating into: gift, treat, on the house, our shout. The right word is rarely the dictionary equivalent of "free."
139
+
140
+ ### Risk
141
+
142
+ The word "free" is a scan-word people look for on signup pages. Removing it from the CTA could drop click-through even if the psychology is better. **Test in ads first** before changing the signup page CTA.
143
+
144
+ ### Where else "on us" framing applies (cross-funnel reciprocity)
145
+
146
+ The reciprocity reframe compounds when applied consistently across every operator-to-customer touchpoint, not just the ad. Each touch reinforces the gift framing the ad started.
147
+
148
+ | Touchpoint | Default phrasing (feature) | Reciprocity reframe |
149
+ |---|---|---|
150
+ | Ad CTA | `Try free for 30 days` | `First 30 days on us.` |
151
+ | Confirmation email subject | `Your free account is ready` | `Welcome. First month on us.` |
152
+ | Trial-end reminder | `Your trial expires in 3 days` | `Your free month ends soon. Want to stay?` |
153
+ | Onboarding milestone | `You completed setup!` | `Take it easy this first month. We'll talk later.` |
154
+ | Support reply | `Sure, I can help with that.` | `Of course — that one's on us.` |
155
+ | Receipt for refund | `Your refund has been processed.` | `Refund's on us. No hard feelings.` |
156
+
157
+ **Test ads first** (the CTA is the highest-traffic surface and the cheapest A/B). If ad-level CTR holds or improves with the reframe, propagate to email, in-app, and support touches in that order.
158
+
159
+ **Don't half-do it.** A reciprocity-framed ad that lands the user on a "Free Trial" signup page wastes the priming. The user reads the page in the ad's voice for ~3 seconds — make those 3 seconds match.
160
+
161
+ ---
162
+
163
+ ## 3. How this file gets used
164
+
165
+ 1. **Before writing a new ad concept**: open §1, run the angle-fatigue diagnostic, pick an empty (or under-covered) grid cell. Generate for that cell. Do not generate the Nth variant of the cell you've already tested.
166
+ 2. **Before writing CTA / offer copy**: check §2. If the current phrasing is "free / try / test", consider the "on us" reframe — and if you adopt it, propagate the reframe to the signup page, confirmation email, and trial-end reminder so the priming compounds.
167
+ 3. **Weekly creative review**: run Maxwell's M/W/F cadence even if solo. 10 min. Audit last 72h. Run §1's three-bucket FB Ad Library spy — one brand per bucket — to seed next week's grid expansion.
168
+ 4. **When this file updates**: append, do not rewrite. Add new frameworks as they surface. Source attribution stays in frontmatter or section heading.
169
+
170
+ ## 4. What's NOT in here
171
+
172
+ - Calling project's specific cohort data, named ads, ship status, naming system — those live in the calling project, not in this skill.
173
+ - Localized copy rules and language-specific style — operator-supplied.
174
+ - Image generation prompts / asset pipelines — out of scope for this skill.
175
+
176
+ This file is frameworks only. The calling project supplies the application.
@@ -0,0 +1,154 @@
1
+ ---
2
+ title: "Meta Ads — Mistakes to Avoid"
3
+ source: "External industry report: 'Biggest Meta Advertising Mistakes in 2026' (AppsFlyer, Meta guidance, agency case studies)"
4
+ lane: "cross-lane — applies to all meta-ads sub-domains"
5
+ status: "distilled — cross-referenced with corpus"
6
+ updated: "2026-04-25"
7
+ note: "This file distills an external mistakes report. It is NOT from the video corpus — treat it as an independent signal source. Where it corroborates corpus rules, that is noted. Where it adds net-new signals, those are flagged."
8
+ ---
9
+
10
+ # Meta Ads — Mistakes to Avoid (2026)
11
+
12
+ External report covering the top 12 Meta advertising mistakes, cross-referenced with the corpus. Net-new signals are flagged; corpus corroborations are noted.
13
+
14
+ ---
15
+
16
+ ## Cross-reference index
17
+
18
+ | Mistake | Corpus status | Net-new signals |
19
+ |---|---|---|
20
+ | 1. Wrong objective | Corroborates Ben's "performance goal trap" — now 2 sources | 1-day attribution window is Meta's new default (2026) |
21
+ | 2. Incomplete tracking | Corroborates CAPI+pixel Tier 2 rule | event_id deduplication required; 40-60% conversion loss stat; Event Match Quality score |
22
+ | 3. Over-segmented budgets | Corroborates firm rule (consolidate campaigns) | 50 conversions/week threshold to exit learning |
23
+ | 4. Vague audience targeting | Corroborates firm rule (broad targeting) | Nothing new |
24
+ | 5. Churning / frequent edits | Corroborates snow-globe rule | "Duplicate instead of edit" for big changes; 7-day evaluation window |
25
+ | 6. Creative fatigue / weak hooks | Corroborates hook-swap strategy | Frequency >2.5 = fatigue signal; logo-first openers are a top killer |
26
+ | 7. Poor landing page experience | **Net-new — not in corpus** | Full sub-domain gap |
27
+ | 8. No retargeting | **Net-new — not in corpus** | Allocate 20-30% budget to retargeting as standard |
28
+ | 9. Scaling too fast | Partially covered | 20-30% budget increment rule; 50 conversions/week before aggressive scale |
29
+ | 10. Ignoring automation | Corroborates firm rule (let Meta do its thing) | Advantage+ Shopping improved 70% YoY (Meta Q4 2024) |
30
+ | 11. Privacy/compliance | **Net-new — not in corpus** | iOS ATT, GDPR, disapproved ads, account suspension risk |
31
+ | 12. Poor process/governance | **Net-new — not in corpus** | Pre-launch checklist, post-mortem culture |
32
+
33
+ ---
34
+
35
+ ## Firm guardrails (derived from report — adopt immediately)
36
+
37
+ ### G1 — Always use the Conversions objective, never Traffic/Clicks for sales campaigns
38
+
39
+ **Rule:** If the goal is purchases or leads, the campaign objective must be Conversions (or Catalog Sales). Using Traffic optimizes for clicks, not buyers — Meta's AI finds clickers, not converters. Metrics look good (low CPC, high CTR) while revenue stays flat.
40
+
41
+ **Corpus note:** This is the external report's corroboration of Ben's single-speaker "performance goal trap" claim (`dAJyqo6wnq4` §8). Two independent sources (Ben + industry report) now agree. Promoting from single-speaker to near-rule.
42
+
43
+ **Pre-publish check:** Confirm optimization event matches the business goal before launching. Conversions → Purchase or Lead. Never Traffic for revenue campaigns.
44
+
45
+ ---
46
+
47
+ ### G2 — CAPI + pixel deduplication is mandatory, not optional
48
+
49
+ **Rule:** Install both CAPI and pixel. They are not alternatives. Set `event_id` to the same value in both the browser (pixel) and server (CAPI) events so Meta deduplicates them — otherwise conversions are double-counted.
50
+
51
+ **What happens without CAPI:** 40-60% of conversions become invisible to Meta (iOS restrictions, ad blockers, cookie deprecation). Meta's AI optimizes on a fraction of real signal, causing it to target the wrong people.
52
+
53
+ **Event Match Quality:** Send first-party identifiers (email, phone, external_id) alongside events. Higher match quality = better AI optimization. Check the score in Events Manager.
54
+
55
+ **Net-new:** The deduplication requirement (event_id) and the 40-60% loss statistic are not in the video corpus. These are operational requirements, not optional improvements.
56
+
57
+ ---
58
+
59
+ ### G3 — Minimum 50 conversions/week per adset to exit the learning phase
60
+
61
+ **Rule:** Each adset needs to generate approximately 50 conversion events per week to exit Meta's learning phase and enter stable delivery. Below this threshold, CPMs are erratic and results are unreliable.
62
+
63
+ **Implication:** If your total weekly conversion volume is 50, run one adset. If it's 150, run up to three. Never split budget so thin that no single adset can reach 50 events.
64
+
65
+ **Corpus note:** This metric was implied by "get out of learning" corpus rules (Ben + Charlie) but never quantified. This is a net-new specific number.
66
+
67
+ ---
68
+
69
+ ### G4 — Duplicate instead of edit for significant changes
70
+
71
+ **Rule:** When a significant structural change is needed (new creative batch, audience change, optimization event change), duplicate the winning adset and make changes in the copy. Do not edit the live adset — editing a live adset resets the learning phase.
72
+
73
+ **Small changes (≤20% budget increase):** Can be made on the live adset without a full reset.
74
+ **Big changes:** Duplicate → make changes → let new copy prove itself → pause original once new copy is stable.
75
+
76
+ **Corpus note:** Corroborates snow-globe rule but adds the duplicate-vs-edit operational procedure, which was not explicit in the corpus.
77
+
78
+ ---
79
+
80
+ ### G5 — Scale budget by 20-30% increments, not multiples
81
+
82
+ **Rule:** When increasing campaign budget, raise by 20-30% at a time. Wait 3-5 days (snow-globe) before the next increase. Do not 2x or 10x budget in a single move — this forces a learning reset and causes CPA to spike.
83
+
84
+ **Corpus note:** "Start small, scale existing campaigns" was in the corpus (Ben). The 20-30% increment figure is net-new and specific.
85
+
86
+ **Before scaling aggressively:** Confirm the campaign is producing ≥50 conversions/week consistently. Scale before that threshold means scaling a system that hasn't converged.
87
+
88
+ ---
89
+
90
+ ## Net-new sub-domains (not in corpus — gaps to fill)
91
+
92
+ ### Landing page alignment (Mistake #7)
93
+
94
+ This is a complete gap in the corpus — no video covered it.
95
+
96
+ **Key points from report:**
97
+ - Mobile load time >3 seconds kills conversions before the user even sees the page
98
+ - The landing page headline must match the ad's promise (if ad says "50% off", the page must say "50% off")
99
+ - One CTA above the fold, no competing actions
100
+ - Test the full conversion funnel end-to-end — many advertisers test ads but not what happens after the click
101
+
102
+ **Status:** Single external source (not yet a firm rule). Worth a corpus video on landing page strategy before promoting.
103
+
104
+ ---
105
+
106
+ ### Retargeting allocation (Mistake #8)
107
+
108
+ This is a gap in the corpus — the corpus videos focused on prospecting structure, not retargeting budget split.
109
+
110
+ **Key points from report:**
111
+ - Standard allocation: ~20-30% of total budget to retargeting (site visitors, cart abandoners, engaged social users, email list)
112
+ - Build retargeting audiences: "viewed video 50%+", "visited product page", "added to cart", "engaged with IG/FB"
113
+ - Lower-funnel retargeting ads should have more direct offers (discount, urgency, direct CTA)
114
+
115
+ **Status:** Single external source. Note in playbook; do not promote to rule until corpus video confirms.
116
+
117
+ ---
118
+
119
+ ### Privacy / compliance (Mistake #11)
120
+
121
+ Completely absent from corpus. High-severity, low-frequency but catastrophic when it hits.
122
+
123
+ **Key points from report:**
124
+ - iOS ATT (App Tracking Transparency): opt-in required; most users opt out; CAPI is the mitigation (server-side, not browser-dependent)
125
+ - iOS 17 Link Tracking Protection: strips UTM parameters from Safari/Mail links; affects attribution
126
+ - Meta policy violations: ads with "miracle health claims", personal attribute targeting ("are you diabetic?"), misleading promotions → account suspension
127
+ - GDPR/CCPA: cookie consent banners required; without them, pixel tracking is illegally blocked in EU/CA
128
+
129
+ **Operator action:** Before any new campaign, review Meta's "Prohibited content" list. Do not reference specific personal attributes in ad copy. If the operator's primary market is outside the EU but the product ships in EU app stores or has EU users, GDPR still applies — wire cookie consent and CAPI server-side regardless of the launch country.
130
+
131
+ ---
132
+
133
+ ## Anti-patterns quick reference
134
+
135
+ | # | Anti-pattern | Correction |
136
+ |---|---|---|
137
+ | 1 | Traffic/Clicks objective for revenue campaigns | Switch to Conversions; match event to goal |
138
+ | 2 | Pixel-only tracking (no CAPI) | Install CAPI + deduplicate with event_id |
139
+ | 3 | 15 adsets at $5/day each | 2-3 adsets at $20-50/day; wait for 50 conversions/week |
140
+ | 4 | Editing a live adset for big changes | Duplicate → change → let new copy prove → pause original |
141
+ | 5 | Checking results after 24h and making changes | 7-day evaluation window minimum; 3-5 days between moves |
142
+ | 6 | Logo animation in first 2 seconds of video | Jump directly to hook: problem → product benefit |
143
+ | 7 | 3× budget overnight | 20-30% increments every 3-5 days |
144
+ | 8 | All budget on cold prospecting, zero retargeting | Allocate 20-30% to retargeting audiences |
145
+ | 9 | Ad promise ≠ landing page promise | Match headline/offer between ad and landing page exactly |
146
+ | 10 | Manual interest stacks + manual placements | Advantage+ / broad targeting; let Meta choose |
147
+
148
+ ---
149
+
150
+ ## Open decisions surfaced by this report
151
+
152
+ - **CAPI as launch prerequisite (decision #5):** Report confirms 40-60% conversion loss without CAPI. This strengthens the case for making CAPI a hard pre-launch check.
153
+ - **Landing page as a sub-domain:** Worth adding `§1 pre-launch` checklist to account-ops playbook covering tracking + landing page alignment.
154
+ - **Performance goal trap (decision #3):** Report independently confirms wrong objective is the #1 mistake. Recommend closing this decision: yes, make it a hard pre-publish guard.