taketomarket 2.2.0 → 2.3.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.
- package/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +34 -11
- package/bin/lib/campaign.cjs +12 -8
- package/bin/lib/codebase-scan.cjs +86 -0
- package/bin/lib/config.cjs +129 -0
- package/bin/lib/deploy.cjs +36 -0
- package/bin/lib/deviation.cjs +1 -1
- package/bin/lib/drift-log.cjs +4 -4
- package/bin/lib/health.cjs +32 -31
- package/bin/lib/install-detect.cjs +62 -0
- package/bin/lib/legacy-folder.cjs +100 -0
- package/bin/lib/playwright-check.cjs +26 -0
- package/bin/lib/site-location.cjs +22 -0
- package/bin/lib/state.cjs +3 -3
- package/bin/lib/svg-render.cjs +42 -0
- package/bin/ttm-tools.cjs +136 -4
- package/gates/base-gates.md +8 -8
- package/gates/gate-evaluation.md +8 -8
- package/install.js +37 -3
- package/package.json +10 -6
- package/playbooks/aeo.md +218 -114
- package/playbooks/affiliate.md +225 -160
- package/playbooks/email.md +236 -174
- package/playbooks/events.md +303 -213
- package/playbooks/landing-pages.md +305 -0
- package/playbooks/linkedin.md +264 -142
- package/playbooks/manifesto.md +322 -0
- package/playbooks/paid-ads.md +240 -189
- package/playbooks/positioning.md +340 -0
- package/playbooks/pr-media.md +308 -168
- package/playbooks/pseo.md +426 -0
- package/playbooks/seo.md +251 -158
- package/playbooks/social.md +253 -182
- package/playbooks/youtube.md +286 -181
- package/references/brand-color-theory.md +48 -0
- package/references/codex-image-gen-research.md +58 -0
- package/references/context-loading.md +6 -6
- package/references/humanizer-patterns.md +433 -0
- package/references/inline-education-blurbs.md +461 -0
- package/references/landing-page-anatomy.md +64 -0
- package/references/linkedin-post-patterns.md +174 -0
- package/references/logo-design-principles.md +55 -0
- package/references/meta-gate-evaluation.md +3 -3
- package/references/obra-superpowers-conventions.md +170 -0
- package/references/playbook-leaders.md +472 -0
- package/references/playwright-mcp-setup.md +164 -0
- package/references/positioning-check-report.md +2 -2
- package/references/pseo-page-anatomy.md +56 -0
- package/references/pseo-templates/alternative-anatomy.md +31 -0
- package/references/pseo-templates/alternative-content-playbook.md +32 -0
- package/references/pseo-templates/blog-anatomy.md +28 -0
- package/references/pseo-templates/blog-content-playbook.md +36 -0
- package/references/pseo-templates/comparison-anatomy.md +29 -0
- package/references/pseo-templates/comparison-content-playbook.md +35 -0
- package/references/pseo-templates/use-case-anatomy.md +28 -0
- package/references/pseo-templates/use-case-content-playbook.md +30 -0
- package/skills/ttm-101/SKILL.md +25 -0
- package/skills/ttm-aeo-check/SKILL.md +17 -12
- package/skills/ttm-affiliate-kit/SKILL.md +5 -0
- package/skills/ttm-archive/SKILL.md +5 -0
- package/skills/ttm-brand-refresh/SKILL.md +5 -0
- package/skills/ttm-brief/SKILL.md +5 -0
- package/skills/ttm-competitor-scan/SKILL.md +5 -0
- package/skills/ttm-deploy/SKILL.md +22 -0
- package/skills/ttm-discover/SKILL.md +17 -0
- package/skills/ttm-email-check/SKILL.md +17 -0
- package/skills/ttm-email-preflight/SKILL.md +17 -11
- package/skills/ttm-fix/SKILL.md +5 -0
- package/skills/ttm-health/SKILL.md +6 -1
- package/skills/ttm-humanize/SKILL.md +33 -0
- package/skills/ttm-icp-refresh/SKILL.md +5 -0
- package/skills/ttm-improve-skill/SKILL.md +18 -0
- package/skills/ttm-init/SKILL.md +10 -3
- package/skills/ttm-keyword-map/SKILL.md +17 -11
- package/skills/ttm-landing/SKILL.md +19 -0
- package/skills/ttm-learn/SKILL.md +5 -0
- package/skills/ttm-linkedin-post/SKILL.md +26 -0
- package/skills/ttm-measure/SKILL.md +5 -0
- package/skills/ttm-new-campaign/SKILL.md +5 -0
- package/skills/ttm-next/SKILL.md +5 -0
- package/skills/ttm-playwright-setup/SKILL.md +18 -0
- package/skills/ttm-positioning-check/SKILL.md +5 -0
- package/skills/ttm-positioning-shift/SKILL.md +5 -0
- package/skills/ttm-produce/SKILL.md +5 -0
- package/skills/ttm-pseo/SKILL.md +26 -0
- package/skills/ttm-repurpose/SKILL.md +5 -0
- package/skills/ttm-request-skill/SKILL.md +18 -0
- package/skills/ttm-research/SKILL.md +18 -6
- package/skills/ttm-resume/SKILL.md +5 -0
- package/skills/ttm-review/SKILL.md +5 -0
- package/skills/ttm-seo/SKILL.md +64 -0
- package/skills/ttm-seo-audit/SKILL.md +17 -12
- package/skills/ttm-ship/SKILL.md +5 -0
- package/skills/ttm-state/SKILL.md +5 -0
- package/skills/ttm-update/SKILL.md +152 -4
- package/skills/ttm-verify/SKILL.md +5 -0
- package/templates/agents-md.md +14 -4
- package/templates/campaign-research.md +6 -6
- package/templates/campaign-state.md +1 -1
- package/templates/claude-md.md +14 -4
- package/templates/linkedin-base-template.md +48 -0
- package/templates/next-step-footer.md +13 -0
- package/templates/production-manifest.json +4 -4
- package/templates/pseo/alternative-cms-schema.json +65 -0
- package/templates/pseo/blog-cms-schema.json +55 -0
- package/templates/pseo/comparison-cms-schema.json +56 -0
- package/templates/pseo/use-case-cms-schema.json +62 -0
- package/templates/reference-files/brand.md +51 -0
- package/templates/reference-files/product-dna.md +73 -0
- package/templates/site-scaffold/app/globals.css +2 -0
- package/templates/site-scaffold/app/layout.tsx +17 -0
- package/templates/site-scaffold/app/page.tsx +33 -0
- package/templates/site-scaffold/app/robots.ts +8 -0
- package/templates/site-scaffold/app/sitemap.ts +10 -0
- package/templates/site-scaffold/app/tokens.css +21 -0
- package/templates/site-scaffold/components/Comparison.tsx +14 -0
- package/templates/site-scaffold/components/Faq.tsx +14 -0
- package/templates/site-scaffold/components/Features.tsx +14 -0
- package/templates/site-scaffold/components/FinalCta.tsx +17 -0
- package/templates/site-scaffold/components/Footer.tsx +12 -0
- package/templates/site-scaffold/components/Hero.tsx +22 -0
- package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
- package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
- package/templates/site-scaffold/components/Problem.tsx +14 -0
- package/templates/site-scaffold/components/SocialProof.tsx +14 -0
- package/templates/site-scaffold/components/Solution.tsx +14 -0
- package/templates/site-scaffold/components/Testimonials.tsx +14 -0
- package/templates/site-scaffold/components/UseCases.tsx +14 -0
- package/templates/site-scaffold/content/.gitkeep +0 -0
- package/templates/site-scaffold/lib/.gitkeep +0 -0
- package/templates/site-scaffold/next.config.mjs +10 -0
- package/templates/site-scaffold/package.json +25 -0
- package/templates/site-scaffold/postcss.config.mjs +3 -0
- package/templates/site-scaffold/public/llms.txt +9 -0
- package/templates/site-scaffold/tsconfig.json +21 -0
- package/templates/verification-report.md +1 -1
- package/workflows/channel/linkedin-post.md +178 -0
- package/workflows/discipline/affiliate-kit.md +65 -6
- package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
- package/workflows/discipline/repurpose.md +82 -31
- package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
- package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
- package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
- package/workflows/education/ttm-101.md +114 -0
- package/workflows/lifecycle/brief-positioning-check.md +1 -1
- package/workflows/lifecycle/brief.md +64 -28
- package/workflows/lifecycle/{research.md → discover.md} +61 -19
- package/workflows/lifecycle/fix.md +72 -37
- package/workflows/lifecycle/humanize.md +280 -0
- package/workflows/lifecycle/learn.md +72 -35
- package/workflows/lifecycle/measure.md +54 -18
- package/workflows/lifecycle/produce.md +88 -37
- package/workflows/lifecycle/review.md +71 -25
- package/workflows/lifecycle/ship.md +62 -18
- package/workflows/lifecycle/verify.md +72 -26
- package/workflows/reference-mgmt/brand-refresh.md +50 -13
- package/workflows/reference-mgmt/competitor-scan.md +51 -15
- package/workflows/reference-mgmt/icp-refresh.md +48 -12
- package/workflows/reference-mgmt/positioning-check.md +55 -20
- package/workflows/reference-mgmt/positioning-shift.md +53 -17
- package/workflows/setup/init-brand-colors.md +75 -0
- package/workflows/setup/init-logo.md +113 -0
- package/workflows/setup/init-product-dna.md +83 -0
- package/workflows/setup/init-questions.md +166 -30
- package/workflows/setup/init-validation.md +22 -0
- package/workflows/setup/init.md +144 -39
- package/workflows/setup/new-campaign.md +48 -12
- package/workflows/site/deploy.md +98 -0
- package/workflows/site/landing.md +156 -0
- package/workflows/site/pseo.md +96 -0
- package/workflows/site/quality-gates.md +88 -0
- package/workflows/utility/archive.md +45 -9
- package/workflows/utility/health.md +77 -3
- package/workflows/utility/improve-skill.md +233 -0
- package/workflows/utility/next.md +38 -2
- package/workflows/utility/playwright-setup.md +128 -0
- package/workflows/utility/request-skill.md +218 -0
- package/workflows/utility/resume.md +40 -3
- package/workflows/utility/state.md +42 -7
package/playbooks/paid-ads.md
CHANGED
|
@@ -1,157 +1,187 @@
|
|
|
1
1
|
---
|
|
2
2
|
discipline: paid-ads
|
|
3
|
-
asset_types: [
|
|
4
|
-
version: "
|
|
3
|
+
asset_types: [facebook-ad, google-search-ad, linkedin-ad]
|
|
4
|
+
version: "2.0"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Paid Ads Discipline Playbook
|
|
7
|
+
# Paid Ads Discipline Playbook -- Dennis Yu's Dollar-a-Day
|
|
8
8
|
|
|
9
9
|
This playbook extends the base playbook contract (`base.md`) with paid advertising-specific production guidance, discipline gates, and format rules. It is loaded by ttm-producer during content generation and parsed by ttm-verify for gate evaluation.
|
|
10
10
|
|
|
11
|
+
The framework: **Dennis Yu's Dollar-a-Day** -- spend $1/day per ad to discover signal, scale only the winners, and never run a new ad creative that has not already proven itself organically. Combined with the **3×3 Content Grid** (3 audiences × 3 funnel stages = 9 ad sets), this is the testing protocol an engineer can run on a credit card and an evening.
|
|
12
|
+
|
|
13
|
+
If you came here to spend $5,000 a day on a single cold-audience video your agency just produced: close this file. That is not what we do.
|
|
14
|
+
|
|
11
15
|
---
|
|
12
16
|
|
|
13
17
|
## Production Guidance
|
|
14
18
|
|
|
15
|
-
###
|
|
19
|
+
### Dollar-a-Day: Test Cheap, Scale Winners
|
|
20
|
+
|
|
21
|
+
Every paid-ads campaign starts at **$1/day per ad**. One dollar. Not one hundred. Not five hundred. One.
|
|
22
|
+
|
|
23
|
+
The reason is not frugality -- it is signal. At $1/day, you can run 30 ads for $30/day total and let the platform tell you which 3 are working. At $100/day per ad, you can run one ad and learn one thing, expensively, while burning cash on five other ads that were going to lose anyway. Engineers already know this pattern: it is `git bisect` for ad creative. Test a wide surface area at near-zero cost, then concentrate spend on the commits that didn't break the build.
|
|
24
|
+
|
|
25
|
+
Concrete rules:
|
|
26
|
+
|
|
27
|
+
- **Test phase: $1/day per ad, for 7 days minimum.** Less than a week is statistical noise. More than two weeks without scaling means you have no winners and should kill the set.
|
|
28
|
+
- **Scale ladder: $1 → $30 → $100 → $300 per day.** A winner at $1/day earns $30/day for the next 30 days. Still winning? $100/day. Still winning? $300/day. Each step is a new test -- if the metric breaks at $30, do not go to $100.
|
|
29
|
+
- **Never scale a loser.** "Give it time" is the most expensive sentence in paid ads. If it lost at $1/day, it loses at $100/day -- you just lose 100× faster.
|
|
16
30
|
|
|
17
|
-
|
|
31
|
+
This is not about being cheap. It is about being honest with your money.
|
|
18
32
|
|
|
19
|
-
|
|
33
|
+
### The 3×3 Content Grid: 3 Audiences × 3 Stages
|
|
20
34
|
|
|
21
|
-
|
|
22
|
-
- The ad CTA matches the landing page primary action button
|
|
23
|
-
- The visual style (colors, imagery, tone) is consistent between ad and landing page
|
|
24
|
-
- The offer terms visible in the ad are present above the fold on the landing page
|
|
35
|
+
Every campaign produces **9 ad sets** before launch. The grid:
|
|
25
36
|
|
|
26
|
-
|
|
37
|
+
| | Cold (Awareness) | Warm (Engagement) | Hot (Conversion) |
|
|
38
|
+
|------------------|--------------------------|--------------------------|-------------------------------|
|
|
39
|
+
| **Audience A** (broadest interest) | Awareness ad for A | Engagement ad for A | Conversion ad for A |
|
|
40
|
+
| **Audience B** (look-alike / mid) | Awareness ad for B | Engagement ad for B | Conversion ad for B |
|
|
41
|
+
| **Audience C** (retargeting / hot) | Awareness ad for C | Engagement ad for C | Conversion ad for C |
|
|
27
42
|
|
|
28
|
-
|
|
43
|
+
A campaign with only conversion ads to cold audiences is what Dennis calls "well-running-dry funnel design" -- you cannot harvest leads from an audience that doesn't know you. A campaign with only awareness ads is a charity. You need all 9 cells -- the awareness ads feed the engagement ads, the engagement ads feed the conversion ads. This is the **Brand → Demand → Lead → Sale (BDLS) flywheel**.
|
|
29
44
|
|
|
30
|
-
|
|
31
|
-
- Each variation should test a different angle: different hook, different value proposition emphasis, different visual approach
|
|
32
|
-
- Variations should differ meaningfully -- changing one word does not count as a variation
|
|
33
|
-
- Label each variation clearly (e.g., "Pain Point Hook," "Social Proof Hook," "Benefit-First Hook")
|
|
45
|
+
Every ad in the brief must be tagged with its **(audience, stage)** cell. If you cannot place an ad on the 3×3 grid, the ad does not belong in the campaign.
|
|
34
46
|
|
|
35
|
-
|
|
47
|
+
### Boost Organic Winners; Do Not Make Net-New Ad Creative
|
|
36
48
|
|
|
37
|
-
|
|
49
|
+
Pure-ad creatives almost never win. The ones that do are *boosted organic content* -- posts that already performed on your feed, that already proved a human voice resonated, that the platform already has engagement data on.
|
|
38
50
|
|
|
39
|
-
|
|
51
|
+
The workflow:
|
|
40
52
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
53
|
+
1. Inventory your organic content from the last 30-90 days (posts, videos, threads, founder LinkedIn updates).
|
|
54
|
+
2. Filter for posts with above-median organic engagement on their channel.
|
|
55
|
+
3. Boost those exact posts at $1/day to a defined audience.
|
|
56
|
+
4. Do **not** rewrite, do not "make it more ad-like," do not add a hard CTA on top. Let the original post run.
|
|
45
57
|
|
|
46
|
-
|
|
58
|
+
This is the "**Goose-and-Gander**" principle: the same voice that worked organically is the only voice you should pay to amplify. Pristine ad-agency creative shot in a studio loses to a founder's iPhone-recorded explainer video, every time, because the audience can smell the difference between humans and brands.
|
|
47
59
|
|
|
48
|
-
|
|
60
|
+
If a campaign brief proposes new creative that has never been posted organically, the answer is: post it organically first, measure for 3-7 days, then decide if it earns ad budget.
|
|
49
61
|
|
|
50
|
-
|
|
51
|
-
- **Consideration campaigns** (CPC/engagement): Educational, value-driven. Creative drives clicks and engagement.
|
|
52
|
-
- **Conversion campaigns** (CPA/ROAS): Direct response, clear CTA, urgency. Creative drives specific actions.
|
|
62
|
+
### Goldilocks Audience Sizing: 1M–10M
|
|
53
63
|
|
|
54
|
-
|
|
64
|
+
Audience too small (<1M) → no learning signal, the platform can't optimize, your $1/day buys nothing.
|
|
65
|
+
Audience too large (>10M) → your $1/day spreads to noise, no concentration.
|
|
66
|
+
Audience just right (1M–10M) → the platform has room to find the right people without diffusing your signal.
|
|
55
67
|
|
|
56
|
-
|
|
68
|
+
For each ad set in the 3×3 grid, declare the targeting and the estimated audience size before launch. Audiences outside the Goldilocks band are flagged.
|
|
57
69
|
|
|
58
|
-
|
|
70
|
+
### Platform-Agnostic, Mechanics-Specific
|
|
59
71
|
|
|
60
|
-
-
|
|
61
|
-
- **Meta/Facebook:** Primary text (125 chars above fold), headline (40 chars), description (30 chars), image 1200x628px
|
|
62
|
-
- **LinkedIn:** Single image headline (70 chars), intro text (150 chars above fold), image 1200x627px
|
|
63
|
-
- **Display ads:** Varies by size (300x250, 728x90, 160x600) -- text must be legible at each size
|
|
72
|
+
The Dollar-a-Day strategy works the same on Meta, TikTok, LinkedIn, YouTube, and Google -- the strategy is platform-agnostic. The *mechanics* are platform-specific:
|
|
64
73
|
|
|
65
|
-
|
|
74
|
+
- **Meta / Facebook:** Boost organic posts directly. Audience builder + lookalikes. Cheapest CPM, best for B2C and SMB B2B.
|
|
75
|
+
- **LinkedIn:** Sponsor founder posts and document posts. Higher CPM (~$30-80) but tighter B2B targeting. Still test at $1-5/day -- LinkedIn's minimum is higher than Meta's.
|
|
76
|
+
- **Google Search:** Intent-driven, not interest-driven. Same scale ladder ($1→$30→$100→$300), but tested by keyword cluster, not by creative. Each keyword cluster is its own ad set.
|
|
77
|
+
|
|
78
|
+
Whatever the platform, the rules don't change: test cheap, boost organic, scale winners, cover the 3×3 grid.
|
|
66
79
|
|
|
67
80
|
---
|
|
68
81
|
|
|
69
82
|
## Discipline Gates
|
|
70
83
|
|
|
71
|
-
### DISC-PAID-ADS-01:
|
|
84
|
+
### DISC-PAID-ADS-01: Dollar-a-Day Test Spend Cap -- Tier 1
|
|
72
85
|
|
|
73
|
-
**Checks:**
|
|
74
|
-
**Against:** Ad
|
|
86
|
+
**Checks:** Test-phase ads are budgeted at $1/day per ad (within Dollar-a-Day tolerance) and have not been scaled prematurely.
|
|
87
|
+
**Against:** Ad brief budget table per ad set, campaign phase declaration.
|
|
75
88
|
|
|
76
89
|
#### Evaluation Criteria
|
|
77
90
|
|
|
78
|
-
1. **
|
|
79
|
-
- PASS:
|
|
80
|
-
- WARN:
|
|
81
|
-
- FAIL:
|
|
91
|
+
1. **Per-ad daily budget in test phase**
|
|
92
|
+
- PASS: Every ad in the test phase is budgeted at $1-$5/day (LinkedIn allowed up to $10/day given platform minimums), and the brief explicitly labels the phase as "test"
|
|
93
|
+
- WARN: Budget is $5-$15/day per ad without a stated reason, or the test/scale phase is unlabeled
|
|
94
|
+
- FAIL: Any test-phase ad is budgeted above $15/day, or the campaign launches at $100+/day per ad with no prior $1/day testing data
|
|
82
95
|
|
|
83
|
-
2. **
|
|
84
|
-
- PASS:
|
|
85
|
-
- WARN:
|
|
86
|
-
- FAIL:
|
|
96
|
+
2. **Scale ladder declared**
|
|
97
|
+
- PASS: Brief states the scale ladder explicitly (e.g., "$1/day for 7 days, then $30/day if CTR > X, then $100/day if CPL < Y")
|
|
98
|
+
- WARN: Scale ladder mentioned but thresholds for advancing tiers are not numerical
|
|
99
|
+
- FAIL: No scale ladder; brief jumps from test directly to "$500/day for launch week" with no in-between
|
|
87
100
|
|
|
88
|
-
### DISC-PAID-ADS-02:
|
|
101
|
+
### DISC-PAID-ADS-02: 3×3 Grid Coverage -- Tier 1
|
|
89
102
|
|
|
90
|
-
**Checks:**
|
|
91
|
-
**Against:** Ad brief
|
|
103
|
+
**Checks:** Each ad in the campaign maps to exactly one (audience, stage) cell of the 3×3 grid, and the grid has awareness coverage.
|
|
104
|
+
**Against:** Ad brief campaign matrix.
|
|
92
105
|
|
|
93
106
|
#### Evaluation Criteria
|
|
94
107
|
|
|
95
|
-
1. **
|
|
96
|
-
- PASS:
|
|
97
|
-
- WARN: 2
|
|
98
|
-
- FAIL:
|
|
108
|
+
1. **Per-ad grid cell assignment**
|
|
109
|
+
- PASS: Every ad is tagged `(audience: cold|warm|hot, stage: awareness|engagement|conversion)` and lands in exactly one cell of the 3×3 grid
|
|
110
|
+
- WARN: Most ads are tagged but 1-2 are unlabeled or span multiple cells
|
|
111
|
+
- FAIL: Ads are not tagged by audience or stage, or the brief has no grid declared
|
|
99
112
|
|
|
100
|
-
2. **
|
|
101
|
-
- PASS:
|
|
102
|
-
- WARN:
|
|
103
|
-
- FAIL:
|
|
113
|
+
2. **Awareness layer presence**
|
|
114
|
+
- PASS: At least one ad in the campaign targets a cold audience at the awareness stage (top of the BDLS flywheel)
|
|
115
|
+
- WARN: Cold-awareness exists but is severely underweighted (<10% of campaign budget) -- the well will run dry
|
|
116
|
+
- FAIL: Campaign is 100% conversion ads to warm/hot audiences with no awareness layer feeding it
|
|
104
117
|
|
|
105
|
-
### DISC-PAID-ADS-03:
|
|
118
|
+
### DISC-PAID-ADS-03: Boosted Organic Creative -- Tier 1
|
|
106
119
|
|
|
107
|
-
**Checks:**
|
|
108
|
-
**Against:**
|
|
120
|
+
**Checks:** Ad creative is repurposed organic content with documented organic performance, not net-new ad-only material.
|
|
121
|
+
**Against:** Per-ad creative provenance and organic engagement reference.
|
|
109
122
|
|
|
110
123
|
#### Evaluation Criteria
|
|
111
124
|
|
|
112
|
-
1. **
|
|
113
|
-
- PASS:
|
|
114
|
-
- WARN:
|
|
115
|
-
- FAIL:
|
|
125
|
+
1. **Organic provenance**
|
|
126
|
+
- PASS: Each ad creative is an existing organic post (link or post ID supplied) that has run on the channel for at least 3 days with above-median engagement on that account
|
|
127
|
+
- WARN: Creative is repurposed from organic content but engagement data is not cited, or the post is less than 3 days old
|
|
128
|
+
- FAIL: Creative is net-new, produced specifically for the ad, never posted organically -- spending dollars to validate something free posting could have validated first
|
|
116
129
|
|
|
117
|
-
2. **
|
|
118
|
-
- PASS:
|
|
119
|
-
- WARN:
|
|
120
|
-
- FAIL:
|
|
130
|
+
2. **Original voice preserved**
|
|
131
|
+
- PASS: The boosted post matches the original organic post (same copy, same media); ad version adds nothing the audience did not already see organically
|
|
132
|
+
- WARN: The post has been lightly edited from organic (added one CTA line) -- acceptable but flagged
|
|
133
|
+
- FAIL: The post has been rewritten into "ad voice" with stock imagery, hard CTAs, and corporate polish that the organic post did not have
|
|
121
134
|
|
|
122
|
-
### DISC-PAID-ADS-04:
|
|
135
|
+
### DISC-PAID-ADS-04: Hook-and-Voice Authenticity -- Tier 2
|
|
123
136
|
|
|
124
|
-
**Checks:** Ad
|
|
125
|
-
**Against:**
|
|
137
|
+
**Checks:** Ad hook reads as something a human actually said on this account -- the Goose-and-Gander check. If the founder wouldn't post it organically, they shouldn't pay to amplify it.
|
|
138
|
+
**Against:** Ad copy hook (first 125 chars on Meta, first 150 on LinkedIn, headline on Google).
|
|
126
139
|
|
|
127
140
|
#### Evaluation Criteria
|
|
128
141
|
|
|
129
|
-
1. **
|
|
130
|
-
- PASS:
|
|
131
|
-
- WARN:
|
|
132
|
-
- FAIL:
|
|
142
|
+
1. **Hook in ≤125 characters**
|
|
143
|
+
- PASS: Hook lands within the first 125 chars (Meta above-fold cutoff) and makes a single concrete promise or asks a single concrete question
|
|
144
|
+
- WARN: Hook lands but slightly exceeds 125 chars on Meta or 150 chars on LinkedIn -- truncation likely
|
|
145
|
+
- FAIL: No hook in the first 125 chars (lede buried), or the "hook" is generic brand throat-clearing ("We are excited to announce…")
|
|
133
146
|
|
|
134
|
-
2. **
|
|
135
|
-
- PASS:
|
|
136
|
-
- WARN:
|
|
137
|
-
- FAIL:
|
|
147
|
+
2. **Voice consistency with the account**
|
|
148
|
+
- PASS: A reader of the founder's organic feed would recognize the ad as written by the same person -- same vocabulary, same cadence, same level of polish
|
|
149
|
+
- WARN: Voice is similar to the organic feed but noticeably more polished or more corporate
|
|
150
|
+
- FAIL: Voice is unrecognizable from organic content; reads as agency-produced or ChatGPT-default-tone
|
|
138
151
|
|
|
139
|
-
### DISC-PAID-ADS-05:
|
|
152
|
+
### DISC-PAID-ADS-05: Goldilocks Audience Sizing -- Tier 2
|
|
140
153
|
|
|
141
|
-
**Checks:**
|
|
142
|
-
**Against:**
|
|
154
|
+
**Checks:** Each ad set's targeted audience falls in the 1M–10M sweet spot for testing on Meta-style platforms (with platform-appropriate adjustments).
|
|
155
|
+
**Against:** Per-ad-set targeting definition and platform-reported audience size estimate.
|
|
143
156
|
|
|
144
157
|
#### Evaluation Criteria
|
|
145
158
|
|
|
146
|
-
1. **
|
|
147
|
-
- PASS:
|
|
148
|
-
- WARN:
|
|
149
|
-
- FAIL:
|
|
159
|
+
1. **Audience size band**
|
|
160
|
+
- PASS: Each ad set targets an audience between 1M and 10M (Meta/TikTok), or 50K-2M for LinkedIn given its smaller pool, with the estimated size declared in the brief
|
|
161
|
+
- WARN: Audience is outside the band by ≤30% (e.g., 700K on Meta, 12M on Meta) with a stated reason
|
|
162
|
+
- FAIL: Audience is <100K or >50M, or no estimated audience size is declared in the brief
|
|
163
|
+
|
|
164
|
+
2. **Targeting basis is declared**
|
|
165
|
+
- PASS: Each ad set declares targeting basis (interest, lookalike %, custom audience source, keyword cluster for Google) and what cell of the 3×3 grid it serves
|
|
166
|
+
- WARN: Targeting basis is declared but rationale for size is missing
|
|
167
|
+
- FAIL: Targeting is "broad" or undeclared -- no learning signal possible
|
|
168
|
+
|
|
169
|
+
### DISC-PAID-ADS-06: Scale-on-Winners Discipline -- Tier 2
|
|
170
|
+
|
|
171
|
+
**Checks:** Scale decisions are tied to numerical thresholds, not vibes; losers are killed not "given time."
|
|
172
|
+
**Against:** Brief's scaling rules and kill criteria.
|
|
173
|
+
|
|
174
|
+
#### Evaluation Criteria
|
|
150
175
|
|
|
151
|
-
|
|
152
|
-
- PASS:
|
|
153
|
-
- WARN:
|
|
154
|
-
- FAIL: No
|
|
176
|
+
1. **Win/kill thresholds defined**
|
|
177
|
+
- PASS: Brief states numerical PASS thresholds (e.g., "CTR ≥ 1.5% AND CPL ≤ $X to advance from $1/day to $30/day") and numerical kill thresholds (e.g., "kill if CTR < 0.5% after 7 days at $1/day")
|
|
178
|
+
- WARN: Thresholds exist but only for scaling, not for killing -- losers will linger
|
|
179
|
+
- FAIL: No numerical thresholds; scaling decisions are described qualitatively ("if it's doing well…")
|
|
180
|
+
|
|
181
|
+
2. **Review cadence**
|
|
182
|
+
- PASS: Brief specifies a review cadence (e.g., "review every 7 days, hard cutoff at day 14 for any ad with no winner signal")
|
|
183
|
+
- WARN: Review cadence stated but no hard cutoff date for non-performers
|
|
184
|
+
- FAIL: No review cadence -- ads will run forever on autopilot
|
|
155
185
|
|
|
156
186
|
---
|
|
157
187
|
|
|
@@ -159,160 +189,181 @@ Write to the constraint, not around it. If the headline must be 30 characters, w
|
|
|
159
189
|
|
|
160
190
|
| Base Gate ID | Default Tier | Override Tier | Reason |
|
|
161
191
|
|-------------|-------------|---------------|--------|
|
|
162
|
-
| GATE-05 (Funnel Integrity) | Tier 2 | Tier 1 |
|
|
163
|
-
| GATE-06 (UTM Hygiene) | Tier 2 | Tier 1 |
|
|
192
|
+
| GATE-05 (Funnel Integrity) | Tier 2 | Tier 1 | Every paid click costs money. A broken funnel at $1/day is annoying; a broken funnel at $300/day is a fire. The funnel must be verified before launch. |
|
|
193
|
+
| GATE-06 (UTM Hygiene) | Tier 2 | Tier 1 | Dollar-a-Day requires per-ad-set ROAS attribution to identify winners. Missing or duplicate UTMs make the scale ladder unmeasurable -- you can't promote a winner you can't see. |
|
|
164
194
|
|
|
165
195
|
---
|
|
166
196
|
|
|
167
197
|
## Format Rules
|
|
168
198
|
|
|
169
|
-
###
|
|
199
|
+
### Meta / Facebook (Boosted Post Format)
|
|
170
200
|
|
|
171
201
|
```
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
202
|
+
Post type: Boosted existing organic post (post ID required in brief)
|
|
203
|
+
Primary text: {original organic post copy -- DO NOT REWRITE for ad voice}
|
|
204
|
+
Hook in first 125 chars (above "See more" fold)
|
|
205
|
+
Media: Original post's image/video -- do not swap for stock
|
|
206
|
+
CTA button: Optional. Default "Learn More" or "Sign Up"; omit on awareness ads
|
|
207
|
+
Budget: $1/day in test phase
|
|
208
|
+
Audience: 1M-10M people
|
|
209
|
+
Placement: Auto (let the platform decide)
|
|
178
210
|
```
|
|
179
211
|
|
|
180
|
-
###
|
|
212
|
+
### LinkedIn (Sponsored Founder Post)
|
|
181
213
|
|
|
182
214
|
```
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
Headline:
|
|
186
|
-
|
|
187
|
-
CTA button:
|
|
188
|
-
|
|
189
|
-
|
|
215
|
+
Post type: Boost existing organic post from founder's personal profile or company page
|
|
216
|
+
Intro text: {original post copy -- 150 chars above fold}
|
|
217
|
+
Headline: ≤70 chars
|
|
218
|
+
Media: Native LinkedIn document, carousel, or video from the original post
|
|
219
|
+
CTA button: Optional; omit on awareness ads
|
|
220
|
+
Budget: $5-$10/day in test phase (LinkedIn platform minimum)
|
|
221
|
+
Audience: 50K-2M (LinkedIn's pool is smaller than Meta's)
|
|
190
222
|
```
|
|
191
223
|
|
|
192
|
-
###
|
|
224
|
+
### Google Search Ads (Intent-Tested, Not Creative-Tested)
|
|
193
225
|
|
|
194
226
|
```
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
Carousel:
|
|
202
|
-
Cards: 2-10 cards
|
|
203
|
-
Card headline: {45 characters max}
|
|
204
|
-
Card image: 1080x1080px (1:1 ratio)
|
|
227
|
+
Ad group structure: 1 ad group per intent cluster (e.g., "comparison queries", "high-intent buyer queries", "problem-aware queries")
|
|
228
|
+
Headlines: 3-15 variations per ad (30 chars each), let RSA test combinations
|
|
229
|
+
Descriptions: 2-4 variations (90 chars each)
|
|
230
|
+
Budget: $1/day per ad group in test phase
|
|
231
|
+
Bidding: Manual CPC for test, switch to Target CPA only after $1/day phase identifies winners
|
|
232
|
+
Negative keywords: Required before launch -- exclude branded competitors, irrelevant intent terms
|
|
205
233
|
```
|
|
206
234
|
|
|
207
|
-
###
|
|
208
|
-
|
|
209
|
-
| Size | Use Case | Text Guidelines |
|
|
210
|
-
|------|----------|-----------------|
|
|
211
|
-
| 300x250 | Medium rectangle -- sidebars and in-content | Max 2 lines of headline text, 1 line CTA |
|
|
212
|
-
| 728x90 | Leaderboard -- page headers | Single headline + CTA, horizontal layout |
|
|
213
|
-
| 160x600 | Wide skyscraper -- sidebars | Stacked layout, headline on top, CTA at bottom |
|
|
214
|
-
| 320x50 | Mobile banner | Ultra-short: 5-7 word headline + CTA |
|
|
215
|
-
| 300x600 | Half page -- high impact | More room for messaging, image-heavy |
|
|
216
|
-
|
|
217
|
-
### Video Ad Specs
|
|
235
|
+
### Creative Constraint (All Platforms)
|
|
218
236
|
|
|
219
|
-
|
|
|
220
|
-
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
|
237
|
+
| Constraint | Rule |
|
|
238
|
+
|------------|------|
|
|
239
|
+
| Mobile-first | All creative reviewed on a phone screen first. Desktop preview is secondary. |
|
|
240
|
+
| Hook length | ≤125 characters above the fold on Meta; ≤150 on LinkedIn; in Headline 1 on Google. |
|
|
241
|
+
| Text overlay (Meta) | ≤20% of image area (legacy rule, still affects reach). |
|
|
242
|
+
| Vertical video | 9:16 for all video placements in 2026 -- Reels, Shorts, Stories, TikTok. |
|
|
225
243
|
|
|
226
244
|
---
|
|
227
245
|
|
|
228
246
|
## Examples
|
|
229
247
|
|
|
230
|
-
### Good:
|
|
248
|
+
### Good: Dollar-a-Day Campaign Brief (Meta, B2B SaaS)
|
|
231
249
|
|
|
232
250
|
```
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
251
|
+
Campaign: takeToMarket launch -- 3x3 test
|
|
252
|
+
Phase: Test ($1/day per ad, 7 days)
|
|
253
|
+
Total daily spend: $9/day (9 ad sets × $1)
|
|
254
|
+
|
|
255
|
+
3x3 Grid:
|
|
256
|
+
Cold-Awareness: Boost founder's "what I built in 4 weekends" post (organic CTR: 4.2%)
|
|
257
|
+
Cold-Engagement: Boost demo video that hit 12K organic views
|
|
258
|
+
Cold-Conversion: Boost "ship in 9 phases" carousel (organic comments: 47)
|
|
259
|
+
Warm-Awareness: Same posts, retargeted to past site visitors
|
|
260
|
+
Warm-Engagement: Same posts, retargeted to past site visitors
|
|
261
|
+
Warm-Conversion: Same posts, retargeted to past site visitors
|
|
262
|
+
Hot-Awareness: Light-touch update post, retargeted to email subscribers
|
|
263
|
+
Hot-Engagement: "What's new" thread, retargeted to email subscribers
|
|
264
|
+
Hot-Conversion: "Get 50% off" offer post, retargeted to email subscribers
|
|
265
|
+
|
|
266
|
+
Scale ladder:
|
|
267
|
+
$1/day → $30/day if (CTR ≥ 1.5% AND CPL ≤ $40) after 7 days
|
|
268
|
+
$30/day → $100/day if metrics hold for 14 days
|
|
269
|
+
$100/day → $300/day if metrics hold for 30 days
|
|
270
|
+
|
|
271
|
+
Kill criteria:
|
|
272
|
+
Any ad with CTR < 0.5% after 7 days at $1/day → kill, do not scale.
|
|
273
|
+
Any ad with no conversion at $30/day after 14 days → kill.
|
|
274
|
+
|
|
275
|
+
Audience sizing:
|
|
276
|
+
Cold: 4.2M people (developer-adjacent interests)
|
|
277
|
+
Warm: 38K site visitors over 90 days
|
|
278
|
+
Hot: 1,200 email subscribers
|
|
243
279
|
```
|
|
244
280
|
|
|
245
|
-
Why it works:
|
|
281
|
+
Why it works: 9 ad sets across the full 3×3 grid. Every ad is a boosted organic post with cited engagement. Budget starts at $9/day total. Scale ladder is numerical. Kill criteria are explicit. Audiences are sized.
|
|
246
282
|
|
|
247
|
-
### Bad:
|
|
283
|
+
### Bad: The Agency $10K-Day Cold Campaign
|
|
248
284
|
|
|
249
285
|
```
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
Above fold: Enterprise features, case studies from Fortune 500 companies
|
|
286
|
+
Campaign: Big Launch Week
|
|
287
|
+
Total daily spend: $10,000/day
|
|
288
|
+
Creative: One agency-produced 30-second hero video, never posted organically.
|
|
289
|
+
Audience: 50M people, "all marketers"
|
|
290
|
+
Bidding: Conversion-optimized, target CPA $50
|
|
291
|
+
Phase: Skipping test, going straight to scale.
|
|
292
|
+
Kill criteria: None stated.
|
|
258
293
|
```
|
|
259
294
|
|
|
260
|
-
Why it fails:
|
|
295
|
+
Why it fails: Single new creative with no organic validation -- $10K to learn what $1/day would have learned. Audience is 50M (off the Goldilocks chart -- signal will spread to noise). No 3×3 grid -- one ad, one cell. No scale ladder (already at the top). No kill criteria. By Friday, the campaign has spent $50K and produced a "we need more time" Slack message.
|
|
261
296
|
|
|
262
|
-
### Good:
|
|
297
|
+
### Good: The Boosted Founder Tweet
|
|
263
298
|
|
|
264
299
|
```
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
Variation C - Benefit-First Hook:
|
|
272
|
-
"Ship campaigns with built-in quality gates -- no more guessing"
|
|
300
|
+
Original post: Founder's LinkedIn post -- "I shipped 9 paid-ads frameworks this month, here's what stuck."
|
|
301
|
+
Organic stats: 23K impressions, 4.8% CTR, 312 comments over 5 days.
|
|
302
|
+
Boost: $1/day for 7 days to a 2M-person developer-tooling audience.
|
|
303
|
+
Hook (first 125 chars): "I shipped 9 paid-ads frameworks this month, here's what stuck. (3 worked, 6 didn't. Here's the rule that separated them.)"
|
|
304
|
+
Media: Original carousel from the post.
|
|
305
|
+
CTA: None -- awareness stage, no hard CTA needed.
|
|
273
306
|
```
|
|
274
307
|
|
|
275
|
-
Why it works:
|
|
308
|
+
Why it works: Organic provenance documented. Hook in first 125 chars. Voice = founder's actual voice. $1/day budget. Goose-and-Gander principle honored.
|
|
276
309
|
|
|
277
|
-
### Bad:
|
|
310
|
+
### Bad: The "Ad-Voice" Rewrite of an Organic Winner
|
|
278
311
|
|
|
279
312
|
```
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
313
|
+
Original post: Founder tweet -- "Stop guessing at marketing. Use a quality gate."
|
|
314
|
+
Organic stats: 18K impressions, 5.1% CTR.
|
|
315
|
+
Boost version (rewritten by agency):
|
|
316
|
+
"Introducing takeToMarket -- the revolutionary AI-powered marketing platform
|
|
317
|
+
that empowers go-to-market teams to ship campaigns with confidence.
|
|
318
|
+
Schedule your demo today!"
|
|
319
|
+
Media: Stock photo of a team high-fiving.
|
|
283
320
|
```
|
|
284
321
|
|
|
285
|
-
Why it fails:
|
|
322
|
+
Why it fails: Original was a 9-word punchy line in the founder's voice. Rewrite is corporate filler with no hook. Stock imagery replaces what the organic audience already responded to. The boost spends money to make the post *less* effective than it was for free.
|
|
286
323
|
|
|
287
324
|
---
|
|
288
325
|
|
|
289
326
|
## Anti-Patterns
|
|
290
327
|
|
|
291
|
-
1. **
|
|
328
|
+
1. **Skipping the $1/day test, launching at $100+/day per ad** -- The most expensive shortcut in paid advertising. If the creative doesn't work, you lose 100× more. If it does work, you would have found out at $1/day anyway. Test cheap is non-negotiable.
|
|
329
|
+
|
|
330
|
+
2. **All conversion ads, no awareness layer** -- The funnel runs dry. Conversion ads only convert people who already know you. Without an awareness layer feeding the pipeline, you exhaust your warm audience in weeks and CPL skyrockets.
|
|
292
331
|
|
|
293
|
-
|
|
332
|
+
3. **Net-new ad creative that has not been posted organically** -- You are spending money to test what you could have tested for free. Post it organically first. If it bombs organically with zero spend, paid spend will not save it.
|
|
294
333
|
|
|
295
|
-
|
|
334
|
+
4. **Agency-produced ad voice on a founder account** -- The audience can tell. Corporate-polished creative on a personal-brand account triggers a "this isn't really her" reflex and CTR collapses. Goose-and-Gander: if the founder wouldn't post it organically, don't pay to amplify it.
|
|
296
335
|
|
|
297
|
-
|
|
336
|
+
5. **Audience too broad ("all marketers", "small businesses")** -- 50M-person audiences spread $1/day across noise. The platform can't optimize. Target tightly: 1M-10M for Meta, 50K-2M for LinkedIn.
|
|
298
337
|
|
|
299
|
-
|
|
338
|
+
6. **"Give it time" on a losing ad** -- 7 days at $1/day is enough signal. Two weeks is excessive. If CTR is below 0.5% at $1/day, it will be below 0.5% at $100/day -- you'll just lose 100× faster. Kill losers on schedule.
|
|
300
339
|
|
|
301
|
-
|
|
340
|
+
7. **No 3×3 grid -- ad sets pointing at the same cell** -- Running three "cold-conversion" ads with no awareness or engagement layer is not a campaign, it's a scattergun. Place every ad on the grid before launch.
|
|
302
341
|
|
|
303
|
-
|
|
342
|
+
8. **Scaling a winner straight from $1 → $300/day** -- The ladder exists because each step is its own test. Performance at $1/day does not guarantee performance at $300/day. Step through $30, $100, then $300, validating at each rung.
|
|
343
|
+
|
|
344
|
+
9. **No UTM hygiene per ad set** -- You cannot identify which ad won if every ad shares the same UTM. ROAS attribution per (audience, stage) cell is the whole point of the 3×3 grid.
|
|
304
345
|
|
|
305
346
|
---
|
|
306
347
|
|
|
307
348
|
## Metrics
|
|
308
349
|
|
|
309
|
-
Track these indicators for paid ad campaigns after launch
|
|
350
|
+
Track these indicators for paid ad campaigns after launch. The Dollar-a-Day framework measures by 3×3 cell, not by overall campaign aggregate -- aggregates hide which cells are winning and which are losers being subsidized.
|
|
351
|
+
|
|
352
|
+
- **CPM by 3×3 cell** -- Cost per thousand impressions per (audience, stage) cell. Cold-awareness CPM should be lowest; hot-conversion CPM is allowed to be highest. Diverging from this hierarchy indicates targeting or creative mismatch.
|
|
353
|
+
- **CTR by 3×3 cell** -- Click-through rate per cell. PASS threshold per cell varies: cold-awareness >1.5%, warm-engagement >2.5%, hot-conversion >4%. Lower-than-expected CTR at a cell signals a creative-audience mismatch for that cell specifically.
|
|
354
|
+
- **Cost per lead (CPL) by 3×3 cell** -- Per-cell lead acquisition cost. The conversion-stage cells should produce the lowest CPL; awareness cells produce few or no leads (that's expected -- their job is feeding the funnel).
|
|
355
|
+
- **ROAS by 3×3 cell** -- Revenue per ad dollar, per cell. Only conversion-stage cells will have meaningful ROAS. Aggregate-only ROAS lies because the awareness cells (with $0 revenue) drag the number down even when they're doing their job.
|
|
356
|
+
- **Scale-ladder progression rate** -- What % of $1/day ads earn promotion to $30/day? What % survive to $100/day? Healthy campaigns promote ~10-30% of $1/day ads; >50% means thresholds are too loose, <5% means thresholds are too tight (or creative inventory is weak).
|
|
357
|
+
- **Frequency** -- Average impressions per user per ad set. Above 3-5/week per cold audience = creative fatigue is incoming, refresh from the organic inventory.
|
|
358
|
+
- **Quality score (Google) / Relevance ranking (Meta)** -- Platform-assigned creative-audience-fit scores. Low scores at a cell mean the boosted post does not match the audience -- usually a Goose-and-Gander violation.
|
|
359
|
+
- **Organic-to-paid lift ratio** -- For each boosted post, paid CTR / organic CTR. Healthy boosts should be within ±30% of organic CTR. A boost performing far below organic is a signal the audience is wrong; far above suggests the organic post was under-distributed and the paid layer is just unlocking reach.
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Sources
|
|
310
364
|
|
|
311
|
-
-
|
|
312
|
-
-
|
|
313
|
-
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
- **Quality Score (Google)** -- 1-10 rating based on expected CTR, ad relevance, and landing page experience. Higher scores reduce CPC.
|
|
317
|
-
- **Relevance Score (Meta)** -- Ad relevance diagnostics: quality ranking, engagement rate ranking, conversion rate ranking. Low scores indicate audience-creative mismatch.
|
|
318
|
-
- **Impression share** -- Percentage of eligible impressions captured. Low impression share may indicate budget or bid constraints.
|
|
365
|
+
- [Dennis Yu -- Dollar-a-Day category archive](https://dennis-yu.com/category/dollar-a-day/) -- The canonical home of the Dollar-a-Day strategy, with case studies and current updates from Dennis Yu directly.
|
|
366
|
+
- [Flowster -- Dennis Yu's $1/Day Strategy](https://flowster.app/dollar-a-day/) -- Step-by-step operationalization of the Dollar-a-Day framework with the scale ladder and 3×3 grid mechanics.
|
|
367
|
+
- [Bolder Future -- 30 Days with Dennis Yu's Dollar-a-Day](https://www.bolderfuture.com/blog/case-study-30-days-with-dennis-yus-dollar-a-day-ad-strategy) -- Practitioner case study running the strategy for 30 days, with metrics by cell.
|
|
368
|
+
- [Fitness Business Podcast -- Dollar-a-Day with Dennis Yu](https://fitnessbusinesspodcast.com/280-the-dollar-a-day-facebook-ad-strategy-with-dennis-yu/) -- Dennis explaining the strategy and the BDLS flywheel in his own words.
|
|
369
|
+
- [Hustle and Flowchart -- Dennis Yu on $1 ads](https://hustleandflowchart.com/how-to-build-a-recognizable-brand-using-1-ads-dennis-yu/) -- Goldilocks audience sizing and Goose-and-Gander principles, plus the scale-ladder discipline.
|