Compare commits
40 Commits
v2.0.0
...
development
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c6b8928fc | |||
| 8dd104c6c1 | |||
| 88414ceeba | |||
| 27f06a2b7b | |||
| ed63ccd0eb | |||
| 3f4b4ffeb5 | |||
| d9987d25c3 | |||
| 0b83502e5e | |||
| 6441f8c067 | |||
| a6811561b7 | |||
| e57899f2d5 | |||
| 1300f2ad4d | |||
| b02566d7b1 | |||
| fb2fff94eb | |||
| 8ced1fc9ef | |||
| 54c29da8ab | |||
| f8ac011df5 | |||
| bc9522e750 | |||
| 0c166511c8 | |||
| ec31133ad9 | |||
| 692b76118c | |||
| b69b236246 | |||
| a10be10a9f | |||
| f86637eace | |||
| 13fa45674c | |||
| aa3cef76f9 | |||
| 3fb8bb625d | |||
| e40125a746 | |||
| 0f39e12b76 | |||
| d36433703b | |||
| 114587831e | |||
| 908500123b | |||
| 0fd7bb5ad9 | |||
| 4b54b0dd6f | |||
| 8b0a54eef9 | |||
| c08ae5ff3d | |||
| dc7fea85bf | |||
| 4b37de5228 | |||
| 75e8221af8 | |||
| 148fe208ed |
@@ -6,13 +6,13 @@
|
||||
},
|
||||
"metadata": {
|
||||
"description": "Marketing skills for AI agents — conversion optimization, copywriting, SEO, paid ads, and growth",
|
||||
"version": "2.0.0",
|
||||
"version": "2.3.0",
|
||||
"repository": "https://github.com/coreyhaines31/marketingskills"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "marketing-skills",
|
||||
"description": "40 marketing skills for technical marketers and founders: CRO, copywriting, cold email, SEO, AI SEO, paid ads, ad creative, video production, image generation, co-marketing, churn prevention, pricing, referrals, revenue operations, sales enablement, customer research, site architecture, and more",
|
||||
"description": "43 marketing skills for technical marketers and founders: CRO, copywriting, cold email, prospecting, SEO, AI SEO, paid ads, SMS, ad creative, video production, image generation, co-marketing, churn prevention, pricing, referrals, revenue operations, sales enablement, customer research, site architecture, comprehensive AARRR-structured marketing plans, and more",
|
||||
"source": "./"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "marketing-skills",
|
||||
"description": "Marketing skills for AI agents — conversion optimization, copywriting, SEO, paid ads, ad creative, and growth",
|
||||
"version": "1.9.0",
|
||||
"version": "2.3.0",
|
||||
"author": {
|
||||
"name": "Corey Haines"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,7 @@ const path = require("path");
|
||||
|
||||
const SKILLS_DIR = "skills";
|
||||
const MARKETPLACE_FILE = ".claude-plugin/marketplace.json";
|
||||
const PLUGIN_FILE = ".claude-plugin/plugin.json";
|
||||
const README_FILE = "README.md";
|
||||
|
||||
/**
|
||||
@@ -157,13 +158,36 @@ function updateMarketplace(skills) {
|
||||
return { updated: true, removedSkillsArray: hadStaleSkillsArray };
|
||||
}
|
||||
|
||||
/**
|
||||
* Update plugin.json's `version` field to match marketplace.json's
|
||||
* `metadata.version`. Claude Code uses plugin.json's version for the update
|
||||
* check (`claude plugin update`); if it drifts from marketplace.json the
|
||||
* update path silently breaks.
|
||||
*/
|
||||
function updatePluginVersion() {
|
||||
if (!fs.existsSync(PLUGIN_FILE)) return { updated: false };
|
||||
|
||||
const marketplace = JSON.parse(fs.readFileSync(MARKETPLACE_FILE, "utf8"));
|
||||
const plugin = JSON.parse(fs.readFileSync(PLUGIN_FILE, "utf8"));
|
||||
const marketplaceVersion = marketplace.metadata && marketplace.metadata.version;
|
||||
|
||||
if (!marketplaceVersion) return { updated: false };
|
||||
if (plugin.version === marketplaceVersion) return { updated: false };
|
||||
|
||||
const oldVersion = plugin.version;
|
||||
plugin.version = marketplaceVersion;
|
||||
fs.writeFileSync(PLUGIN_FILE, JSON.stringify(plugin, null, 2) + "\n");
|
||||
return { updated: true, oldVersion, newVersion: marketplaceVersion };
|
||||
}
|
||||
|
||||
function main() {
|
||||
const skills = getSkillsWithMetadata();
|
||||
|
||||
const marketplaceResult = updateMarketplace(skills);
|
||||
const readmeUpdated = updateReadme(skills);
|
||||
const pluginResult = updatePluginVersion();
|
||||
|
||||
if (!marketplaceResult.updated && !readmeUpdated) {
|
||||
if (!marketplaceResult.updated && !readmeUpdated && !pluginResult.updated) {
|
||||
console.log("Everything is already in sync");
|
||||
return;
|
||||
}
|
||||
@@ -175,6 +199,10 @@ function main() {
|
||||
console.log(`Updated marketplace.json (${skills.length} skills)`);
|
||||
}
|
||||
|
||||
if (pluginResult.updated) {
|
||||
console.log(`Bumped plugin.json version: ${pluginResult.oldVersion} → ${pluginResult.newVersion}`);
|
||||
}
|
||||
|
||||
if (readmeUpdated) {
|
||||
console.log("Updated README.md skills table");
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ on:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'skills/**'
|
||||
- '.claude-plugin/marketplace.json'
|
||||
|
||||
jobs:
|
||||
sync:
|
||||
@@ -26,5 +27,5 @@ jobs:
|
||||
with:
|
||||
commit_user_name: Coreybot
|
||||
commit_user_email: coreybot+github-actions[bot]@users.noreply.github.com
|
||||
commit_message: "chore: sync skills with marketplace.json and README"
|
||||
file_pattern: ".claude-plugin/marketplace.json README.md"
|
||||
commit_message: "chore: sync skills with marketplace.json, plugin.json, and README"
|
||||
file_pattern: ".claude-plugin/marketplace.json .claude-plugin/plugin.json README.md"
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
# Dependencies
|
||||
node_modules/
|
||||
|
||||
# Skill install artifacts (npx skills add)
|
||||
.agents/
|
||||
.claude/
|
||||
skills-lock.json
|
||||
|
||||
# Environment variables / secrets
|
||||
.env
|
||||
.env.*
|
||||
|
||||
@@ -37,6 +37,7 @@ Skills reference each other and build on shared context. The `product-marketing`
|
||||
│schema │ │paywalls │ │social │ │ │ │community │ │competitors │ │ │
|
||||
│content │ │ │ │video │ │ │ │lead-magnt│ │comp-profile │ │ │
|
||||
│aso │ │ │ │image │ │ │ │co-mktg │ │directory │ │ │
|
||||
│ │ │ │ │sms │ │ │ │ │ │prospecting │ │ │
|
||||
└────┬─────┘ └────┬─────┘ └────┬─────┘ └─────┬──────┘ └────┬─────┘ └──────┬──────┘ └─────┬─────┘
|
||||
│ │ │ │ │ │ │
|
||||
└────────────┴─────┬──────┴──────────────┴─────────────┴──────────────┴──────────────┘
|
||||
@@ -79,6 +80,7 @@ See each skill's **Related Skills** section for the full dependency map.
|
||||
| [launch](skills/launch/) | When the user wants to plan a product launch, feature announcement, or release strategy. Also use when the user... |
|
||||
| [lead-magnets](skills/lead-magnets/) | When the user wants to create, plan, or optimize a lead magnet for email capture or lead generation. Also use when the... |
|
||||
| [marketing-ideas](skills/marketing-ideas/) | When the user needs marketing ideas, inspiration, or strategies for their SaaS or software product. Also use when the... |
|
||||
| [marketing-plan](skills/marketing-plan/) | When the user needs a comprehensive marketing plan for a client, a company they advise, or their own product. Also use... |
|
||||
| [marketing-psychology](skills/marketing-psychology/) | When the user wants to apply psychological principles, mental models, or behavioral science to marketing. Also use when... |
|
||||
| [onboarding](skills/onboarding/) | When the user wants to optimize post-signup onboarding, user activation, first-run experience, or time-to-value. Also... |
|
||||
| [paywalls](skills/paywalls/) | When the user wants to create or optimize in-app paywalls, upgrade screens, upsell modals, or feature gates. Also use... |
|
||||
@@ -86,6 +88,7 @@ See each skill's **Related Skills** section for the full dependency map.
|
||||
| [pricing](skills/pricing/) | When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions... |
|
||||
| [product-marketing](skills/product-marketing/) | When the user wants to create or update their product marketing context document. Also use when the user mentions... |
|
||||
| [programmatic-seo](skills/programmatic-seo/) | When the user wants to create SEO-driven pages at scale using templates and data. Also use when the user mentions... |
|
||||
| [prospecting](skills/prospecting/) | When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or... |
|
||||
| [referrals](skills/referrals/) | When the user wants to create, optimize, or analyze a referral program, affiliate program, or word-of-mouth strategy.... |
|
||||
| [revops](skills/revops/) | When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes.... |
|
||||
| [sales-enablement](skills/sales-enablement/) | When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also... |
|
||||
@@ -93,6 +96,7 @@ See each skill's **Related Skills** section for the full dependency map.
|
||||
| [seo-audit](skills/seo-audit/) | When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO... |
|
||||
| [signup](skills/signup/) | When the user wants to optimize signup, registration, account creation, or trial activation flows. Also use when the... |
|
||||
| [site-architecture](skills/site-architecture/) | When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal... |
|
||||
| [sms](skills/sms/) | When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts,... |
|
||||
| [social](skills/social/) | When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram,... |
|
||||
| [video](skills/video/) | When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use... |
|
||||
<!-- SKILLS:END -->
|
||||
|
||||
+37
-4
@@ -6,7 +6,7 @@ Current versions of all skills. Agents can compare against local versions to che
|
||||
|-------|---------|--------------|
|
||||
| ab-testing | 2.0.0 | 2026-05-05 |
|
||||
| ad-creative | 2.0.0 | 2026-05-05 |
|
||||
| ai-seo | 2.0.0 | 2026-05-05 |
|
||||
| ai-seo | 2.0.1 | 2026-05-18 |
|
||||
| analytics | 2.0.0 | 2026-05-05 |
|
||||
| aso | 2.0.0 | 2026-05-05 |
|
||||
| churn-prevention | 2.0.0 | 2026-05-05 |
|
||||
@@ -23,18 +23,20 @@ Current versions of all skills. Agents can compare against local versions to che
|
||||
| directory-submissions | 2.0.0 | 2026-05-05 |
|
||||
| emails | 2.0.0 | 2026-05-05 |
|
||||
| free-tools | 2.0.0 | 2026-05-05 |
|
||||
| image | 2.0.0 | 2026-05-05 |
|
||||
| image | 2.0.1 | 2026-05-18 |
|
||||
| launch | 2.0.0 | 2026-05-05 |
|
||||
| lead-magnets | 2.0.0 | 2026-05-05 |
|
||||
| marketing-ideas | 2.0.0 | 2026-05-05 |
|
||||
| marketing-plan | 1.1.0 | 2026-05-29 |
|
||||
| marketing-psychology | 2.0.0 | 2026-05-05 |
|
||||
| onboarding | 2.0.0 | 2026-05-05 |
|
||||
| ads | 2.0.0 | 2026-05-05 |
|
||||
| ads | 2.0.1 | 2026-05-26 |
|
||||
| paywalls | 2.0.0 | 2026-05-05 |
|
||||
| popups | 2.0.0 | 2026-05-05 |
|
||||
| pricing | 2.0.0 | 2026-05-05 |
|
||||
| product-marketing | 2.0.0 | 2026-05-05 |
|
||||
| programmatic-seo | 2.0.0 | 2026-05-05 |
|
||||
| prospecting | 1.0.0 | 2026-05-26 |
|
||||
| referrals | 2.0.0 | 2026-05-05 |
|
||||
| revops | 2.0.0 | 2026-05-05 |
|
||||
| sales-enablement | 2.0.0 | 2026-05-05 |
|
||||
@@ -42,11 +44,42 @@ Current versions of all skills. Agents can compare against local versions to che
|
||||
| seo-audit | 2.0.0 | 2026-05-05 |
|
||||
| signup | 2.0.0 | 2026-05-05 |
|
||||
| site-architecture | 2.0.0 | 2026-05-05 |
|
||||
| sms | 1.0.0 | 2026-05-21 |
|
||||
| social | 2.0.0 | 2026-05-05 |
|
||||
| video | 2.0.0 | 2026-05-05 |
|
||||
| video | 2.0.1 | 2026-05-18 |
|
||||
|
||||
## Recent Changes
|
||||
|
||||
### 2.3.0 (2026-05-27)
|
||||
|
||||
- Added `marketing-plan` skill — comprehensive AARRR-structured marketing plan generator. Produces a 13-section Notion-paste-ready plan document (executive summary, strategic frame, current state, AARRR breakdown, 90-day roadmap, 12-month outlook with funding-stage capability unlocks, marketing operations stack mapping skills + MCPs to AARRR stages, tactical idea bank cross-referencing all 139 `marketing-ideas` to AARRR + client-specific status, measurement framework, RACI, open decisions). Customized for current budget, team, stage, and tooling stack. Three-phase workflow: INIT (research + intake), REVIEW (section-by-section walkthrough), FINALIZE (compile + verify + optional publish to shared repo). References include methodology, plan-template, aarrr-framework, current-state-rubric (self-contained 17-section scoring rubric), ops-stack-mapping, idea-cross-reference (139-idea AARRR mapping), funding-stage-unlocks, measurement-framework, client-types (variations by B2B SaaS / D2C / hardware-hybrid / marketplace / dev tool / clinical / commerce), example-quietude (anonymized canonical reference plan, based on a real fCMO engagement with names/identifying details changed), budget-planning (two scientific methods for setting the marketing budget — Revenue-Based 5–40% of ARR, and Goal-Based formula reverse-engineered from the revenue target; plus blended CAC calculation, the 10–20% experimental buffer rule, the 3-3-2-2-2 VC growth path, and the forecasting reality check), growth-patterns (the real shape of SaaS growth — $0–10K / $10K–100K / $100K–1M phases with binding constraints, linear vs step-function vs S-curve patterns, and Channel × Product × Market layering), and team-and-agency-model (the strategy-in-house / execution-outsourced principle, three core functions Growth/Product/Content, π-shaped marketer framework, title progression Manager → Lead → Director → VP → Chief, agency selection framework, and the three-stage scaling model Early/Growth/Scale). Budget, growth-pattern, and team frameworks drawn from *Founding Marketing* by Corey Haines.
|
||||
- Total skills: 43.
|
||||
|
||||
### 2.2.0 (2026-05-26)
|
||||
|
||||
- Added `prospecting` skill for building qualified prospect lists across SaaS, B2B, and local SMB motions. Includes shared 5-phase framework (ICP → discovery → qualify → score → output) plus branch-specific references (saas-prospecting, b2b-prospecting, local-prospecting), data-sources guide covering Apollo / Clay / ZoomInfo / Clearbit / Hunter / Snov / Truelist / RB2B / Sales Nav / BuiltWith / Crunchbase / GitHub, and compliance reference (CAN-SPAM, GDPR, CASL, platform ToS).
|
||||
- Added `tools/clis/github-prospects.js` CLI for pulling GitHub stargazers, forkers, and watchers as a developer-intent signal — with pagination, enrichment, filter-based early termination, and CSV output.
|
||||
- Added new tool integration docs: `truelist` (email deliverability validation, OpenAPI-aligned), `github` (REST API for prospecting), `firecrawl` (single-target page scraping), `browserbase` (real Chromium for JS-heavy pages or interaction).
|
||||
- **ads** (2.0.0 → 2.0.1): added Google RSA Output Spec section enforcing 15 headlines × 30 chars, 4 descriptions × 90 chars, ad group structure labels, ≥8 negative keywords, ≥4 sitelinks/callouts, output ordering to avoid truncation, and a self-check before responding. Includes optional Brazilian medical (CFM) compliance rules when product context indicates that vertical.
|
||||
- Added `sequenzy` tool integration (email marketing platform with MCP support).
|
||||
- Fixed plugin.json version drift (was stuck at 1.9.0 across three releases) — `sync-skills.js` now auto-syncs `plugin.json` version to `marketplace.json` on every change. Closes #323.
|
||||
- Added skill install artifacts (`.agents/`, `.claude/`, `skills-lock.json`) to `.gitignore`.
|
||||
- Total skills: 42.
|
||||
|
||||
### 2.1.0 (2026-05-21)
|
||||
- Added `sms` skill for SMS/MMS marketing — welcome flows, abandoned cart, post-purchase, win-back, promotional sends, and transactional/auth. Includes compliance reference (TCPA, A2P 10DLC, GDPR, CASL), sequence templates with character counts, and platform comparison (Klaviyo, Postscript, Attentive, Twilio, Brevo, SimpleTexting, Customer.io).
|
||||
- Total skills: 41
|
||||
|
||||
### 2.0.1 (2026-05-18)
|
||||
|
||||
Content patch — no breaking changes, no new skills.
|
||||
|
||||
- **ai-seo** (2.0.0 → 2.0.1): aligned with Google's official AI features optimization guide. Added sections for Google's stance on AI optimization, query fan-out, agentic experiences (including UCP), explicit "what NOT to do" (scaled content abuse, etc.), and Search Console expectations. Reframed llms.txt / pricing.md / schema markup recommendations as "Google says not required, helpful for non-Google AI engines." Moved content-type tactics to `references/content-types.md` (added local/ecom Merchant Center + Business Profile guidance per Google).
|
||||
- **image** (2.0.0 → 2.0.1): refreshed model lineup to current May 2026 releases — Nano Banana / Nano Banana Pro family naming, Flux Pro 1.1 + Kontext + Dev + Schnell variants, Ideogram 3.0, ChatGPT Images 2.0 / GPT Image, Midjourney v7, Recraft V3, SD 3.5 / SDXL. Updated decision tree and trigger phrases.
|
||||
- **video** (2.0.0 → 2.0.1): refreshed model lineup — Sora 2 promoted from limited-availability caveat, Kling 2.5/3.0, added Seedance (ByteDance), Hailuo / MiniMax (character consistency), Hunyuan Video / Wan 2 (open-weight self-hosted), Pika 2.x. New "Quick picks" guide.
|
||||
|
||||
Total skills: 40 (unchanged).
|
||||
|
||||
### 2.0.0 (2026-05-05)
|
||||
|
||||
**Breaking changes** — Users must reinstall skills after this update.
|
||||
|
||||
@@ -8,7 +8,7 @@ Reference for using AI image generators, video generators, and code-based video
|
||||
|
||||
| Need | Tool Category | Best Fit |
|
||||
|------|---------------|----------|
|
||||
| Static ad images (banners, social) | Image generation | Nano Banana Pro, Flux, Ideogram |
|
||||
| Static ad images (banners, social) | Image generation | ChatGPT Images 2.0, Nano Banana Pro, Flux, Ideogram |
|
||||
| Ad images with text overlays | Image generation (text-capable) | Ideogram, Nano Banana Pro |
|
||||
| Short video ads (6-30 sec) | Video generation | Veo, Kling, Runway, Sora, Seedance |
|
||||
| Video ads with voiceover | Video gen + voice | Veo/Sora (native), or Runway + ElevenLabs |
|
||||
|
||||
+92
-1
@@ -2,7 +2,7 @@
|
||||
name: ads
|
||||
description: "When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' 'audience targeting,' 'Google Ads,' 'Facebook ads,' 'LinkedIn ads,' 'ad budget,' 'cost per click,' 'ad spend,' or 'should I run ads.' Use this for campaign strategy, audience targeting, bidding, and optimization. For bulk ad creative generation and iteration, see ad-creative. For landing page optimization, see cro."
|
||||
metadata:
|
||||
version: 2.0.0
|
||||
version: 2.0.1
|
||||
---
|
||||
|
||||
# Paid Ads
|
||||
@@ -257,6 +257,97 @@ Before launching campaigns, ensure proper tracking and account setup.
|
||||
|
||||
---
|
||||
|
||||
## Google RSA Output Spec (mandatory when generating RSAs)
|
||||
|
||||
When the user requests Google Ads RSAs (Responsive Search Ads), output MUST comply with these platform limits and structural requirements. Do not output any RSA that violates them.
|
||||
|
||||
### Hard limits per RSA (enforce before responding)
|
||||
|
||||
- **Headlines:** exactly **15** per RSA, each **≤ 30 characters** (count characters, including spaces). Render as `1. ... (NN chars)` so the reader can verify.
|
||||
- **Descriptions:** exactly **4** per RSA, each **≤ 90 characters**.
|
||||
- **Paths:** up to 2 path fields, each **≤ 15 characters**.
|
||||
- **Final URL:** present, https.
|
||||
- **Pinning:** state any pinned positions explicitly. Default = unpinned unless user asks.
|
||||
- **Per-account guardrail:** Google enforces **3 RSAs max per ad group**. When the user asks for >3, group them by ad group.
|
||||
|
||||
### Required sidecar artifacts (always include with RSA request)
|
||||
|
||||
1. **Ad group structure**, labeled `Ad group structure:` — list each ad group with its theme, target keywords (match types), and which RSAs map to it.
|
||||
2. **Negative keyword list**, labeled `Negative keywords:` — minimum **8** entries, group-level vs campaign-level called out.
|
||||
3. **Sitelinks** (≥ 4), **Callouts** (≥ 4 ≤25 chars), **Structured snippets** if relevant.
|
||||
|
||||
### Medical / CFM compliance (when product context indicates pt-BR medical practice)
|
||||
|
||||
If `.agents/product-marketing.md` indicates a Brazilian medical practice (CFM-regulated), the following terms are **forbidden** in headlines, descriptions, sitelinks, and callouts:
|
||||
|
||||
- Superlatives: `#1`, `melhor`, `o melhor`, `melhor do brasil`, `top`, `referência`
|
||||
- Outcome promises: `garantido`, `garantia`, `cura`, `cura definitiva`, `100%`, `resultado garantido`, `livre da dor`
|
||||
- Comparative claims vs other doctors/clinics
|
||||
|
||||
Use neutral framing: `atendimento`, `consulta`, `avaliação`, `segunda opinião`, `agende sua consulta`, `tire suas dúvidas`. Geo modifier (`Porto Alegre`, `POA`, `Zona Sul POA`) required where the prompt specifies a region.
|
||||
|
||||
### Output ORDER (mandatory — emit in this order to avoid truncation)
|
||||
|
||||
1. **Ad group structure** (short)
|
||||
2. **Negative keywords** (≥8, MANDATORY — emit BEFORE RSAs so it isn't dropped if output runs long)
|
||||
3. **Sitelinks** (≥4)
|
||||
4. **Callouts** (≥4)
|
||||
5. **RSA1, RSA2, RSA3** (largest section, last — safe to truncate gracefully)
|
||||
|
||||
### Output template (mandatory shape)
|
||||
|
||||
```
|
||||
Ad group structure:
|
||||
- AG1 [theme]: keywords (match types) → RSA1, RSA2
|
||||
- AG2 [theme]: ...
|
||||
|
||||
Negative keywords:
|
||||
Campaign-level:
|
||||
- <kw>
|
||||
- <kw>
|
||||
(≥4 here)
|
||||
Ad-group level:
|
||||
- AG1: <kw>, <kw>
|
||||
- AG2: <kw>, <kw>
|
||||
(≥4 more here — TOTAL ≥8 entries)
|
||||
|
||||
Sitelinks (≥4):
|
||||
- <title (≤25)> | <desc1 (≤35)> | <desc2 (≤35)> | URL
|
||||
|
||||
Callouts (≥4, each ≤25 chars):
|
||||
- <callout>
|
||||
|
||||
RSA1 — [ad group name]
|
||||
Final URL: https://...
|
||||
Path1: ... Path2: ...
|
||||
Headlines (15, each ≤30 chars):
|
||||
1. <headline> (NN chars)
|
||||
...
|
||||
15. <headline> (NN chars)
|
||||
Descriptions (4, each ≤90 chars):
|
||||
1. <description> (NN chars)
|
||||
...
|
||||
4. <description> (NN chars)
|
||||
Pinning: H1=none; H2=none; ... (or explicit pins)
|
||||
|
||||
RSA2 — ...
|
||||
RSA3 — ...
|
||||
```
|
||||
|
||||
### Self-check before responding
|
||||
|
||||
Before sending the output, run this checklist mentally:
|
||||
|
||||
- [ ] Each RSA has exactly 15 headlines, exactly 4 descriptions.
|
||||
- [ ] Every headline is ≤30 chars; every description is ≤90 chars. Character counts printed.
|
||||
- [ ] Negative keyword list labeled and ≥8 entries.
|
||||
- [ ] Ad group structure labeled.
|
||||
- [ ] If medical (CFM): no forbidden superlative/outcome words; geo modifier present where required; language is pt-BR.
|
||||
|
||||
If any check fails, rewrite before responding. Do not ship partial RSAs.
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes to Avoid
|
||||
|
||||
### Strategy
|
||||
|
||||
+86
-44
@@ -2,7 +2,7 @@
|
||||
name: ai-seo
|
||||
description: "When the user wants to optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers. Also use when the user mentions 'AI SEO,' 'AEO,' 'GEO,' 'LLMO,' 'answer engine optimization,' 'generative engine optimization,' 'LLM optimization,' 'AI Overviews,' 'optimize for ChatGPT,' 'optimize for Perplexity,' 'AI citations,' 'AI visibility,' 'zero-click search,' 'how do I show up in AI answers,' 'LLM mentions,' or 'optimize for Claude/Gemini.' Use this whenever someone wants their content to be cited or surfaced by AI assistants and AI search engines. For traditional technical and on-page SEO audits, see seo-audit. For structured data implementation, see schema."
|
||||
metadata:
|
||||
version: 2.0.0
|
||||
version: 2.0.1
|
||||
---
|
||||
|
||||
# AI SEO
|
||||
@@ -66,6 +66,45 @@ In traditional search, you need to rank on page 1. In AI search, a well-structur
|
||||
- Optimized content gets cited 3x more often than non-optimized
|
||||
- Statistics and citations boost visibility by 40%+ across queries
|
||||
|
||||
### Google's Official Stance vs. Multi-Platform Reality
|
||||
|
||||
This is important to read once before doing anything else.
|
||||
|
||||
**Google's position** ([AI features optimization guide](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide)):
|
||||
> "The best practices for SEO continue to be relevant because our generative AI features on Google Search are rooted in our core Search ranking and quality systems."
|
||||
|
||||
Google explicitly says:
|
||||
- **No special markup or files are required** for AI Overviews or AI Mode
|
||||
- **Don't chunk content for AI** — write for people, organize with normal headings and paragraphs
|
||||
- **Don't write separate content for AI** — that risks "scaled content abuse" spam policy
|
||||
- **Helpful, reliable, people-first content** wins — same E-E-A-T standards as regular Search
|
||||
- **No AI-specific Search Console reporting** — use standard SEO metrics
|
||||
|
||||
**Other AI engines (ChatGPT, Claude, Perplexity, Copilot) behave differently:**
|
||||
- They actively reward extractable structure — passages, FAQs, comparison tables, definition blocks
|
||||
- They parse `llms.txt`, structured pricing pages, and machine-readable files when present
|
||||
- They cite third-party sources (Reddit, Wikipedia, review sites) more heavily than top-ranked pages
|
||||
|
||||
**What this means for the work:**
|
||||
- The structural patterns in this skill (40–60 word answer blocks, FAQ schema, comparison tables) help **non-Google AI engines** materially. They also don't hurt Google — they're just normal good content organization.
|
||||
- For Google AI Overviews / AI Mode specifically: optimize for people and core Search, full stop. Strong E-E-A-T, original information, semantic HTML, clean indexability.
|
||||
- For ChatGPT/Claude/Perplexity: layer on the extractable structure + llms.txt + machine-readable files.
|
||||
|
||||
When in doubt, default to "write for people, organize for clarity" — that satisfies both camps.
|
||||
|
||||
### Query Fan-Out (Google AI Search)
|
||||
|
||||
Google's AI features don't just answer the one query a user typed — they generate **concurrent, related queries** under the hood and retrieve results for each.
|
||||
|
||||
Google's own example: a user asking "how to fix lawns" triggers fan-out queries about herbicides, chemical-free removal, weed prevention, etc. The AI synthesizes across all of them.
|
||||
|
||||
**Implications:**
|
||||
- Single-page-per-keyword targeting is less effective. Cover the **full topical cluster** so you're retrievable for the fan-out variants too.
|
||||
- Long-tail intent matters less than topical authority — Google's AI systems understand synonyms and semantic equivalence.
|
||||
- A page that comprehensively answers a parent topic (with sub-questions covered) will be retrieved more often than narrow per-query pages.
|
||||
|
||||
**Action**: when planning content, brainstorm the 5–10 related queries the AI is likely to fan out to and make sure your content (or your site as a whole) covers them.
|
||||
|
||||
---
|
||||
|
||||
## AI Visibility Audit
|
||||
@@ -228,6 +267,10 @@ AI systems don't just cite your website — they cite where you appear.
|
||||
|
||||
### Machine-Readable Files for AI Agents
|
||||
|
||||
> **Google's stance**: not required for AI Overviews or AI Mode. Their guide explicitly says you don't need new markup, AI files, or markdown to appear in generative AI search.
|
||||
>
|
||||
> **Why include them anyway**: non-Google AI engines (ChatGPT, Claude, Perplexity) and autonomous buying agents do reward extractable structure. The files below help with those engines without harming Google.
|
||||
|
||||
AI agents aren't just answering questions — they're becoming buyers. When an AI agent evaluates tools on behalf of a user, it needs structured, parseable information. If your pricing is locked in a JavaScript-rendered page or a "contact sales" wall, agents will skip you and recommend competitors whose information they can actually read.
|
||||
|
||||
Add these machine-readable files to your site root:
|
||||
@@ -284,7 +327,32 @@ Structured data helps AI systems understand your content. Key schemas:
|
||||
| Reviews | `Review`, `AggregateRating` | Trust signals |
|
||||
| Organization | `Organization` | Entity recognition |
|
||||
|
||||
Content with proper schema shows 30-40% higher AI visibility. For implementation, use the **schema** skill.
|
||||
Content with proper schema shows 30-40% higher AI visibility on non-Google AI engines. **Google's note**: structured data is "not required for generative AI search" but is recommended for overall SEO strategy. For implementation, use the **schema** skill.
|
||||
|
||||
---
|
||||
|
||||
## Agentic Experiences
|
||||
|
||||
Beyond AI search engines summarizing content, autonomous agents are starting to access sites directly — clicking, reading, comparing, even buying on behalf of users. Google's guide flags this as an emerging category to plan for.
|
||||
|
||||
**How agents access your site:**
|
||||
- **Visual rendering** — they screenshot/read the page like a user would
|
||||
- **DOM inspection** — they parse the page's HTML structure
|
||||
- **Accessibility tree** — they rely on the same semantic information assistive tech uses (labels, roles, landmarks, headings)
|
||||
|
||||
**What to do:**
|
||||
- **Render meaningful content without heavy JS gymnastics** — if the page is blank until 4 frameworks finish loading, agents see blank
|
||||
- **Semantic HTML** — use `<main>`, `<nav>`, `<article>`, `<button>`, proper heading hierarchy, `alt` text on images
|
||||
- **Clean accessibility tree** — every interactive element labelled; ARIA used correctly (or not at all when native HTML suffices)
|
||||
- **Stable selectors / predictable layouts** — agents struggle with sites that re-render every interaction
|
||||
- **Visible pricing, specs, contact info** — anything an agent would need to make a buying recommendation should be on a public, indexable page (this is where `/pricing.md` and similar files help)
|
||||
|
||||
**Emerging — Universal Commerce Protocol (UCP):**
|
||||
Google references UCP as a forthcoming protocol that will give agents standardized hooks for commerce interactions (catalog discovery, pricing, checkout). Watch for adoption; for now, the structural recommendations above are the precursor.
|
||||
|
||||
For ecom and local business specifically, Google highlights:
|
||||
- **Merchant Center feeds** + **Google Business Profile** for product/service visibility in AI Search
|
||||
- **Business Agent** for conversational customer engagement (where applicable)
|
||||
|
||||
---
|
||||
|
||||
@@ -340,55 +408,29 @@ Monthly manual check:
|
||||
3. Record: Are you cited? Who is? What page?
|
||||
4. Log in a spreadsheet, track month-over-month
|
||||
|
||||
### Search Console expectations
|
||||
|
||||
Google's guide is explicit: **there is no AI-specific Search Console reporting**. AI Overviews and AI Mode use core Search ranking, so the standard Search Console reports (Performance, Coverage, Core Web Vitals) are still what you measure with for Google. The third-party tools above are the only way to see cross-platform AI citation behavior.
|
||||
|
||||
---
|
||||
|
||||
## AI SEO for Different Content Types
|
||||
## What NOT to Do
|
||||
|
||||
### SaaS Product Pages
|
||||
Google's guide calls these out explicitly — they hurt across both traditional Search and AI features.
|
||||
|
||||
**Goal:** Get cited in "What is [category]?" and "Best [category]" queries.
|
||||
1. **Write separate content "for AI"**. Same content should serve people and AI. Writing variants targeted at AI systems risks the **scaled content abuse spam policy** — Google's words.
|
||||
2. **Chunk pages into AI-bait fragments**. Google's guide is direct: *"Don't break your content into tiny pieces for AI to better understand it."* Use normal paragraph + heading structure.
|
||||
3. **Generate at scale for ranking manipulation**. AI-generated content is fine *if* it meets Search Essentials and spam policies. Mass-producing thin variations does not.
|
||||
4. **Pursue inauthentic mentions**. Don't fabricate citations or bulk-spam Reddit/Wikipedia for AI visibility. Real participation only.
|
||||
5. **Block AI crawlers if you want citation**. Blocking GPTBot, PerplexityBot, ClaudeBot, Google-Extended means those engines literally cannot cite you. Block training-only crawlers (CCBot) if you must, not the search-and-cite ones.
|
||||
6. **Hide your main content behind JS that doesn't render**. Both core Search and AI agents need to see your content; JS-only rendering loses both audiences.
|
||||
7. **Skip E-E-A-T fundamentals**. Author identity, first-hand experience, expertise signals, transparent sourcing — Google's guide leans heavily on these for AI features.
|
||||
|
||||
**Optimize:**
|
||||
- Clear product description in first paragraph (what it does, who it's for)
|
||||
- Feature comparison tables (you vs. category, not just competitors)
|
||||
- Specific metrics ("processes 10,000 transactions/sec" not "blazing fast")
|
||||
- Customer count or social proof with numbers
|
||||
- Pricing transparency (AI cites pages with visible pricing) — add a `/pricing.md` file so AI agents can parse your plans without rendering your page (see "Machine-Readable Files" above)
|
||||
- FAQ section addressing common buyer questions
|
||||
---
|
||||
|
||||
### Blog Content
|
||||
## AI SEO by Content Type
|
||||
|
||||
**Goal:** Get cited as an authoritative source on topics in your space.
|
||||
|
||||
**Optimize:**
|
||||
- One clear target query per post (match heading to query)
|
||||
- Definition in first paragraph for "What is" queries
|
||||
- Original data, research, or expert quotes
|
||||
- "Last updated" date visible
|
||||
- Author bio with relevant credentials
|
||||
- Internal links to related product/feature pages
|
||||
|
||||
### Comparison/Alternative Pages
|
||||
|
||||
**Goal:** Get cited in "[X] vs [Y]" and "Best [X] alternatives" queries.
|
||||
|
||||
**Optimize:**
|
||||
- Structured comparison tables (not just prose)
|
||||
- Fair and balanced (AI penalizes obviously biased comparisons)
|
||||
- Specific criteria with ratings or scores
|
||||
- Updated pricing and feature data
|
||||
- Cite the competitors skill for building these pages
|
||||
|
||||
### Documentation / Help Content
|
||||
|
||||
**Goal:** Get cited in "How to [X] with [your product]" queries.
|
||||
|
||||
**Optimize:**
|
||||
- Step-by-step format with numbered lists
|
||||
- Code examples where relevant
|
||||
- HowTo schema markup
|
||||
- Screenshots with descriptive alt text
|
||||
- Clear prerequisites and expected outcomes
|
||||
For tactical guidance on SaaS product pages, blog content, comparison/alternative pages, documentation, and local/ecom (Google's emphasis on Merchant Center + Business Profile), see [references/content-types.md](references/content-types.md).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
# AI SEO by Content Type
|
||||
|
||||
Tactical guidance for optimizing specific content types for AI search citation. These tactics work for non-Google AI engines (ChatGPT, Claude, Perplexity, Copilot) and don't hurt Google AI Overviews / AI Mode.
|
||||
|
||||
For the cross-cutting strategy, see [SKILL.md](../SKILL.md).
|
||||
|
||||
---
|
||||
|
||||
## SaaS Product Pages
|
||||
|
||||
**Goal:** Get cited in "What is [category]?" and "Best [category]" queries.
|
||||
|
||||
**Optimize:**
|
||||
- Clear product description in first paragraph (what it does, who it's for)
|
||||
- Feature comparison tables (you vs. category, not just competitors)
|
||||
- Specific metrics ("processes 10,000 transactions/sec" not "blazing fast")
|
||||
- Customer count or social proof with numbers
|
||||
- Pricing transparency (AI cites pages with visible pricing) — add a `/pricing.md` file so AI agents can parse your plans without rendering your page (see "Machine-Readable Files" in the main skill)
|
||||
- FAQ section addressing common buyer questions
|
||||
|
||||
---
|
||||
|
||||
## Blog Content
|
||||
|
||||
**Goal:** Get cited as an authoritative source on topics in your space.
|
||||
|
||||
**Optimize:**
|
||||
- One clear target query per post (match heading to query)
|
||||
- Definition in first paragraph for "What is" queries
|
||||
- Original data, research, or expert quotes
|
||||
- "Last updated" date visible
|
||||
- Author bio with relevant credentials
|
||||
- Internal links to related product/feature pages
|
||||
|
||||
---
|
||||
|
||||
## Comparison / Alternative Pages
|
||||
|
||||
**Goal:** Get cited in "[X] vs [Y]" and "Best [X] alternatives" queries.
|
||||
|
||||
**Optimize:**
|
||||
- Structured comparison tables (not just prose)
|
||||
- Fair and balanced (AI penalizes obviously biased comparisons)
|
||||
- Specific criteria with ratings or scores
|
||||
- Updated pricing and feature data
|
||||
- Cite the `competitors` skill for building these pages
|
||||
|
||||
---
|
||||
|
||||
## Documentation / Help Content
|
||||
|
||||
**Goal:** Get cited in "How to [X] with [your product]" queries.
|
||||
|
||||
**Optimize:**
|
||||
- Step-by-step format with numbered lists
|
||||
- Code examples where relevant
|
||||
- HowTo schema markup
|
||||
- Screenshots with descriptive alt text
|
||||
- Clear prerequisites and expected outcomes
|
||||
|
||||
---
|
||||
|
||||
## Local Business / Ecom (Google emphasis)
|
||||
|
||||
Google's AI features pull from product feeds and business profiles for local + ecom queries. Optimize:
|
||||
|
||||
- **Merchant Center feeds** kept current with accurate inventory, pricing, attributes
|
||||
- **Google Business Profile** complete with hours, services, photos, posts, Q&A answered
|
||||
- **Reviews** — recent + sufficient volume; respond to reviews to signal active management
|
||||
- **Service area schema** for local services
|
||||
- **Business Agent** (where available) for conversational customer engagement
|
||||
@@ -151,6 +151,7 @@ Use this data to inform your writing — not as a checklist to satisfy.
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **prospecting**: For building and qualifying the prospect list that this skill writes outreach against — the natural upstream step before cold-email
|
||||
- **copywriting**: For landing pages and web copy
|
||||
- **emails**: For lifecycle/nurture email sequences (not cold outreach)
|
||||
- **social**: For LinkedIn and social posts
|
||||
|
||||
@@ -403,6 +403,7 @@ Only ask if not answered by context or input:
|
||||
## Related Skills
|
||||
|
||||
- **competitors**: For creating comparison/alternative pages from these profiles
|
||||
- **prospecting**: For broader list-building qualification (this skill does deep research on specific accounts; prospecting builds the initial list)
|
||||
- **customer-research**: For mining reviews and community sentiment in depth
|
||||
- **content-strategy**: For using competitor content gaps to plan your own content
|
||||
- **seo-audit**: For auditing your own site relative to competitors
|
||||
|
||||
@@ -267,4 +267,6 @@ Don't ask all five at once — lead with #1 and #2, then follow up as needed.
|
||||
| Creating a churn prevention strategy from churn research | `churn-prevention` |
|
||||
| Planning paid ads informed by research | `ads` |
|
||||
| Writing cold email using research on pain/trigger | `cold-email` |
|
||||
| Translating customer research into an ICP for outbound | `prospecting` |
|
||||
| Planning content based on discovered topics | `content-strategy` |
|
||||
| Rolling research into a comprehensive marketing plan | `marketing-plan` |
|
||||
|
||||
+22
-17
@@ -1,8 +1,8 @@
|
||||
---
|
||||
name: image
|
||||
description: "When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product mockups, profile banners, listing visuals, or brand assets. Also use when the user mentions 'AI image generation,' 'generate an image,' 'create a graphic,' 'product mockup,' 'hero image,' 'social media graphic,' 'banner image,' 'cover photo,' 'profile banner,' 'listing screenshot,' 'Flux,' 'Midjourney,' 'DALL-E,' 'GPT Image,' 'Ideogram,' 'Gemini image,' 'Canva,' 'Figma,' 'image optimization,' 'compress images,' 'WebP,' or 'OG image.' Use this for general-purpose marketing image creation and optimization. For paid ad image creative and platform-specific ad specs, see ad-creative. For video production, see video."
|
||||
description: "When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product mockups, profile banners, listing visuals, or brand assets. Also use when the user mentions 'AI image generation,' 'generate an image,' 'create a graphic,' 'product mockup,' 'hero image,' 'social media graphic,' 'banner image,' 'cover photo,' 'profile banner,' 'listing screenshot,' 'Flux,' 'Flux Kontext,' 'Midjourney,' 'DALL-E,' 'GPT Image,' 'ChatGPT Images,' 'Ideogram,' 'Gemini image,' 'Nano Banana,' 'Recraft,' 'Stable Diffusion,' 'Canva,' 'Figma,' 'image optimization,' 'compress images,' 'WebP,' or 'OG image.' Use this for general-purpose marketing image creation and optimization. For paid ad image creative and platform-specific ad specs, see ad-creative. For video production, see video."
|
||||
metadata:
|
||||
version: 2.0.0
|
||||
version: 2.0.1
|
||||
---
|
||||
|
||||
# Image
|
||||
@@ -55,36 +55,41 @@ Generate original images from text prompts. The fastest way to create unique mar
|
||||
|
||||
| Model | Best For | Text in Images | API | Cost |
|
||||
|-------|----------|:-:|-----|------|
|
||||
| **Gemini Image** (Google) | All-around, editing, text rendering | Good | [Gemini API](https://ai.google.dev/gemini-api/docs/image-generation) | Check [pricing](https://ai.google.dev/gemini-api/docs/pricing) |
|
||||
| **Flux** (Black Forest Labs) | Photorealism, brand consistency, batch | Limited | [BFL API](https://docs.bfl.ai/), Replicate, fal.ai | Check [pricing](https://docs.bfl.ai/quick_start/pricing) |
|
||||
| **Ideogram** | Typography, branded graphics | Best | [Ideogram API](https://developer.ideogram.ai/) | Check [pricing](https://about.ideogram.ai/api-pricing) |
|
||||
| **GPT Image** (OpenAI) | General purpose, ChatGPT integration | Good | [OpenAI API](https://platform.openai.com/docs/guides/image-generation) | Check [pricing](https://platform.openai.com/docs/pricing) |
|
||||
| **Midjourney** | Artistic, high-aesthetic | Poor | No official API | Subscription-based |
|
||||
| **Stable Diffusion** | Self-hosted, customizable | Varies | Open source | Free (GPU costs) |
|
||||
| **Gemini Image** (Google, "Nano Banana" / Nano Banana Pro) | All-around, editing, multi-image reference, text rendering | Good | [Gemini API](https://ai.google.dev/gemini-api/docs/image-generation) | Check [pricing](https://ai.google.dev/gemini-api/docs/pricing) |
|
||||
| **Flux** (Black Forest Labs — Pro 1.1, Kontext, Dev, Schnell) | Photorealism, brand consistency, batch; Kontext for in-image editing | Limited | [BFL API](https://docs.bfl.ai/), Replicate, fal.ai | Check [pricing](https://docs.bfl.ai/quick_start/pricing) |
|
||||
| **Ideogram 3.0** | Typography, branded graphics, accurate text rendering | Best | [Ideogram API](https://developer.ideogram.ai/) | Check [pricing](https://about.ideogram.ai/api-pricing) |
|
||||
| **ChatGPT Images 2.0 / GPT Image** (OpenAI) | General purpose, ChatGPT integration, native editing | Good | [OpenAI API](https://platform.openai.com/docs/guides/image-generation) | Check [pricing](https://platform.openai.com/docs/pricing) |
|
||||
| **Midjourney v7** | Artistic, high-aesthetic, art-directed visuals | Improved | No official API; Discord + Web | Subscription-based |
|
||||
| **Recraft V3** | Vector + brand-consistent illustrations, design assets | Strong | [Recraft API](https://www.recraft.ai/docs) | Per-credit |
|
||||
| **Stable Diffusion 3.5 / SDXL** | Self-hosted, customizable, fine-tunable | Varies | Open source | Free (GPU costs) |
|
||||
|
||||
**Note:** DALL-E 3 is deprecated. OpenAI's current image models are the GPT Image family (`gpt-image-1`, etc.).
|
||||
**Note:** DALL-E 3 is fully deprecated. OpenAI's current image models are the GPT Image / ChatGPT Images family (`gpt-image-1` and later).
|
||||
|
||||
### When to Use Which
|
||||
|
||||
```
|
||||
Need text/headlines in the image?
|
||||
├── Yes → Ideogram (best), Gemini (good), GPT Image (decent)
|
||||
├── Yes → Ideogram 3.0 (best), Gemini (good), GPT Image / ChatGPT Images (decent)
|
||||
└── No ↓
|
||||
|
||||
Need product/brand consistency across images?
|
||||
├── Yes → Flux (multi-image reference)
|
||||
Need product/brand consistency across many images?
|
||||
├── Yes → Flux (multi-image reference), Gemini Nano Banana Pro, Recraft V3
|
||||
└── No ↓
|
||||
|
||||
Need to edit an existing image?
|
||||
├── Yes → Gemini (native editing), Flux Flex
|
||||
Need to edit an existing image (in-place)?
|
||||
├── Yes → Gemini (native editing), Flux Kontext, ChatGPT Images
|
||||
└── No ↓
|
||||
|
||||
Need highest visual quality?
|
||||
├── Yes → Flux Pro, Midjourney
|
||||
Need vector / illustrative brand assets?
|
||||
├── Yes → Recraft V3 (best for vector + brand consistency), Midjourney (artistic)
|
||||
└── No ↓
|
||||
|
||||
Need highest visual quality / art direction?
|
||||
├── Yes → Flux Pro 1.1, Midjourney v7
|
||||
└── No ↓
|
||||
|
||||
Need volume at low cost?
|
||||
└── Flux Klein, Gemini Flash
|
||||
└── Flux Schnell, Gemini Flash, Stable Diffusion (self-hosted)
|
||||
```
|
||||
|
||||
### Prompting Basics
|
||||
|
||||
@@ -160,6 +160,7 @@ When recommending ideas, provide for each:
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **marketing-plan**: When the user wants a comprehensive plan instead of standalone ideas. Section 12 of the plan cross-references all 139 ideas here against AARRR stages and client-specific status.
|
||||
- **programmatic-seo**: For scaling SEO content (#4)
|
||||
- **competitors**: For comparison pages (#11)
|
||||
- **emails**: For email marketing tactics
|
||||
|
||||
@@ -0,0 +1,270 @@
|
||||
---
|
||||
name: marketing-plan
|
||||
description: When the user needs a comprehensive marketing plan for a client, a company they advise, or their own product. Also use when the user mentions "marketing plan," "growth plan," "GTM plan," "go-to-market plan," "AARRR plan," "90-day marketing plan," "12-month marketing roadmap," "fractional CMO plan," or "fCMO plan." Generates an exhaustive 13-section plan structured by AARRR (Acquisition, Activation, Retention, Referral, Revenue), customized to the client's current budget, team, and stage, mapped to future funding milestones, cross-referenced with the 139-idea marketing-ideas library and an embedded 17-section current-state audit rubric, with a full marketing operations stack showing which skills and MCP/API integrations execute each part. Outputs a Notion-paste-ready markdown document. For positioning and ICP context before planning, see product-marketing. For stage-specific deep work, see onboarding, signup, emails, referrals, pricing.
|
||||
---
|
||||
|
||||
# Marketing Plan
|
||||
|
||||
You are an expert marketing strategist operating at fCMO (fractional CMO) level. Your job is to produce a comprehensive, executable 12-month marketing plan for a specific client or company, structured by AARRR (Acquisition, Activation, Retention, Referral, Revenue), customized to their actual budget, team, stage, and capabilities, and cross-referenced with the full marketing-ideas library and the embedded 17-section current-state audit rubric.
|
||||
|
||||
The deliverable is a single Notion-paste-ready markdown document — the kind of strategy artifact a fractional CMO would present to founders. It must be specific to the client (not generic), exhaustive (covers every tactical surface area, not just what's prescribed), and operationally honest (reflects what their team can actually execute with their current stack and headcount).
|
||||
|
||||
## When to use
|
||||
|
||||
Invoke this skill when:
|
||||
|
||||
- A user is starting a new client engagement as a fractional CMO or marketing consultant
|
||||
- A founder needs a 12-month marketing roadmap they can share with their team or investors
|
||||
- A team wants to consolidate scattered marketing work (SEO research, brand voice docs, audit findings, onboarding analyses) into a single coherent plan
|
||||
- The user explicitly asks for a "marketing plan," "growth plan," "GTM plan," "fCMO plan," "AARRR plan," or "90-day + 12-month marketing roadmap"
|
||||
- An existing scored audit (from any prior current-state assessment) needs to be sequenced into an action plan
|
||||
|
||||
**Do not use** when the user wants a tactical execution document for a single channel (use the channel-specific skill instead — `emails`, `ads`, `seo-audit`, `onboarding`, etc.), or when the user just wants marketing ideas without commitment to a plan (use `marketing-ideas`).
|
||||
|
||||
## How this skill is invoked
|
||||
|
||||
```
|
||||
/marketing-plan {client-name-or-domain}
|
||||
```
|
||||
|
||||
Examples:
|
||||
- `/marketing-plan quietude.app`
|
||||
- `/marketing-plan acme-saas`
|
||||
- `/marketing-plan` (will prompt for client name)
|
||||
|
||||
On invocation, the skill reads `~/marketing-plans/{client-slug}/progress.md` and resumes based on the state machine documented in `references/methodology.md` Step 1.1.2 (fresh → INIT → REVIEW → FINALIZE → finalized). Finalized plans are never silently overwritten — the user is asked whether to revise as v{N+1}, start fresh, or re-open a section.
|
||||
|
||||
## The three phases
|
||||
|
||||
The full workflow lives in `references/methodology.md`. Quick summary:
|
||||
|
||||
### Phase 1 — INIT (research + intake)
|
||||
|
||||
Read all available materials about the client. Pull data from any wired tools (Ahrefs, GA4 MCP, Stripe MCP, etc.). Conduct structured intake covering: client overview, ICP, current funnel state, funding state, team composition, marketing budget, channels currently active, what's already been done, what's in-flight, what's stuck, tooling stack. Save to `research.md`.
|
||||
|
||||
Use the embedded 17-section current-state rubric (`references/current-state-rubric.md`) as your scoring lens for Section 3 — score each section 0–5 against available materials.
|
||||
|
||||
### Phase 2 — REVIEW (walk through each of 13 sections interactively)
|
||||
|
||||
Present each section's draft in chat. For each section you can:
|
||||
- Approve as-is ("good," "next")
|
||||
- Adjust ("change X to Y")
|
||||
- Add observations ("also mention Z")
|
||||
- Expand ("go deeper on this")
|
||||
|
||||
Save each confirmed section to the progress file as you go. The skill is resumable — if interrupted, run `/marketing-plan client-name` again to pick up at the next unfinished section.
|
||||
|
||||
### Phase 3 — FINALIZE (compile + verify + publish)
|
||||
|
||||
Compile all 13 sections into `final_plan.md`. Run a verification pass: confirm cross-references (marketing-ideas idea numbers, related skills, MCP integrations) are accurate; check for machine-specific paths that shouldn't ship; ensure the brand voice matches what was captured in the strategic frame.
|
||||
|
||||
Optionally offer to publish to a shared GitHub repo (e.g., `{client-org}/{client-context}/marketing/plan.md`) if the user wants to share it with the team.
|
||||
|
||||
## The 13-section plan structure
|
||||
|
||||
Full template lives in `references/plan-template.md`. The structure:
|
||||
|
||||
1. **Executive summary** — 3 big bets, 90-day priorities, 12-month outcome. Written so it can be lifted into an investor or board update.
|
||||
2. **Strategic frame** — Category claim, ICP distilled, business-model logic, brand voice non-negotiables.
|
||||
3. **Current state** — Team, budget, what's done, what's in-flight, what's stuck. Scored against the embedded 17-section current-state rubric (`references/current-state-rubric.md`).
|
||||
4. **Acquisition** — How strangers become aware. Channels current + planned + skipped, 90-day and 12-month moves, skills + tools.
|
||||
5. **Activation** — How a new user has an experience that converts. Onboarding, first session, App Store / signup, paywall, lifecycle setup.
|
||||
6. **Retention** — How a converted user stays and deepens. Lifecycle flows, churn prevention, win-back, support-as-marketing.
|
||||
7. **Referral** — How retained users bring more users. Ambassador / affiliate / Guides / WOM mechanics.
|
||||
8. **Revenue** — Pricing, packaging, upsells, bundles, hardware-to-software, B2B ACV.
|
||||
9. **90-day roadmap** — Weeks 1–2 (Unblock), 3–4 (Foundation), 5–8 (Velocity), 9–12 (Compound). AARRR-tagged, owner-assigned.
|
||||
10. **12-month outlook** — Quarterly milestones tied to funding-stage capability unlocks.
|
||||
11. **Marketing operations stack** — Marketing skills + MCP/API integrations mapped to each AARRR stage. Capability unlocks by funding stage.
|
||||
12. **Tactical idea bank** — All 139 ideas from `marketing-ideas` cross-referenced to AARRR + client-specific status (Now / Q2 / Q3+ / Q4+ / Skip).
|
||||
13. **Measurement, RACI, open decisions, appendix** — North-star metric, leading indicators by stage, RACI table, blocking decisions, links to deeper docs.
|
||||
|
||||
## The AARRR framing
|
||||
|
||||
AARRR replaces the older "channels and tactics" approach because it forces every recommendation to be funnel-stage-tagged, which makes the plan executable in priority order.
|
||||
|
||||
Full primer in `references/aarrr-framework.md`. Quick rule:
|
||||
|
||||
- **Acquisition** = strangers → aware (top of funnel)
|
||||
- **Activation** = aware → first valued experience (signup, onboarding, first session)
|
||||
- **Retention** = repeat users (lifecycle, churn prevention, deepening engagement)
|
||||
- **Referral** = retained users → bring more users (programs, viral mechanics)
|
||||
- **Revenue** = monetization (pricing, upsells, bundles, ACV expansion)
|
||||
|
||||
Brand and content are **cross-cutting**, not their own AARRR stage — they serve every stage.
|
||||
|
||||
## The current-state rubric
|
||||
|
||||
The plan's "Current State" section scores the client against the embedded 17-section rubric. Full rubric in `references/current-state-rubric.md` — it's the source of truth, not a derivative of any external skill.
|
||||
|
||||
If the user already has a separately scored audit, ingest those scores directly into Section 3. Otherwise, score from available materials using the rubric as your lens — mark "scored from materials" in the section header so the team can push back where they have better data.
|
||||
|
||||
## Cross-references — skills this plan integrates with
|
||||
|
||||
1. **`marketing-ideas`** — 139 proven marketing tactics. Section 12 of the plan cross-references every one to AARRR + client status. Detail in `references/idea-cross-reference.md`.
|
||||
2. **`product-marketing`** — Sets up the foundational `.agents/product-marketing.md` context file (positioning, ICP, voice). Read this first; Section 2 (Strategic frame) builds on it.
|
||||
3. **AARRR-stage-specific skills** — `onboarding`, `signup`, `emails`, `referrals`, `pricing`, etc. The "Marketing operations stack" (Section 11) maps these to AARRR stages.
|
||||
|
||||
The plan is **opinionated about which skills serve which stages.** Full mapping in `references/ops-stack-mapping.md`.
|
||||
|
||||
## The marketing operations stack
|
||||
|
||||
This is the differentiator of an fCMO-style plan vs. a generic marketing plan. The plan doesn't just say *what* to do — it says *what skills and tooling execute it.*
|
||||
|
||||
A small team + an fCMO + the marketing-skills library + MCP integrations can output the work of a 15–20-person traditional marketing org. The plan must show this stack explicitly, AARRR-stage by AARRR-stage.
|
||||
|
||||
Full mapping in `references/ops-stack-mapping.md`.
|
||||
|
||||
## Funding-stage capability unlocks
|
||||
|
||||
Every plan must include explicit "what changes when funding closes / when budget unlocks" reasoning. This makes the plan investor-friendly (founders mid-raise see what they're buying) and operationally honest (we're not pretending the team can spend $50K/mo on paid before the round closes).
|
||||
|
||||
Standard tiers in `references/funding-stage-unlocks.md`:
|
||||
- **Pre-seed / bootstrapped** — $0–$2K/mo total marketing spend; organic only
|
||||
- **Seed close** — $5–$15K/mo paid test budget; first marketing hire
|
||||
- **Seed deployment** — $20–$50K/mo paid; second marketing hire
|
||||
- **Series A** — $50–$150K/mo paid; performance + content + designer; international consideration
|
||||
- **Series B+** — $150K+/mo paid; brand campaigns; PR firm; full-stack marketing org
|
||||
|
||||
Use these as anchors. Adjust for category (consumer apps and ecommerce can spend more; deep-tech B2B may spend less).
|
||||
|
||||
## Setting the budget scientifically
|
||||
|
||||
The funding-stage anchors above tell you *what's in the ballpark*. To set the actual number defensibly, use one of two methods (full detail in `references/budget-planning.md`):
|
||||
|
||||
1. **Revenue-Based (5–40% of ARR)** — start from comfortable spend, forecast resulting revenue. Best when historical CAC data exists.
|
||||
2. **Goal-Based** — reverse-engineer the budget from the revenue target. Formula: `[(New ARR / (ARPC × 12)) × CAC] / annual retention rate`. Best for fundraising or when the goal is fixed.
|
||||
|
||||
Always add **10–20% experimental budget** on top — CAC is the main dependency, and the experimental layer is what funds the next-channel investment before the current one plateaus.
|
||||
|
||||
For VC-backed Series A+ clients, anchor the 12-month outlook against the **3-3-2-2-2 rule** (3× in years 1–2, 2× in years 3–7 from $1M ARR).
|
||||
|
||||
## Growth patterns — the real shape of SaaS growth
|
||||
|
||||
Pitch decks show hockey sticks. Real growth is a series of S-curves with plateaus between them. Full framework in `references/growth-patterns.md`. Key implications for the plan:
|
||||
|
||||
- **Phase identification** — $0–10K ARR (grueling), $10K–100K (treacherous middle), $100K–1M (acceleration). Section 3 names the current phase; Section 10 sequences the next.
|
||||
- **Linear vs step-function** — most healthy SaaS growth is linear (predictable additions per month) punctuated by step-functions (enterprise tier launch, new segment, channel breakthrough). The plan should describe both honestly — not promise exponential.
|
||||
- **S-curve layering** — Channel × Product × Market. Start the next S-curve while the current one is still growing. Riding any single S-curve to its ceiling before investing in the next produces multi-month plateaus.
|
||||
|
||||
## Team and agency model
|
||||
|
||||
Strategy lives in-house. Execution can — and often should — be outsourced. Full framework in `references/team-and-agency-model.md`. Three implications for every plan:
|
||||
|
||||
1. **First hire is a strategist, not a tactician.** Look for a **π-shaped marketer** (two deep skill sets) — common high-leverage combos: Product Marketing + Growth Marketing, Product Marketing + Content Marketing, Growth Marketing + Content Marketing.
|
||||
2. **Title conservatively.** First marketing hire is almost always Manager or Lead, not VP or CMO. Inflated titles paint the org into a corner when you scale.
|
||||
3. **Use contractors and small niche agencies for execution.** Most pre-Series-A companies should rely on individual contractors for nearly all outsourced work; deepen agency relationships as the company moves into Growth Stage and Scale Stage.
|
||||
|
||||
## What every plan must customize
|
||||
|
||||
A generic plan is a failed plan. Every plan must explicitly customize for:
|
||||
|
||||
1. **Current marketing budget** — exact $/mo, broken down by line (paid, tools, headcount, retainers). Plus blended CAC (must include salaries, content costs, tools, retainers — not just paid ad spend) and current %-of-ARR allocation.
|
||||
2. **Unit economics** — ARPC, annual retention rate, LTV. These feed the budget math in Section 8 and Section 10.
|
||||
3. **Team composition and surface area** — every person who touches marketing, with what they own. Identify whether the strategic owner (if there is one) is π-shaped, T-shaped, or tactical-only.
|
||||
4. **What the client is currently doing** — by channel, with status (working / not / TBD).
|
||||
5. **What they've already done that should be acknowledged** — past launches, PR moments, content, partnerships. Don't write a plan that ignores work they're proud of.
|
||||
6. **Phase of SaaS growth** — $0–10K ARR / $10K–100K / $100K–1M / $1M+. Each phase has its own binding constraint.
|
||||
7. **Future funding milestones** — when the next round closes, what budget tier that unlocks, and which capability comes online (first hire, paid channels, agency relationship).
|
||||
8. **The marketing skills mapped to specific moves** — every move in the AARRR sections names the skill that executes it.
|
||||
9. **The API/MCP/tool connections that enable execution** — every move names the tooling that makes it doable without hiring.
|
||||
|
||||
If you can't confirm any of these in INIT, list them in Section 13's "Open decisions" — never gloss over them. **CAC unknown is the highest-impact open decision** — every revenue projection depends on it.
|
||||
|
||||
## Common client-type variations
|
||||
|
||||
Plan structure stays consistent. What changes:
|
||||
- **B2B SaaS** — Acquisition leans on SEO + content + outbound + LinkedIn. Activation = signup + product trial. Retention = product engagement + CSM motion. Referral = customer advocacy. Revenue = expansion / NRR.
|
||||
- **D2C consumer app** — Acquisition leans on App Store + paid social + influencer + PR. Activation = onboarding + first session + paywall. Retention = lifecycle email + push. Referral = sharing mechanics. Revenue = subscription + upsell.
|
||||
- **Hardware-led** — Acquisition leans on PR + retail + Amazon + Shopify SEO. Activation = unboxing + setup + first use. Retention = software companion + community. Referral = gifting + reviews. Revenue = blended LTV hardware + accessories + subscription.
|
||||
- **Marketplace** — Activation has two sides (supply + demand). Retention is repeat transaction frequency. Revenue is take-rate × GMV.
|
||||
- **Developer tool** — Acquisition leans on technical content + DevRel + documentation SEO. Activation = first build / first integration. Retention = depth of integration. Referral = team adoption.
|
||||
|
||||
Detail in `references/client-types.md`.
|
||||
|
||||
## Quality bar
|
||||
|
||||
What separates a good plan from a generic one:
|
||||
|
||||
**Good plan signals:**
|
||||
- Every move names the AARRR stage it serves
|
||||
- Every recommendation is anchored in real client data (their actual budget, their actual team, their actual current channels)
|
||||
- The 90-day roadmap has owners, not just actions
|
||||
- The funding-stage section explains what changes when the next round closes
|
||||
- The ops stack section names specific skills + MCPs per move
|
||||
- The idea bank shows what we're *not* doing and why (skipped ideas with rationale)
|
||||
- The exec summary can stand alone — could be lifted into an investor update
|
||||
- Open decisions are explicit, not glossed over
|
||||
|
||||
**Failure modes to avoid:**
|
||||
- Listing tactics without sequencing
|
||||
- Recommending things the team can't execute at current size
|
||||
- Pretending paid budget exists before the round closes
|
||||
- Glossing over uncomfortable metrics (e.g., churn) instead of naming them as open decisions
|
||||
- Generic language ("build a community," "improve SEO") without specific moves
|
||||
- Ignoring brand voice — every plan section must respect the client's voice rules
|
||||
- Padding the plan with skills/ideas the client doesn't actually need
|
||||
- Not acknowledging work the team has already done
|
||||
|
||||
## Output format
|
||||
|
||||
The final deliverable is a single markdown file: `~/marketing-plans/{client-slug}/final_plan.md`.
|
||||
|
||||
Headers (`## 1. Executive summary`, etc.) are H2 for clean Notion paste. Tables for any structured comparison (RACI, idea bank, ops stack). Status legend for the idea bank. Internal references to other sections use `§N` (e.g., "see §5 for Activation detail").
|
||||
|
||||
Length expectation: ~8,000–12,000 words for a comprehensive plan. Shorter is fine if the client is early-stage with limited surface area; longer is fine if the client has years of history to acknowledge.
|
||||
|
||||
## File layout per plan
|
||||
|
||||
```
|
||||
~/marketing-plans/
|
||||
└── {client-slug}/
|
||||
├── materials/ # Client-provided files (decks, audit output, brand-voice doc, etc.)
|
||||
├── research.md # Research record written during INIT
|
||||
├── progress.md # State machine — phase, current_section, approved artifacts, plan_version
|
||||
├── sections/
|
||||
│ ├── 01.md # Each approved section saved as a canonical artifact
|
||||
│ └── ... # Zero-padded so they sort in order
|
||||
└── final_plan.md # Compiled deliverable (FINALIZE output)
|
||||
```
|
||||
|
||||
The full schema for `progress.md` and the resumption decision tree live in `references/methodology.md` Steps 1.1.1 and 1.1.2.
|
||||
|
||||
## Related skills
|
||||
|
||||
- **`product-marketing`** — Run first. Captures positioning, ICP, voice in `.agents/product-marketing.md` so every section of the plan references the same foundation.
|
||||
- **`marketing-ideas`** — Source of the 139 tactics in Section 12.
|
||||
- **`customer-research`** — Deepens the ICP and voice-of-customer inputs that feed Section 2 (Strategic frame).
|
||||
- **`onboarding`** — Deep work on Section 5 (Activation).
|
||||
- **`emails`** — Deep work on Section 6 (Retention) + onboarding emails in Section 5.
|
||||
- **`referrals`** — Deep work on Section 7 (Referral).
|
||||
- **`pricing`** — Deep work on Section 8 (Revenue).
|
||||
- **`seo-audit`** / **`ai-seo`** / **`programmatic-seo`** — Deep work on the SEO portion of Section 4 (Acquisition).
|
||||
- **`ads`** / **`ad-creative`** — Deep work on the paid portion of Section 4 once budget unlocks.
|
||||
- **`launch`** — Deep work on launch moments inside Section 4 / Section 9.
|
||||
|
||||
## Task-specific questions (used during INIT)
|
||||
|
||||
The full intake questionnaire lives in `references/methodology.md`. The most important questions:
|
||||
|
||||
1. **Funding state** — What round are you in? How much raised so far? Burn? Runway? Upcoming rounds and timing?
|
||||
2. **Team** — Who are all the people who touch marketing? What does each own? Where are the gaps?
|
||||
3. **Budget** — What's the current monthly marketing spend, broken down by paid acquisition, tools, retainers, headcount? What budget unlocks when the next round closes?
|
||||
4. **Current channels** — What's working today? What's not? What have you not tried yet?
|
||||
5. **Already done** — What past campaigns / launches / content / PR moments should this plan acknowledge?
|
||||
6. **In-flight** — What's drafted but not shipped? What's blocking each item?
|
||||
7. **Tooling stack** — What's wired? Customer.io / Mailchimp / Resend? Shopify / Stripe / App Store Connect? GA4 / Mixpanel / Amplitude? GitHub / Notion / Figma?
|
||||
8. **Beta or GA?** — If product is in beta, what's the GA timeline? Throttling? What gates exist?
|
||||
9. **The most important thing to fix this quarter** — founder's read.
|
||||
10. **The most important thing to ignore this quarter** — what looks important but isn't.
|
||||
|
||||
## How exhaustive should the plan be?
|
||||
|
||||
Default to comprehensive. Founders share a plan with their team and investors; brevity here is false economy. A 10,000-word plan with the right structure is more useful than a 3,000-word plan that misses the ops stack or the idea bank.
|
||||
|
||||
That said: don't pad. Every section should be **dense, not bloated**. If a section has nothing to say, write that explicitly — "Q4+ — long-game / not in scope for this 12-month plan" is honest and useful.
|
||||
|
||||
## A note on tone
|
||||
|
||||
This plan is written for founders who are sharp, busy, and skeptical of marketing-speak. Write like a thoughtful colleague, not a deck-slide-writer. No jargon for jargon's sake. Direct claims, named tradeoffs, explicit assumptions. When unsure, name the open question rather than guessing.
|
||||
|
||||
The exec summary should be short enough to read in 60 seconds. The rest should reward deep reading.
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"skill_name": "marketing-plan",
|
||||
"evals": [
|
||||
{
|
||||
"id": 1,
|
||||
"prompt": "I'm starting a fractional CMO engagement with a Series A B2B SaaS doing $2M ARR, 12-person team with 1 marketer, $20K/month marketing budget. They want a marketing plan we can share with the team and the board. Build it.",
|
||||
"expected_output": "Should check for product-marketing.md first. Should ask for client name or use a slug. Should walk through three-phase workflow (INIT → REVIEW → FINALIZE), starting with intake covering funding state, team, budget, channels, what's done, in-flight, tooling stack. Should produce a 13-section AARRR-structured plan: executive summary, strategic frame, current state (scored against the embedded 17-section rubric), Acquisition, Activation, Retention, Referral, Revenue, 90-day roadmap with owner-assigned moves, 12-month outlook with funding-stage capability unlocks, marketing operations stack mapping skills + MCPs to AARRR stages, tactical idea bank cross-referencing all 139 marketing-ideas to AARRR + client-specific status, measurement framework with north-star + leading indicators + RACI + open decisions. Should be ~8–12K words, Notion-paste-ready. Should be specific to the client (their budget, team, channels), not generic.",
|
||||
"assertions": [
|
||||
"Checks for product-marketing.md",
|
||||
"Asks for client name or uses a slug",
|
||||
"Walks through INIT phase with structured intake",
|
||||
"Produces 13-section plan structured by AARRR",
|
||||
"Section 3 scores against the embedded 17-section rubric",
|
||||
"Section 9 (90-day roadmap) has owner-assigned moves, not just actions",
|
||||
"Section 10 names funding-stage capability unlocks explicitly",
|
||||
"Section 11 maps marketing skills + MCPs to each AARRR stage",
|
||||
"Section 12 cross-references all 139 marketing-ideas with client-specific status",
|
||||
"Output is Notion-paste-ready markdown",
|
||||
"Plan is specific to the client (their budget, team, current channels), not generic"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"prompt": "We're pre-seed bootstrapped, $0 paid marketing budget, 4-person team building a D2C consumer app. Founder wants a 90-day plan + 12-month roadmap they can show investors during the upcoming raise. The product is in beta.",
|
||||
"expected_output": "Should recognize Tier 1 funding profile (pre-seed) and skip paid acquisition recommendations until budget unlocks. Should lean Acquisition heavy on organic + lifecycle + ambassador moves. Should explicitly map what unlocks when seed closes (paid test budget $5–15K/mo, first marketing hire, etc.). Should respect that the product is in beta and account for activation/throttling gates. Should include the AARRR diagnostic — likely binding constraint at this stage is Activation (onboarding) and Referral. Plan must be investor-friendly: exec summary can be lifted into an update.",
|
||||
"assertions": [
|
||||
"Recognizes pre-seed tier and uses Tier 1 budget profile",
|
||||
"Skips paid acquisition recommendations until budget unlocks",
|
||||
"Leans Acquisition on organic + lifecycle + ambassador",
|
||||
"Names what unlocks when seed closes",
|
||||
"Accounts for product being in beta",
|
||||
"Identifies binding-constraint AARRR stage (likely Activation or Referral)",
|
||||
"Executive summary can be lifted into an investor update",
|
||||
"Plan is operationally honest — doesn't pretend paid budget exists"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"prompt": "we have an audit already done — can you take that and turn it into a real plan",
|
||||
"expected_output": "Should ask for the audit output (file path or paste). Should recognize that current-state scoring already exists and ingest it directly into Section 3 — don't re-score. Should note scoring date in case material has shifted since. Should proceed with full 13-section plan generation using audit findings to inform 90-day roadmap and AARRR sections (gaps from audit become moves in the plan).",
|
||||
"assertions": [
|
||||
"Asks for the audit output",
|
||||
"Ingests prior audit scoring directly into Section 3",
|
||||
"Does not re-score what's already been scored",
|
||||
"Notes the scoring date and flags any shifted material",
|
||||
"Uses audit gaps to inform 90-day roadmap and AARRR section moves",
|
||||
"Still produces a full 13-section plan, not just Section 3"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"prompt": "/marketing-plan acme-saas — pick up where we left off",
|
||||
"expected_output": "Should read ~/marketing-plans/acme-saas/progress.md to determine state machine phase. Should resume from the next unfinished section in REVIEW phase, or transition to FINALIZE if all sections approved. Should NOT silently restart from scratch. If progress.md is missing or shows 'finalized', should ask: revise as v{N+1}, start fresh, or re-open a section.",
|
||||
"assertions": [
|
||||
"Reads ~/marketing-plans/acme-saas/progress.md",
|
||||
"Resumes from next unfinished section based on state machine",
|
||||
"Does not silently restart from scratch",
|
||||
"Handles finalized state by asking user how to proceed (revise / fresh / re-open)",
|
||||
"Saves each newly confirmed section to the progress file"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"prompt": "I need a plan for a hybrid hardware+software wellness company. They sell a physical product and a subscription app. Series A, $100K/month marketing budget, 8-person team including a marketing lead.",
|
||||
"expected_output": "Should recognize hybrid hardware+software archetype and consult references/client-types.md for archetype-specific emphases. Acquisition leans PR + retail + Amazon + Shopify SEO + paid. Activation = unboxing + setup + first session + paywall. Retention = lifecycle + community. Referral = gifting + reviews. Revenue = blended LTV (hardware + subscription + accessories). Should recognize Series A tier and recommend appropriate paid spend. Should include cross-cutting brand + customer-research moves. Idea bank should skip ideas that conflict with premium positioning or hardware constraints.",
|
||||
"assertions": [
|
||||
"Recognizes hybrid hardware+software archetype",
|
||||
"Acquisition leans on PR, retail, Amazon, Shopify SEO, paid",
|
||||
"Activation covers unboxing, setup, first session, paywall",
|
||||
"Retention covers lifecycle, community",
|
||||
"Referral covers gifting, reviews",
|
||||
"Revenue covers blended LTV with hardware + subscription + accessories",
|
||||
"Recognizes Series A tier in budget recommendations",
|
||||
"Idea bank skips ideas that conflict with brand fit, with explicit rationale"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"prompt": "Just give me a quick marketing plan. Don't make it long.",
|
||||
"expected_output": "Should resist defaulting to a short plan. Should explain that a marketing-plan is the comprehensive fCMO-deliverable artifact (~10K words) and that for a single-channel quick plan, the channel-specific skill is the right tool (emails, ads, seo-audit, etc.). Should offer alternatives: (a) full marketing-plan as designed, or (b) point to a specific skill for the user's actual need. Should NOT silently produce a stripped-down 3K-word plan that misses the ops stack or the idea bank.",
|
||||
"assertions": [
|
||||
"Resists short-plan request and explains why",
|
||||
"Names marketing-plan as the comprehensive fCMO artifact",
|
||||
"Recommends channel-specific skills for single-channel quick plans",
|
||||
"Offers alternatives clearly",
|
||||
"Does not silently produce a stripped-down plan"
|
||||
],
|
||||
"files": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
# AARRR Framework — Primer for Plan Sequencing
|
||||
|
||||
AARRR (Dave McClure's "pirate metrics") is the spine of every plan produced by this skill. This doc is the primer + the decision rules for when each stage gets prioritized.
|
||||
|
||||
## The five stages
|
||||
|
||||
| Stage | Question | Common metrics |
|
||||
|---|---|---|
|
||||
| **A**cquisition | How do strangers become aware of us? | Visits, MQLs, signup-page sessions, app-store visits, CAC by channel |
|
||||
| **A**ctivation | Once they try us, do they have an experience that converts? | Signup completion rate, time-to-value, % completing first key action, trial → paid rate |
|
||||
| **R**etention | Do they stay and deepen? | DAU/WAU/MAU, week-1/4/12 retention, churn |
|
||||
| **R**eferral | Do retained users bring more users? | Viral coefficient, NPS, ambassador attribution |
|
||||
| **R**evenue | What do they pay, who pays, how does it compound? | ARPU, LTV, expansion revenue, ARR / MRR |
|
||||
|
||||
> **Signup boundary rule.** Signup *intent* (a stranger landing on the signup page) is Acquisition. Signup *completion* and everything after (first key action, trial-to-paid) is Activation. Apply this rule consistently across all docs and the plan template.
|
||||
|
||||
## Why AARRR for plan sequencing
|
||||
|
||||
Three reasons.
|
||||
|
||||
**1. Funnel-stage tagging forces prioritization.** Without AARRR, marketing plans become channel-organized ("here's the SEO plan, here's the social plan, here's the paid plan"). Channels can address multiple stages; tagging by stage instead asks the more useful question: *what stage of the funnel is the binding constraint right now?*
|
||||
|
||||
**2. Fix the leak before pouring water in.** The Activation/Retention question ("does the funnel convert at acceptable rates given exposure?") is usually higher leverage than the Acquisition question ("how do we get more exposure?"). AARRR sequencing surfaces this naturally.
|
||||
|
||||
**3. The Revenue / Referral conversation is honest.** Most marketing plans bury monetization under "growth" and treat referral as wishful thinking. AARRR forces explicit treatment of both.
|
||||
|
||||
## Brand and content — not a stage, cross-cutting
|
||||
|
||||
A common mistake: making "Brand" or "Content" the sixth bucket. They're not — they serve every stage.
|
||||
|
||||
- **Brand voice** governs every piece of copy across every stage
|
||||
- **Content** feeds Acquisition (SEO, social), Activation (onboarding copy), Retention (email lifecycle), Referral (ambassador talking points), Revenue (pricing pages, sales material)
|
||||
|
||||
In the plan, brand/content shows up as the strategic frame (Section 2) and cross-cutting in Section 11's ops stack — never as its own AARRR section.
|
||||
|
||||
## Diagnosing the binding constraint — which AARRR stage is highest leverage?
|
||||
|
||||
For every client, one or two AARRR stages will be the binding constraint. The plan sequences moves there first.
|
||||
|
||||
**Decision rules:**
|
||||
|
||||
### If you don't have any users → start with Acquisition
|
||||
- Pre-launch / day-0 / waitlist stage
|
||||
- No funnel data exists
|
||||
- Leverage = building the first 100 users
|
||||
|
||||
### If you have users but they bounce → start with Activation
|
||||
- Signups happen but activation rate is low
|
||||
- App Store conversion is poor
|
||||
- Onboarding completion is broken
|
||||
- Day 1 → paid rate is much lower than Day 30 → paid (means product converts given time but onboarding doesn't bridge to it)
|
||||
- Leverage = bridging signup to first felt value
|
||||
|
||||
### If activation works but users churn → start with Retention
|
||||
- Month 1 retention is below category norms
|
||||
- Activated users stop using within 7–14 days
|
||||
- LTV is short
|
||||
- Leverage = lifecycle, deepening engagement, churn prevention
|
||||
|
||||
### If retention is strong but growth is slow → start with Referral / Revenue
|
||||
- Retained users love the product but don't share
|
||||
- Inbound referrals come in unstructured
|
||||
- Pricing hasn't been pressure-tested
|
||||
- ARPU is low for the value delivered
|
||||
- Leverage = WOM mechanics + pricing optimization (these often cluster)
|
||||
|
||||
### If everything works at small scale → start with Acquisition (scaling)
|
||||
- Funnel is healthy
|
||||
- Question is just "more"
|
||||
- This is the "post-fit" scaling problem
|
||||
|
||||
## Stage-by-stage strategic patterns
|
||||
|
||||
### Acquisition
|
||||
|
||||
**The diagnostic question:** Where is the gap between TAM-level awareness and current funnel volume? What channels are saturated by competitors vs. open?
|
||||
|
||||
**Common Acquisition moves:**
|
||||
- SEO content strategy (organic compounding)
|
||||
- Founder-led channels (LinkedIn, X, Substack for B2B; Instagram/TikTok for D2C)
|
||||
- Paid acquisition (when budget unlocks)
|
||||
- App Store / Play Store / marketplace listing optimization
|
||||
- PR and credibility-anchor amplification
|
||||
- Events (live, webinar, conference speaking)
|
||||
- Partnerships (newsletter swaps, integration co-marketing, reseller / agency partners)
|
||||
- Hardware / commerce surface (Shopify SEO + Amazon for hybrid businesses)
|
||||
- B2B sales support (case studies, partner pages, vertical content)
|
||||
|
||||
**Sequencing principle:** Build the organic compound first (SEO + founder-led + content + PR amplification + ambassadors). Only layer paid on top of a working organic baseline. Premature paid amplifies what's broken.
|
||||
|
||||
### Activation
|
||||
|
||||
**The diagnostic question:** Where in the user's first session do they decide "this works for me" or "this doesn't"? What stops them from reaching that moment?
|
||||
|
||||
**Common Activation moves:**
|
||||
- Bedrock fixes (broken gates, broken signup steps, broken paywall)
|
||||
- Onboarding tests / rebuild (often the most leveraged single move)
|
||||
- App Store listing rewrite (the threshold to the trial)
|
||||
- Lifecycle Flow ship order (when to ship onboarding emails)
|
||||
- Paywall structure + trial length
|
||||
- Free → paid bridge (in-app upsells, soft paywalls)
|
||||
|
||||
**Sequencing principle:** Get to first felt value as fast as possible. Everything that adds friction between "user opens app" and "user has the experience that converts them" is a candidate to cut.
|
||||
|
||||
### Retention
|
||||
|
||||
**The diagnostic question:** Why do users churn? What would have made them stay? What's the "second moment of value" after the first one?
|
||||
|
||||
**Common Retention moves:**
|
||||
- Lifecycle email flows: onboarding, lapsed user re-engagement, post-purchase, win-back
|
||||
- Subscription / preference centers
|
||||
- Churn reconciliation (often metric definitions don't match across surfaces)
|
||||
- Hardware → software activation paths (for hybrid businesses)
|
||||
- Annual plan defaults / pricing structure (cross-cuts Revenue)
|
||||
- Support as marketing (high-touch moments that drive stories)
|
||||
- Community + practitioner networks
|
||||
|
||||
**Sequencing principle:** Ship lifecycle flows in the order their content is most stable. Hardware post-purchase flows ship first (they don't reference in-app screens that might change). Onboarding emails ship last (they reference UI that might change). Win-back is a quarterly campaign, not a one-time flow.
|
||||
|
||||
### Referral
|
||||
|
||||
**The diagnostic question:** Is there inbound referral interest that isn't being captured? What's the share-after-value moment that's natural to the product?
|
||||
|
||||
**Common Referral moves:**
|
||||
- Ambassador / affiliate program (start with inbound interest, not cold recruitment)
|
||||
- Share-after-value moments built into the product (reflection prompts, milestone celebrations)
|
||||
- Founder amplification (founder as referrer-zero)
|
||||
- Long-game expert / Guides / certified-host networks (for category-creating businesses)
|
||||
- Gifting flows (consumer / hardware)
|
||||
- Two-sided referrals (reward both referrer and referred)
|
||||
|
||||
**Sequencing principle:** Lead with whoever is already raising their hand. If there are 5 inbound ambassadors, launch with those 5 — don't wait for a "complete program." Iterate based on what they tell you.
|
||||
|
||||
### Revenue
|
||||
|
||||
**The diagnostic question:** Is the company underpricing? Underpackaging? Missing an upsell? What's the "right" price discipline given LTV and brand voice?
|
||||
|
||||
**Common Revenue moves:**
|
||||
- Pricing audit (what's actually charged today vs. listed?)
|
||||
- Annual plan defaults
|
||||
- Hardware → software bundling formalization
|
||||
- Storefront / commerce page optimization
|
||||
- B2B case studies + sales material
|
||||
- Long-term value pool flags (data, expansion, enterprise) — flagged not executed
|
||||
|
||||
**Sequencing principle:** Run the pricing audit before testing changes. Surprisingly often, the "implied" pricing on the dashboard doesn't match the listed price — discounts, trials, or plan mix distorts the read. Surface the ground truth first.
|
||||
|
||||
## How to assign a move to a stage
|
||||
|
||||
Some moves clearly belong to one stage. Others span. The rule:
|
||||
|
||||
**Assign to the stage where the move's primary measurable impact lands.**
|
||||
|
||||
Examples:
|
||||
- "Rewrite App Store listing in voice" — spans Acquisition (organic discovery) and Activation (threshold to trial). Primary impact = Activation (trial conversion rate). Assign to Activation, mention crossover.
|
||||
- "Eye mask Shopify page rewrite" — spans Acquisition (organic search for sleep mask) and Revenue (sale conversion). Primary impact = Revenue (transaction). Assign to Revenue, mention crossover.
|
||||
- "Alex's LinkedIn cadence" — Acquisition (top of funnel for D2C subscribers).
|
||||
- "Customer.io Flow 6 (eye mask post-purchase)" — Retention (deepens hardware buyer engagement) with crossover to Activation (hardware → app premium activation path).
|
||||
|
||||
When in doubt: where would removing this move hurt the most? Assign there.
|
||||
|
||||
## When the AARRR breakdown isn't equal
|
||||
|
||||
For most clients, the plan won't have equal volume across stages. That's fine — and worth surfacing as a diagnostic.
|
||||
|
||||
- **Heavy Acquisition section** = client has product-market fit but top-of-funnel is the bottleneck. Common for early-stage with strong retention metrics.
|
||||
- **Heavy Activation section** = client has traffic but conversion is broken. Often beta-stage products.
|
||||
- **Heavy Retention section** = client has churn problem. Often mid-stage products that scaled past PMF without lifecycle infrastructure.
|
||||
- **Heavy Referral section** = client has loyalty but no WOM mechanics. Often consumer products with passionate users.
|
||||
- **Heavy Revenue section** = client is underpricing or missing monetization layers. Common for tools transitioning from free to paid.
|
||||
|
||||
If a plan ends up evenly distributed across all five stages, the diagnostic was probably weak — re-examine the funnel state intake to find where the binding constraint is.
|
||||
|
||||
## A note on the order of presentation
|
||||
|
||||
Always present AARRR in order (Acquisition → Activation → Retention → Referral → Revenue) regardless of priority order.
|
||||
|
||||
This is for the reader's mental model. Founders expect the funnel to flow top-to-bottom. If Retention is the most-leveraged stage but you lead with Retention, the reader has to context-switch.
|
||||
|
||||
To signal priority, use the executive summary (Section 1) — name the biggest bets there. The AARRR breakdown then walks the funnel in order, with the most leverage-positive section being the longest and most-detailed.
|
||||
@@ -0,0 +1,168 @@
|
||||
# Budget Planning — Scientific Methods for Setting the Marketing Budget
|
||||
|
||||
The problem with most SaaS marketing budgets is that they're pulled out of thin air — a number that hopefully doesn't constrain growth too much, but doesn't anchor in customer-acquisition economics either. The result: when someone asks "why this number?" there's no answer.
|
||||
|
||||
Two scientific methods solve this. Use one (not both) in Section 8 (Revenue) and Section 10 (12-month outlook) of every plan.
|
||||
|
||||
Excerpted and adapted from *Founding Marketing* by Corey Haines.
|
||||
|
||||
## Method 1 — Revenue-Based (5–40% of annual revenue)
|
||||
|
||||
**Direction:** budget → revenue goal.
|
||||
|
||||
You start with what the company can comfortably spend on marketing, then forecast what revenue that spend can plausibly generate.
|
||||
|
||||
### The ranges
|
||||
|
||||
| Posture | % of ARR | When to use |
|
||||
|---|---|---|
|
||||
| **Conservative (profit-preserving)** | 5% | Established business focused on profit distribution; bootstrapped; founder-paid customer base |
|
||||
| **Standard growth** | 15–25% | Most healthy SaaS in the seed-to-Series-A range |
|
||||
| **Aggressive growth (deploying raised capital)** | up to 40% | Recently funded round, mandate to deploy fast, board accepts burn |
|
||||
|
||||
For reference: public SaaS companies routinely report sales-and-marketing spend between 20% and 55% of revenue (Zoom historically ran between 20% and 55% across years).
|
||||
|
||||
### The math (Conservative example)
|
||||
|
||||
Business at $1M ARR, 5% allocation:
|
||||
|
||||
- Annual marketing budget: **$50,000**
|
||||
- Blended CAC: $100 → can acquire **500 new customers**
|
||||
- ARPC: $50/mo → adds **$300K** to ARR
|
||||
- Account for 15% annual churn → 85% × $300K = **+$255K net new ARR**
|
||||
- End-of-year goal: **$1.255M ARR**
|
||||
|
||||
### The math (Aggressive example)
|
||||
|
||||
Business at $1M ARR, 40% allocation:
|
||||
|
||||
- Annual marketing budget: **$400,000**
|
||||
- Blended CAC: $100 → can acquire **4,000 new customers**
|
||||
- ARPC: $50/mo → adds **$2.4M** to ARR
|
||||
- End-of-year goal: **$3.4M ARR**
|
||||
|
||||
### Two keys to making this method work
|
||||
|
||||
1. **Know your blended CAC** (see "Calculating CAC" below)
|
||||
2. **Match the allocation percentage to your actual ambition.** A founder running 5% allocation while telling the board they expect to triple revenue is showing two incompatible signals.
|
||||
|
||||
## Method 2 — Goal-Based (reverse-engineered from the revenue target)
|
||||
|
||||
**Direction:** revenue goal → budget.
|
||||
|
||||
You start with the revenue goal and work backward through the unit economics to derive the budget required to hit it. Best for:
|
||||
|
||||
- Companies just starting up (no historical CAC baseline yet, working from first principles)
|
||||
- Companies anticipating outside capital (need to defend the ask)
|
||||
- Companies using revenue-based financing (Pipe, Capchase, Founderpath)
|
||||
|
||||
### The formula
|
||||
|
||||
```
|
||||
Marketing budget = [(New ARR / (ARPC × 12)) × CAC] / annual retention rate
|
||||
```
|
||||
|
||||
### Worked example: $1M ARR → $2M ARR
|
||||
|
||||
Step 1 — How much new ARR per customer?
|
||||
ARPC × 12 = $50 × 12 = **$600 ARR per new customer**
|
||||
|
||||
Step 2 — How many new customers do we need?
|
||||
$1,000,000 / $600 = **1,667 new customers**
|
||||
|
||||
Step 3 — What's the raw acquisition cost?
|
||||
1,667 × $100 CAC = **$166,700**
|
||||
|
||||
Step 4 — Account for churn (15% annual = 85% retention)
|
||||
$166,700 / 0.85 = **$196,118** (round to **$200K**)
|
||||
|
||||
When someone asks how you got to the budget, walk them through the four steps. It's defensible.
|
||||
|
||||
### Why this formula and not something simpler
|
||||
|
||||
The four steps each correspond to a real economic reality:
|
||||
- Step 1 converts MRR-language into the ARR-language a board talks in
|
||||
- Step 2 names the customer count, which is what the funnel actually has to deliver
|
||||
- Step 3 anchors the budget in the cost of acquisition
|
||||
- Step 4 acknowledges that churned customers don't count toward net new ARR, so the budget needs to cover the gap
|
||||
|
||||
### Required buffer
|
||||
|
||||
**Always add 10–20% as "experimental budget"** on top of the formula output. CAC is the main dependency; if CAC comes in 50% higher than estimated, the cascading effect is missing the revenue goal. It is much cheaper to overestimate CAC than to underestimate it.
|
||||
|
||||
The experimental budget also funds the experiments that find your next channel before your current one plateaus (see `growth-patterns.md` — channel S-curves).
|
||||
|
||||
## The VC growth path (3-3-2-2-2 rule)
|
||||
|
||||
Once a company has crossed $1M ARR and taken a Series A, the implicit benchmark VCs expect is:
|
||||
|
||||
| Year | ARR multiple | Cumulative ARR (from $1M start) |
|
||||
|---|---|---|
|
||||
| Year 0 | — | $1M |
|
||||
| Year +1 | 3× | $3M |
|
||||
| Year +2 | 3× | $9M |
|
||||
| Year +3 | 2× | $18M |
|
||||
| Year +4 | 2× | $36M |
|
||||
| Year +5 | 2× | $72M |
|
||||
| Year +6 | 2× | $144M |
|
||||
| Year +7 | 2× | $288M |
|
||||
|
||||
That's the 3-3-2-2-2 rule. Useful when:
|
||||
|
||||
- The plan needs to map 12-month and 36-month milestones to VC expectations
|
||||
- The founder is mid-raise and the board needs to see a plausible path to the next round
|
||||
- Section 10 (12-month outlook) needs anchoring against an industry benchmark, not just internal ambition
|
||||
|
||||
Most companies miss it. That's fine. Knowing the benchmark gives the team a defensible reason to either match it or explicitly choose not to.
|
||||
|
||||
## Calculating CAC (blended, not paid-only)
|
||||
|
||||
If there's no historical CAC, use a baseline: **one year of revenue from the smallest paid plan.** Deploy the budget, capture actual CAC data, replace the baseline with the measured number for the next planning cycle.
|
||||
|
||||
For an established CAC calculation, **CAC must be blended.** Include:
|
||||
|
||||
- Marketing salaries (full loaded cost, not just base)
|
||||
- Advertising spend
|
||||
- Marketing tech stack costs
|
||||
- Content production costs (writers, designers, video editors)
|
||||
- Agency / contractor retainers
|
||||
- SDR / BDR salaries if doing outbound
|
||||
- Tools (CRM, marketing automation, analytics)
|
||||
|
||||
Then divide by the number of new customers acquired in the period. That blended number is the one to use in either budgeting method.
|
||||
|
||||
The mistake to avoid: calculating CAC from paid ad spend alone. A company that "doesn't run ads" still has a CAC — it's just hidden in the content team, the founder's time, the SEO contractor, the conference booth.
|
||||
|
||||
## The reality check on forecasting
|
||||
|
||||
This whole framework derives a budget and a revenue goal — not a 12-month month-by-month forecast accurate to the dollar.
|
||||
|
||||
**Unless the company is publicly traded, all forecasts are educated guesses.** No startup under $100M ARR reliably hits forecasts to the month. The honest framing for the plan:
|
||||
|
||||
- The annual goal is a defensible direction-of-travel
|
||||
- The budget is the resource commitment that makes the goal plausible
|
||||
- The 90-day roadmap (Section 9) is what's actionable now
|
||||
- Month-to-month variance is expected; quarterly review is when the plan adjusts
|
||||
|
||||
What's actionable: how to deploy the budget, what concrete moves to execute, what to adjust when real data comes in.
|
||||
|
||||
What's not actionable: trying to forecast traffic, pipeline, retention curves, conversion rates, and channel mix all down to the decimal point and expecting that forecast to hold. Founders who over-engineer the forecast tend to spend the plan period explaining variance instead of executing.
|
||||
|
||||
**Rule for the plan:** the budget number is honest. The annual goal is honest. The month-by-month projection is illustrative.
|
||||
|
||||
## How this flows into the plan
|
||||
|
||||
| Section | What to include |
|
||||
|---|---|
|
||||
| **3 (Current state)** | Current monthly marketing spend broken down by line (paid, tools, content, headcount, retainers). Compute current %-of-ARR allocation. |
|
||||
| **8 (Revenue)** | The unit-economics table (CAC, ARPC, churn) that feeds whichever budget method you're using. |
|
||||
| **10 (12-month outlook)** | Apply Method 1 or Method 2 to derive the 12-month budget and the resulting revenue goal. Anchor against the 3-3-2-2-2 rule if Series A+ and VC-backed. |
|
||||
| **11 (Ops stack)** | Show the budget allocation across the AARRR stages — what % to Acquisition, Activation, etc. The ops-stack mapping informs which line items grow when the next funding tier unlocks. |
|
||||
| **13 (Open decisions)** | If CAC is unknown or contested, flag it as the highest-impact open decision — every other number depends on it. |
|
||||
|
||||
## When to choose which method
|
||||
|
||||
- **Method 1 (Revenue-Based)** when the company has historical CAC data, a profit/burn posture, and the question is "given our posture, what's a plausible goal."
|
||||
- **Method 2 (Goal-Based)** when the company has a specific goal (board mandate, VC milestone, fundraise target) and the question is "what budget do we need to hit it."
|
||||
|
||||
For most plans in the seed-to-Series-A range, Method 2 is more useful — it forces the conversation about whether the goal is funded.
|
||||
@@ -0,0 +1,373 @@
|
||||
# Client Types — Variations by Business Model
|
||||
|
||||
The 13-section plan structure stays consistent across client types. What changes is the **content emphasis** within each section. This doc names the dominant patterns by client archetype.
|
||||
|
||||
## Archetype 1 — B2B SaaS
|
||||
|
||||
### Core characteristics
|
||||
- Subscription revenue
|
||||
- Often higher ACV ($1K–$100K+ per year)
|
||||
- Sales-assisted or self-serve depending on tier
|
||||
- Buyer often different from user (champion vs. end-user)
|
||||
|
||||
### AARRR emphasis
|
||||
|
||||
**Acquisition heavy:**
|
||||
- SEO is the dominant top-of-funnel motion (people search for solutions)
|
||||
- Content marketing (blog, knowledge base, comparison pages) drives MQLs
|
||||
- LinkedIn for both organic founder presence and paid
|
||||
- Outbound (cold email + LinkedIn) often complements inbound
|
||||
- Events (conferences, webinars) for high-ACV products
|
||||
|
||||
**Activation:**
|
||||
- Signup → trial → first key action (PLG products)
|
||||
- Trial → demo → POC (sales-led products)
|
||||
- Empty states matter — guide users to first value action
|
||||
|
||||
**Retention:**
|
||||
- Product engagement metrics (DAU, feature adoption)
|
||||
- Customer success motion (CSM team for higher ACV)
|
||||
- Lifecycle emails focused on feature discovery, value moments
|
||||
|
||||
**Referral:**
|
||||
- Customer advocacy programs
|
||||
- Partner / integration co-marketing
|
||||
- G2 / Capterra reviews
|
||||
- Champion-to-buyer expansion
|
||||
|
||||
**Revenue:**
|
||||
- Expansion / NRR is often the biggest growth lever
|
||||
- Tier upgrades, seat expansion, usage-based add-ons
|
||||
|
||||
### Skills emphasis
|
||||
- `cold-email`, `programmatic-seo`, `competitors`, `seo-audit`, `ai-seo`
|
||||
- `ads` weighted toward LinkedIn + Google
|
||||
- `emails` for trial nurture + lifecycle
|
||||
- `pricing` for tier optimization
|
||||
|
||||
### Tier-1 budget priority
|
||||
- SEO + content > everything else
|
||||
- Founder-led LinkedIn channel
|
||||
- Customer.io / Mailchimp for nurture
|
||||
- HARO + investor backchannel for PR
|
||||
|
||||
---
|
||||
|
||||
## Archetype 2 — D2C Consumer App (Subscription)
|
||||
|
||||
### Core characteristics
|
||||
- Lower ACV ($5–$30/mo typically)
|
||||
- High volume, lower margin per user
|
||||
- App Store / Play Store as the primary acquisition surface
|
||||
- Lifecycle email + push for retention
|
||||
- Often paid-acquisition-driven once budget unlocks
|
||||
|
||||
### AARRR emphasis
|
||||
|
||||
**Acquisition:**
|
||||
- App Store Optimization (ASO) is the highest-leverage non-site asset
|
||||
- Paid social (Meta, TikTok) often dominant once budget exists
|
||||
- Apple Search Ads for high-intent App Store traffic
|
||||
- Influencer + content creators
|
||||
- PR + endorsements
|
||||
|
||||
**Activation:**
|
||||
- Onboarding is the dominant activation surface
|
||||
- Time-to-value must be minutes, not hours
|
||||
- Paywall structure + trial length critical
|
||||
|
||||
**Retention:**
|
||||
- Lifecycle email + push
|
||||
- In-app reminders (carefully — overuse = churn)
|
||||
- Subscription preference center
|
||||
- Win-back campaigns
|
||||
|
||||
**Referral:**
|
||||
- Built-in sharing (share-a-month flow)
|
||||
- Two-sided referrals
|
||||
- Influencer / creator ambassadors
|
||||
|
||||
**Revenue:**
|
||||
- Annual plan default is the biggest single move (compresses MRR but improves LTV)
|
||||
- Tier optimization (Free → Premium → Premium+)
|
||||
- In-app upsells
|
||||
|
||||
### Skills emphasis
|
||||
- `onboarding`, `paywalls`, `emails`
|
||||
- `ads`, `ad-creative` (heavy creative iteration)
|
||||
- `referrals`
|
||||
- `pricing` for annual default + tier consolidation
|
||||
|
||||
### Tier-1 budget priority
|
||||
- ASO first (highest organic leverage)
|
||||
- Onboarding rebuild
|
||||
- Lifecycle email shipping
|
||||
- Founder-led social if founder is on-camera
|
||||
|
||||
---
|
||||
|
||||
## Archetype 3 — Hybrid Hardware + Software
|
||||
|
||||
### Core characteristics
|
||||
- Physical product + software companion (e.g., Quietude's eye mask + app)
|
||||
- Hardware as a distribution wedge (lower price, easier first purchase)
|
||||
- Software as the LTV (recurring revenue)
|
||||
- Blended CAC across both surfaces
|
||||
|
||||
### AARRR emphasis
|
||||
|
||||
**Acquisition:**
|
||||
- Shopify storefront SEO (hardware product pages target consumer search)
|
||||
- Amazon listing (high-discovery, takes margin)
|
||||
- PR amplification (hardware is photogenic — high-profile influencer endorsements move volume)
|
||||
- Paid social for hardware (Meta + Instagram, eye-catching creative)
|
||||
|
||||
**Activation:**
|
||||
- Two activations to track: hardware unboxing experience + software signup
|
||||
- Hardware → software activation flow is the bridge
|
||||
- Concierge setup for high-value hardware buyers
|
||||
|
||||
**Retention:**
|
||||
- Hardware post-purchase lifecycle (different from app onboarding)
|
||||
- Software companion drives stickiness
|
||||
- Community / practitioner network around hardware
|
||||
|
||||
**Referral:**
|
||||
- Hardware gifting flows (high WOM for physical products)
|
||||
- Eye-catching hardware drives organic social sharing
|
||||
- Reviews on Shopify + Amazon
|
||||
|
||||
**Revenue:**
|
||||
- Blended LTV math is critical (hardware margin + software recurring)
|
||||
- Bundle strategy (hardware buy → free Premium for X months)
|
||||
- Annual plan default for software
|
||||
|
||||
### Skills emphasis
|
||||
- `seo-audit` for Shopify product pages
|
||||
- `emails` for both hardware post-purchase and software lifecycle
|
||||
- `referrals` with gifting layer
|
||||
- `pricing` for blended-bundle math
|
||||
- `ads` with creative-heavy Meta presence
|
||||
|
||||
### Tier-1 budget priority
|
||||
- Shopify product page optimization
|
||||
- Hardware post-purchase lifecycle ship
|
||||
- Bundle strategy formalization
|
||||
- Hardware → app activation audit
|
||||
|
||||
---
|
||||
|
||||
## Archetype 4 — Marketplace
|
||||
|
||||
### Core characteristics
|
||||
- Two-sided product (supply + demand)
|
||||
- Network effects matter
|
||||
- Liquidity is the critical early metric
|
||||
- Take-rate × GMV is the revenue model
|
||||
|
||||
### AARRR emphasis
|
||||
|
||||
**Acquisition:**
|
||||
- Two funnels — supply and demand
|
||||
- Supply often acquired through outbound / partnership / cold email
|
||||
- Demand often acquired through SEO / paid / content
|
||||
- City-by-city programmatic SEO common
|
||||
|
||||
**Activation:**
|
||||
- Supply activation: first listing posted, first response sent
|
||||
- Demand activation: first purchase / first match / first transaction
|
||||
- Both sides need their own onboarding
|
||||
|
||||
**Retention:**
|
||||
- Repeat transaction frequency
|
||||
- Supply utilization (% of listings active)
|
||||
- Demand habit (DAU / MAU)
|
||||
|
||||
**Referral:**
|
||||
- Supply → supply (refer other providers)
|
||||
- Demand → demand (refer other buyers)
|
||||
- Cross-side referrals are weaker
|
||||
|
||||
**Revenue:**
|
||||
- Take-rate optimization
|
||||
- Premium tier (better matching, lower fees)
|
||||
- Lead-gen vs. transaction-fee monetization
|
||||
|
||||
### Skills emphasis
|
||||
- `programmatic-seo` for city pages, vertical pages
|
||||
- `cold-email` for supply-side recruitment
|
||||
- `referrals` for both sides
|
||||
- `pricing` for take-rate decisions
|
||||
|
||||
### Tier-1 budget priority
|
||||
- Programmatic SEO build for one side
|
||||
- Cold outbound to seed supply (or demand, whichever is bottleneck)
|
||||
- Lifecycle email for both sides
|
||||
|
||||
---
|
||||
|
||||
## Archetype 5 — Developer Tool / Open Source
|
||||
|
||||
### Core characteristics
|
||||
- Technical buyer (developer or eng leader)
|
||||
- High bar for content quality (developers are skeptical)
|
||||
- DevRel matters more than traditional marketing
|
||||
- Open source layer often funnel into commercial product
|
||||
|
||||
### AARRR emphasis
|
||||
|
||||
**Acquisition:**
|
||||
- Technical content + docs SEO
|
||||
- DevRel (conferences, talks, community)
|
||||
- GitHub presence + npm/pip/etc. discovery
|
||||
- Hacker News + Reddit + dev Twitter
|
||||
|
||||
**Activation:**
|
||||
- First build / first integration is the activation event
|
||||
- Time-to-Hello-World matters
|
||||
- Documentation = onboarding for dev tools
|
||||
|
||||
**Retention:**
|
||||
- Depth of integration (using more of the product)
|
||||
- Team adoption (one user → entire org)
|
||||
- Active project count
|
||||
|
||||
**Referral:**
|
||||
- Star count on GitHub (semi-organic)
|
||||
- Recommendation in technical forums
|
||||
- Conference talks mentioning the tool
|
||||
|
||||
**Revenue:**
|
||||
- Free → paid conversion when usage exceeds limits
|
||||
- Team plans, enterprise tiers
|
||||
- Support / SLA upsells
|
||||
|
||||
### Skills emphasis
|
||||
- `programmatic-seo` for docs
|
||||
- Less emphasis on traditional `ads`
|
||||
- Heavy `content-strategy` + technical content
|
||||
- `cold-email` to engineering leads at target companies
|
||||
|
||||
### Tier-1 budget priority
|
||||
- Docs + technical content production
|
||||
- DevRel (founder doing talks)
|
||||
- GitHub presence
|
||||
- HN / Reddit / dev community
|
||||
|
||||
---
|
||||
|
||||
## Archetype 6 — Deep-Tech / Scientific / Clinical
|
||||
|
||||
### Core characteristics
|
||||
- Long sales cycles
|
||||
- Heavy credibility burden (must prove the science)
|
||||
- Highly informed buyers (academics, clinicians, researchers)
|
||||
- Often regulatory considerations
|
||||
|
||||
### AARRR emphasis
|
||||
|
||||
**Acquisition:**
|
||||
- Academic publishing + peer-reviewed studies
|
||||
- Conference speaking (academic + industry)
|
||||
- Investor / advisor introductions
|
||||
- PR via credibility hooks
|
||||
|
||||
**Activation:**
|
||||
- Pilot programs / proof-of-concepts
|
||||
- Concierge setup with high-touch onboarding
|
||||
- Educational webinars / training
|
||||
|
||||
**Retention:**
|
||||
- Customer success heavily
|
||||
- Co-publication with customers
|
||||
- Community of practice
|
||||
|
||||
**Referral:**
|
||||
- Academic / clinical references
|
||||
- Conference panel features
|
||||
- Case studies with named institutions
|
||||
|
||||
**Revenue:**
|
||||
- Pilot → paid expansion
|
||||
- Institutional contracts (multi-seat / multi-year)
|
||||
- Compliance / certification upsells
|
||||
|
||||
### Skills emphasis
|
||||
- Light traditional marketing
|
||||
- Heavy `product-marketing`, `sales-enablement`, `pricing`
|
||||
- `cold-email` to specific researchers / practitioners
|
||||
- PR + investor marketing
|
||||
|
||||
### Tier-1 budget priority
|
||||
- Academic outreach + conference speaking
|
||||
- Investor backchannel for institutional warm intros
|
||||
- Pilot deployment with key customers
|
||||
- Case study + scientific publication
|
||||
|
||||
---
|
||||
|
||||
## Archetype 7 — Commerce / DTC (non-subscription)
|
||||
|
||||
### Core characteristics
|
||||
- Physical or digital products sold transactionally
|
||||
- Average Order Value matters
|
||||
- Repeat purchase rate is the key retention metric
|
||||
|
||||
### AARRR emphasis
|
||||
|
||||
**Acquisition:**
|
||||
- Paid social (Meta, TikTok) often dominant
|
||||
- Shopify SEO for product pages
|
||||
- Amazon listings
|
||||
- Influencer + creator partnerships
|
||||
|
||||
**Activation:**
|
||||
- First purchase is the activation event
|
||||
- Cart abandonment recovery
|
||||
- Trust signals on checkout (reviews, returns, shipping)
|
||||
|
||||
**Retention:**
|
||||
- Post-purchase lifecycle
|
||||
- Loyalty programs
|
||||
- Email + SMS for repeat purchase
|
||||
|
||||
**Referral:**
|
||||
- Gifting flows
|
||||
- Refer-a-friend programs
|
||||
- Reviews + UGC
|
||||
|
||||
**Revenue:**
|
||||
- AOV optimization (bundles, upsells)
|
||||
- Customer LTV optimization (repeat purchase frequency)
|
||||
- Subscription option for repeat purchases
|
||||
|
||||
### Skills emphasis
|
||||
- `ads` + `ad-creative` (heavy weight)
|
||||
- `emails` for post-purchase + abandoned cart
|
||||
- `referrals` with gifting
|
||||
- `pricing` for bundles + subscription option
|
||||
|
||||
### Tier-1 budget priority
|
||||
- Shopify storefront optimization
|
||||
- Email lifecycle ship
|
||||
- Influencer / UGC seeding
|
||||
- Paid social testing (if minimal budget exists)
|
||||
|
||||
---
|
||||
|
||||
## How to use this doc when drafting a plan
|
||||
|
||||
When you start drafting Sections 4–8 (AARRR), identify the client's archetype (or hybrid if applicable) and lean into the patterns above.
|
||||
|
||||
**Hybrid cases are common.** Quietude is "Hybrid hardware + software" with significant overlap to "Deep-tech / scientific / clinical" (because of the peer-reviewed study + clinical positioning). The plan blends emphases from both archetypes.
|
||||
|
||||
When in doubt, lead with the archetype that best fits the *primary monetization model*. Quietude's primary monetization is software subscription (with hardware as the wedge), so the D2C consumer app + hardware-hybrid patterns dominate, with deep-tech credibility moves layered in.
|
||||
|
||||
## When the client doesn't fit cleanly
|
||||
|
||||
Some clients defy archetype:
|
||||
- **Content / media businesses** — neither SaaS nor commerce; ad revenue or subscription model
|
||||
- **Social networks** — own category, network effects dominate
|
||||
- **Real estate / events** — physical + service model
|
||||
|
||||
For these, identify the closest archetype and adjust. Don't force-fit — name the deviation in the plan's Strategic Frame.
|
||||
@@ -0,0 +1,255 @@
|
||||
# Current State Rubric — 17-Section Scoring Lens
|
||||
|
||||
This 17-section rubric is the source of truth for Section 3 ("Current State") of every marketing plan. Score each section 0–5 from available materials, then write a 2–4 sentence "shape interpretation" that names where strengths and gaps cluster.
|
||||
|
||||
## How to score
|
||||
|
||||
**From rich materials.** When the team has shared decks, prior content audits, a brand voice doc, kickoff transcript, app store and analytics snapshots — score each section from those artifacts. Mark "scored from materials" in the section heading so the team can push back where they have better data.
|
||||
|
||||
**From a separately scored audit.** If the team has already run a scored current-state assessment (in any format), ingest those scores directly. Don't redo the work — note the date the rubric was scored and flag any sections where material has shifted since.
|
||||
|
||||
Either way, the output is the same: a 17-row scored table, a total out of 85, and a shape paragraph.
|
||||
|
||||
## The 17 sections (scored 0–5 each)
|
||||
|
||||
### 1. Positioning
|
||||
**What's scored:** Clarity of category claim, differentiation, alignment across surfaces (homepage, app store, pitch deck, founder messaging).
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No positioning anywhere
|
||||
- 2 = Inconsistent across surfaces; team can't articulate it on demand
|
||||
- 4 = Clear, original, mostly consistent; minor surface gaps
|
||||
- 5 = Distinctive, category-defining, every surface aligned
|
||||
|
||||
**Maps to AARRR:** Cross-cutting — feeds every stage.
|
||||
|
||||
### 2. Customer research
|
||||
**What's scored:** Depth and recency of customer research, ICP clarity, voice-of-customer capture.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No formal research, only founder intuition
|
||||
- 2 = Some research but stale or one-off
|
||||
- 4 = Active research practice, customer language captured
|
||||
- 5 = Continuous research, customer language flows into copy / product / messaging
|
||||
|
||||
**Maps to AARRR:** Cross-cutting — feeds especially Acquisition (channel choice) and Activation (onboarding voice).
|
||||
|
||||
### 3. Homepage
|
||||
**What's scored:** Headline clarity, voice alignment, conversion architecture, mobile experience.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = Generic / broken / off-brand
|
||||
- 2 = Functional but underperforming; voice mostly absent
|
||||
- 4 = Clear, voice-aligned, converting; minor optimization opportunities
|
||||
- 5 = Distinctive, converts strongly, fully voice-aligned
|
||||
|
||||
**Maps to AARRR:** Acquisition + Activation.
|
||||
|
||||
### 4. Sales / product pages
|
||||
**What's scored:** Existence and quality of dedicated product / pricing / feature pages. Are SKUs documented? Is pricing scannable? Are upsells visible?
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No dedicated pages
|
||||
- 2 = Pages exist but are stale or off-voice
|
||||
- 4 = Quality pages for primary products; gaps on secondary
|
||||
- 5 = Every product, tier, and upsell has a high-converting page
|
||||
|
||||
**Maps to AARRR:** Acquisition + Revenue.
|
||||
|
||||
### 5. Conversion pages
|
||||
**What's scored:** Landing pages for specific campaigns, channels, or use cases. `/partner`, `/science`, `/ambassadors`, `/eye-mask` types of pages.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No conversion pages
|
||||
- 2 = One or two exist; rest of needed pages missing
|
||||
- 4 = Most needed conversion pages exist; quality is good
|
||||
- 5 = Full conversion page library, each high-converting
|
||||
|
||||
**Maps to AARRR:** Acquisition + Activation.
|
||||
|
||||
### 6. Competitor comparison
|
||||
**What's scored:** Existence of "vs. {competitor}" pages, comparison content. Does the brand acknowledge alternatives, or pretend they don't exist?
|
||||
|
||||
**Score guide:**
|
||||
- 0 = Nothing — actively avoiding competitor mentions
|
||||
- 2 = Some content exists but is weak or hidden
|
||||
- 4 = Solid comparison pages for top 2–3 competitors
|
||||
- 5 = Comprehensive comparison library; SEO-targeted; high-converting
|
||||
|
||||
**Maps to AARRR:** Acquisition (consideration-stage SEO + sales enablement).
|
||||
|
||||
### 7. Resources / content
|
||||
**What's scored:** Blog, knowledge base, science page, whitepapers, research, founder essays, podcast.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No content surface
|
||||
- 2 = Blog exists but is stale or thin
|
||||
- 4 = Active content production; multiple formats
|
||||
- 5 = Content is a moat — proprietary research, named pillars, daily volume
|
||||
|
||||
**Maps to AARRR:** Acquisition.
|
||||
|
||||
### 8. Onboarding
|
||||
**What's scored:** New user onboarding (in-app + email). Time-to-value, completion rate, brand-voice alignment.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No onboarding flow
|
||||
- 2 = Onboarding exists but is broken, off-voice, or underperforming
|
||||
- 4 = Solid onboarding; clear bottlenecks identified
|
||||
- 5 = Tested, optimized, on-brand; activation rate at category top quartile
|
||||
|
||||
**Maps to AARRR:** Activation.
|
||||
|
||||
### 9. Email lifecycle
|
||||
**What's scored:** Existence and quality of lifecycle email programs. Welcome / onboarding / post-purchase / lapsed / win-back.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No lifecycle email
|
||||
- 2 = Some flows exist but drafted not live, or live but stale
|
||||
- 4 = Core flows live and performing; gaps on secondary flows
|
||||
- 5 = Full lifecycle live, segmented, performing above category benchmarks
|
||||
|
||||
**Maps to AARRR:** Retention (+ Activation for onboarding emails).
|
||||
|
||||
### 10. Sales material
|
||||
**What's scored:** Sales decks, one-pagers, demos, case studies, pricing sheets. (For B2B / hybrid companies — for pure D2C, this can be marked N/A or scored low without implication.)
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No sales material
|
||||
- 2 = Founder uses a deck but other material is thin
|
||||
- 4 = Solid sales kit; reps can self-serve content
|
||||
- 5 = Comprehensive material; updated quarterly; objection-handling library exists
|
||||
|
||||
**Maps to AARRR:** Acquisition + Revenue (B2B).
|
||||
|
||||
### 11. Messaging
|
||||
**What's scored:** Voice, tone, vocabulary, message hierarchy across surfaces. Is the brand voice documented, consistent, distinctive?
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No voice documented; surfaces inconsistent
|
||||
- 2 = Voice exists in founder's head but isn't operationalized
|
||||
- 4 = Documented voice; mostly consistent across surfaces
|
||||
- 5 = Distinctive voice; documented; every surface respects it; voice is a moat
|
||||
|
||||
**Maps to AARRR:** Cross-cutting.
|
||||
|
||||
### 12. Pricing
|
||||
**What's scored:** Pricing structure clarity, packaging logic, recent pressure-testing, listed vs. effective price reconciliation.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = Pricing not pressure-tested in over a year; unclear structure
|
||||
- 2 = Listed pricing exists but plan mix / discounting muddles the read
|
||||
- 4 = Clear pricing; recent tests; LTV math known
|
||||
- 5 = Pricing tested quarterly; packaging optimized; expansion levers known
|
||||
|
||||
**Maps to AARRR:** Revenue.
|
||||
|
||||
### 13. CRO (conversion rate optimization)
|
||||
**What's scored:** Test cadence, instrumentation, A/B history, statistical rigor.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No tests run; no instrumentation
|
||||
- 2 = Some ad-hoc tests; no statistical rigor
|
||||
- 4 = Regular test cadence; some wins
|
||||
- 5 = Continuous testing program; experimentation culture; documented wins
|
||||
|
||||
**Maps to AARRR:** Cross-cutting (most impactful at Activation + Revenue).
|
||||
|
||||
### 14. GTM launches
|
||||
**What's scored:** Quality of past launch executions. Product launches, feature launches, campaign launches.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No structured launches; "soft launches" only
|
||||
- 2 = Some launches but uneven execution
|
||||
- 4 = Solid recent launches; playbook exists
|
||||
- 5 = Repeatable launch motion; Product Hunt #1s; press coverage on demand
|
||||
|
||||
**Maps to AARRR:** Acquisition + Activation.
|
||||
|
||||
### 15. Ads (paid)
|
||||
**What's scored:** Paid acquisition state. Active campaigns, channels, CAC tracking, creative quality.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No paid acquisition
|
||||
- 2 = Some paid but unstructured / wasteful
|
||||
- 4 = Paid is firing across 2–3 channels with positive unit economics
|
||||
- 5 = Sophisticated paid stack; CAC/LTV understood; creative iterated weekly
|
||||
|
||||
**Maps to AARRR:** Acquisition.
|
||||
|
||||
**Note:** For pre-seed clients with no paid budget, score this 0 *without* treating it as a weakness — it reflects the funding stage, not a marketing failure.
|
||||
|
||||
### 16. SEO
|
||||
**What's scored:** Organic search performance. Domain rating, ranking keywords, organic traffic, content cluster strategy.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = No SEO; new domain or zero-authority
|
||||
- 2 = Some content but no strategy; ranks for brand only
|
||||
- 4 = Established content clusters; growing organic traffic; DR 25+
|
||||
- 5 = SEO is a moat; DR 40+; thousand+ ranking keywords; consistent content production
|
||||
|
||||
**Maps to AARRR:** Acquisition.
|
||||
|
||||
### 17. Internationalization
|
||||
**What's scored:** Geographic expansion, language localization, region-specific pricing.
|
||||
|
||||
**Score guide:**
|
||||
- 0 = US/EN only; no international consideration
|
||||
- 2 = International users exist but aren't served (one language, one currency)
|
||||
- 4 = Multi-language, region-specific pricing, GTM playbook for new markets
|
||||
- 5 = International is a strength; multi-region revenue; localized GTM
|
||||
|
||||
**Maps to AARRR:** Acquisition.
|
||||
|
||||
**Note:** For most early-stage companies, internationalization scores 0–1 and that's appropriate. Don't penalize early-stage companies for not having international playbooks yet.
|
||||
|
||||
## How to compute the total + read the shape
|
||||
|
||||
**Total = sum of all 17 scores. Out of 85.**
|
||||
|
||||
The total matters less than the *shape*. After the scoring table, write a 2–4 sentence "shape interpretation":
|
||||
|
||||
> *"High in {strong sections}, low in {weak sections}. That shape is the gap the rest of the plan closes — Sections X (AARRR stage) is the longest because that's where the gap is widest."*
|
||||
|
||||
## Common shapes
|
||||
|
||||
### "Strong voice / messaging, weak distribution"
|
||||
- High: Positioning (#1), Customer research (#2), Messaging (#11)
|
||||
- Low: SEO (#16), Ads (#15), GTM launches (#14)
|
||||
- Translation: The founder is a strong storyteller but distribution hasn't caught up. Plan emphasizes Acquisition + paid layer prep.
|
||||
|
||||
### "Strong acquisition, weak conversion"
|
||||
- High: SEO (#16), Resources (#7), Ads (#15)
|
||||
- Low: Homepage (#3), Onboarding (#8), Conversion pages (#5), Pricing (#12)
|
||||
- Translation: Traffic comes in but doesn't convert. Plan emphasizes Activation + Revenue.
|
||||
|
||||
### "Strong conversion, weak retention"
|
||||
- High: Onboarding (#8), Homepage (#3), Pricing (#12)
|
||||
- Low: Email lifecycle (#9), CRO (#13)
|
||||
- Translation: Users sign up and pay but churn. Plan emphasizes Retention.
|
||||
|
||||
### "Strong product, weak everything-else"
|
||||
- High: only Positioning (#1) and Customer research (#2) — the founder knows the customer
|
||||
- Low: everything operational
|
||||
- Translation: Pre-marketing stage. Plan is foundation-heavy. First quarter is bedrock fixes.
|
||||
|
||||
### "Strong recent revenue, weak compounding"
|
||||
- High: Ads (#15), Sales material (#10), Pricing (#12)
|
||||
- Low: SEO (#16), Resources (#7), Referral mechanics
|
||||
- Translation: Performance marketing carries the business. Plan emphasizes building compounding channels before paid scales further.
|
||||
|
||||
## When scores are subjective
|
||||
|
||||
Some sections are easier to score from outside than others. Subjectivity tier:
|
||||
|
||||
- **Objective (data-driven):** SEO (#16), Ads (#15), Email lifecycle (#9), Onboarding (#8) — backed by analytics
|
||||
- **Semi-objective:** Pricing (#12), CRO (#13), Conversion pages (#5), Sales material (#10) — visible artifacts to evaluate
|
||||
- **Subjective (judgment call):** Positioning (#1), Messaging (#11), Customer research (#2), Resources (#7) — interpretive
|
||||
|
||||
For subjective sections, write the rationale into the "Note" column so the team can push back if they disagree.
|
||||
|
||||
## When a prior scored audit exists
|
||||
|
||||
If the team already has scored output from any current-state assessment, ingest those scores directly — don't redo the work. Treat that prior scoring as the ground truth for sections it covers.
|
||||
|
||||
If the prior scoring was done weeks ago and material has shifted since (new shipped flows, new content live, repositioning, etc.), note "scored on YYYY-MM-DD; material has shifted since" and update any specific scores you have current evidence for.
|
||||
@@ -0,0 +1,972 @@
|
||||
# Example — Quietude Marketing Plan v1
|
||||
|
||||
**This is the canonical reference example for the `/marketing-plan` skill.** It's based on a real fCMO engagement for a hybrid hardware-and-software wellness platform. **Names, domains, and identifying details have been changed** — the client is called "Quietude" here, and the team members have been renamed (Alex / Sam / Casey / Devon). The funnel numbers, budget, and structural lessons preserve the shape of the original engagement so the example retains its teaching value.
|
||||
|
||||
Use this as the "what good looks like" reference when drafting a new plan. The structure, tone, depth, and operational specificity are the bar to clear.
|
||||
|
||||
**Quietude's archetype:** Hybrid hardware + software with deep-tech / clinical credibility layer. See `references/client-types.md` for archetype patterns.
|
||||
|
||||
**Funding-stage context:** Pre-seed-close (mid-raise on $3M seed). Tier 1 per `references/funding-stage-unlocks.md`. $0 paid budget; organic + lifecycle + ambassador only.
|
||||
|
||||
**What was strong about this plan:**
|
||||
- Strategic frame (Section 2) leaned on the founder's own meditation-vs-regulation framing as the content pillar
|
||||
- Current state (Section 3) included the 17-section audit rubric scored against existing materials (no formal audit run)
|
||||
- 90-day roadmap (Section 9) had owner-assigned moves, not just actions
|
||||
- Ops stack (Section 11) included a concrete operational proof-point (Customer.io MCP used live by non-technical founder on the kickoff call)
|
||||
- Tactical idea bank (Section 12) cross-referenced all 139 marketing-ideas to AARRR + Quietude-specific status, including 23 explicit skips with rationale
|
||||
|
||||
---
|
||||
|
||||
# Quietude — Marketing Plan v1
|
||||
|
||||
**Prepared by:** Casey Reed (fCMO)
|
||||
**For:** Alex, Sam, and the Quietude team
|
||||
**Date:** 2026-05-27
|
||||
**Status:** Draft v1 — for team review
|
||||
|
||||
## 1. Executive summary
|
||||
|
||||
Quietude has built something rare: a clinically validated, brand-coherent, founder-led product in a category that doesn't yet have a name. The opportunity in the next twelve months is not to invent a marketing engine from scratch — it's to **convert the existing organic gravity into a measurable, repeatable funnel**, then layer paid acquisition on top of that funnel once the seed round closes.
|
||||
|
||||
**Three big bets, ranked by leverage:**
|
||||
|
||||
1. **Fix the leak before pouring water in.** The Day 1 → Day 35 funnel shape (1.34% → 5.46%) tells us the product converts given time and contact. What it's missing is a working first-session moment (the headphone gate is killing conversion) and a lifecycle layer to deliver the contact. These two pieces — onboarding rebuild and Customer.io flows shipped — are the unlock for everything else.
|
||||
2. **Compound the moats Quietude already has.** Peer-reviewed clinical study, longevity-influencer PR, 15K live event participants, Alex's founder voice — these are link generators, content pillars, and credibility anchors that most wellness brands would kill for. They're under-leveraged. SEO, content, and App Store optimization translate them into search and discovery surface area.
|
||||
3. **Build the founder-and-fCMO operating system that lets a 4-person team market like a 20-person one.** This is what makes the plan actually executable at Quietude's team size and burn rate — agentic tooling on top of Customer.io, Shopify, App Store, Stripe, GitHub, and the marketing skill library means we ship without hiring.
|
||||
|
||||
**What twelve months looks like, plausibly:**
|
||||
|
||||
- App goes from beta to GA. Onboarding converts at meaningful lift over today's baseline.
|
||||
- 4 SEO content pillars staked, with Pillar 1 (Nervous System Regulation) and Pillar 2 (Sleep + Eye Mask) ranking on Tier-1 keywords.
|
||||
- Full lifecycle live in Customer.io: onboarding, lapsed re-engagement, hardware post-purchase, subscription-center opt-ins.
|
||||
- Ambassador program live with 15–25 active hosts. First Quietude Guides cert pilot run.
|
||||
- Eye mask wedge selling at scale via Shopify with a clean hardware → app activation path. Blended CAC measured and tracked.
|
||||
- Paid acquisition firing post-seed-close at $5–10K/mo initial test budget, scaling to $20–50K/mo if unit economics validate.
|
||||
- Series A narrative writes itself: clinical evidence + activation lift + lifecycle compounding + first B2B install reference cases.
|
||||
|
||||
**The 90-day priorities** (which the rest of this doc operationalizes):
|
||||
|
||||
1. Kill the headphones gate. Ship the bedrock fix this week.
|
||||
2. Run the three-variant onboarding test. Find the activation winner.
|
||||
3. Ship Customer.io Flows 6 (eye mask post-purchase) and 4 (lapsed user) — hold Flow 2 (onboarding) until app UI stabilizes.
|
||||
4. Rewrite the App Store listing in Quietude's brand voice. Highest-leverage non-site asset right now.
|
||||
5. Stake the SEO foundation: consolidate to `quietude.app`, publish Pillar 1 hub + 3 spokes, publish the peer-reviewed psychophysiology study landing page.
|
||||
6. Launch the ambassador program with the ~5 inbound waiting.
|
||||
|
||||
Everything else compounds on top of those six.
|
||||
|
||||
---
|
||||
|
||||
## 2. Strategic frame
|
||||
|
||||
This section distills positioning, ICP, and brand voice into what the team needs to keep in mind while executing. Full detail lives in `marketing-os.md`, `icp.md`, and `sound-philosophy.md`.
|
||||
|
||||
### What Quietude is, in one sentence
|
||||
|
||||
A nervous system intelligence platform — clinically validated spatial audio + AI reflection companion (Mira) + hardware + venue installations + practitioner network. *"We start with sound. We expand to every sense. We end with cities."*
|
||||
|
||||
### The category we're claiming (and defending)
|
||||
|
||||
Quietude doesn't fit the meditation app category, the focus audio category, or the sleep tech category. The brand makes a stronger claim: **bottom-up nervous system regulation through spatial audio**, with clinical evidence as proof and somatic credibility as defense.
|
||||
|
||||
The category-defining frame, per Alex (2026-05-19): **Meditation is top-down. Quietude is bottom-up.** Meditation uses the mind to command the body — mental kung fu that fails the very people most likely to need help, because the prefrontal cortex is offline when stressed. Quietude enters through the brainstem, before the thinking mind. The body responds before it has to try. (Full content-pillar treatment in `meditation-vs-regulation.md`.)
|
||||
|
||||
This is the single most important strategic message. It belongs in App Store copy, onboarding, lifecycle email, SEO content, ambassador talking points, and the seed deck.
|
||||
|
||||
### Who we're for (D2C ICP, distilled)
|
||||
|
||||
Overstimulated high-achieving professionals, 25–45, urban (Bay Area, NYC, London, Berlin, Austin). Tech workers, founders, creators, academics, designers, consultants. Often neurodivergent (ADHD, HSP, gifted). Sophisticated wellness buyers — already invested heavily in their inner life.
|
||||
|
||||
**Their stated problem:** *"I can't shut my brain off. I've tried meditation apps. They don't work."*
|
||||
|
||||
**Their real problem:** Overstimulation, not under-motivation. Their gift (quick thinking) became a curse. They need permission to stop optimizing — including their rest.
|
||||
|
||||
**What they're actually buying:** the *feeling* of stability, sensory indulgence, beautiful rituals, effortless effectiveness, a luxurious shortcut to the genius they can't access in chaos.
|
||||
|
||||
### The business model logic (per seed deck)
|
||||
|
||||
**B2B seeds the market. D2C harvests.** A venue install puts Quietude in front of ~20K people/year at ~$17K cost → 5% convert to subs → ~$430K/year per venue. Six compound channels (referral, Guides, content, home hosting, PR, community) make CAC approach zero by Year 3. Year 5: 75% of new subs come from near-zero-cost channels.
|
||||
|
||||
**fCMO scope per kickoff: D2C-led.** Alex owns B2B sales through events/network/founder credibility. The fCMO leverage is on the app/hardware D2C side. This plan reflects that split — B2B is acknowledged as the harvest engine but not treated as primary work surface.
|
||||
|
||||
### Brand voice (the non-negotiable)
|
||||
|
||||
Per Marketing OS:
|
||||
- **Tone.** Authoritative yet accessible. Intimate yet professional. Revolutionary yet grounded. Authority comes from lived experience, not explanation.
|
||||
- **Speak from the body, not the mind.** Every sentence restores somatic safety and orientation. Language opens space rather than closing meaning.
|
||||
- **YES vocabulary:** Aliveness, inner life, nervous system, spatial sound, resonance, somatic safety, embodied clarity, natural rhythm, orientation, initiation, truth-telling.
|
||||
- **NO vocabulary:** Zen, chill, vibes, "high-vibe," spiritual bypass, meditation clichés, didactic/explainer language, "let me explain why this works."
|
||||
- **Core method: Initiatory Reflection.** Writing's purpose isn't to explain or convince — it's to shift the reader's internal state. The result should be *"something in me moved,"* not *"I understand this concept."*
|
||||
- **CTA rule:** Never pressure. "We do not remind. We invite."
|
||||
|
||||
This rule constrains every piece of copy across every AARRR stage. When in doubt: rewrite from the body.
|
||||
|
||||
---
|
||||
|
||||
## 3. Current state
|
||||
|
||||
This is what we're starting from — team, budget, what's already in motion, what's stuck, scored against the CF Marketing Audit 17-section rubric.
|
||||
|
||||
### Team composition (marketing surface area)
|
||||
|
||||
| Person | Role | Marketing surface area |
|
||||
|---|---|---|
|
||||
| **Alex** | Co-founder, CEO | Owns: personal LinkedIn, live events, B2B sales, founder narrative, investor relations, brand voice authorship |
|
||||
| **Sam** | Co-founder, CXO | Owns: clinical/somatic credibility, brand-voice stewardship, somatic angle on copy review, practitioner network |
|
||||
| **Devon** | Lead Dev | Owns: product/UI build, instrumentation, Customer.io event wiring, App Store deployment |
|
||||
| **Ed Dorsey** | Design Advisor | Advisory cadence (ex-Apple/Airbnb/Strava) |
|
||||
| **Emily Babich** | Creative Strategy | Advisory cadence |
|
||||
| **Matt Mikkelsen** | Field Recording | Audio library, not marketing |
|
||||
| **Casey Reed** | fCMO | Strategy, lifecycle, SEO, onboarding tests, content, ambassador program, ops stack |
|
||||
|
||||
**No dedicated marketing hire yet.** First hire likely post-seed close (Q3 2026 candidate): a lifecycle + content marketing manager who owns Customer.io, SEO content production, and ambassador operations day-to-day.
|
||||
|
||||
### Marketing budget (current)
|
||||
|
||||
- **Paid acquisition:** $0. Confirmed by Alex, 2026-05-20: *"D2C UA so far: My personal LinkedIn posts, live Quietude events, organic word of mouth, and organic app store discovery."* No paid layer.
|
||||
- **Tooling stack:** Customer.io subscription, Shopify (eye mask storefront), App Store Connect, GA4 (or pending), Stripe, Notion, Dub.co (ambassador attribution). Estimate ~$500–1,500/mo combined.
|
||||
- **fCMO retainer:** Casey Reed engagement.
|
||||
- **PR:** No paid PR. Organic longevity-influencer tailwind, consumer-tech angels + foundation-model lab network.
|
||||
|
||||
**Implication:** The 90-day plan must produce gains without any paid lever pulled. Everything in the next 12 weeks is organic, lifecycle, or product-level. Paid is a Q2–Q3 unlock.
|
||||
|
||||
### What's already done (acknowledge, then build on)
|
||||
|
||||
| Asset | Status | Marketing leverage |
|
||||
|---|---|---|
|
||||
| Peer-reviewed peer-reviewed psychophysiology study (2025) | Published | Anchor of clinical authority. Most undermarketed asset Quietude owns. |
|
||||
| longevity-influencer eye-mask endorsement | Live, generating Shopify sales | Press hook. Underused for landing-page social proof. |
|
||||
| consumer-tech angels + foundation-model lab investment | Closed | Investor PR opportunity. "Why I invested" Substack/Medium pieces. |
|
||||
| 15K+ live event participants over a decade | Real | Email list potential, ambassador pool, testimonial bank, B2B reference. |
|
||||
| Quietude eye mask (5K in stock) | Selling | The wedge product. Hardware → app activation path. |
|
||||
| 38% 12-month retention (vs. category avg 20%) | Real | Headline metric. Belongs everywhere. |
|
||||
| Customer.io + Shopify integration | Wired | The lifecycle infrastructure exists. Flows just need to ship. |
|
||||
| 4 GitHub repos for context + product | Set up | `quietude-context` (shared brain), `quietude-promo`, `quietude-app` (app), `mira` (AI), `quietude-api` |
|
||||
| Alex's Sound Philosophy doc | Working doc | Linkable position paper once polished and published. |
|
||||
| ~5 inbound ambassadors waiting | Inbound | Referral program ready to launch — no demand-gen needed for v1. |
|
||||
| Aurora B2B install (~€250K, July deadline) | In-flight | First flagship venue. Reference case once installed. |
|
||||
| Notion Knowledge Directory | Live | Internal context. |
|
||||
| Customer.io MCP (Claude integration) | Validated on kickoff | Non-technical team can ship flows independently. |
|
||||
|
||||
### What's in-flight (drafted but not shipped)
|
||||
|
||||
| Item | Status | Blocker |
|
||||
|---|---|---|
|
||||
| Flow 2 — App Onboarding (8 emails / 14 days) | Draft | App UI in flux; copy references screens that may change |
|
||||
| Flow 4 — Lapsed User Re-engagement (5 emails / 38 days) | Draft | None — ship-ready |
|
||||
| Flow 6 — Eye Mask Post-Purchase | Draft | None — ship-ready |
|
||||
| Onboarding rebuild (3-variant test plan) | Strategy doc done | Eng scoping + headphone-gate removal |
|
||||
| SEO 90-day plan + keyword research | Done | Awaiting domain consolidation decision + content production start |
|
||||
|
||||
### What's stuck (and needs to unstick this quarter)
|
||||
|
||||
| Issue | Cost of inaction | Action |
|
||||
|---|---|---|
|
||||
| Headphones hard-gate in onboarding | Confirmed conversion drop post-launch | Kill this week (bedrock fix) |
|
||||
| 4 domains unconsolidated (quietude.app, quietude.space, quietude.audio, quietude.center) | SEO authority fragmenting, transactional email confusion | Consolidate to `quietude.app` per SEO data |
|
||||
| App Store listing copy not in brand voice | Highest-traffic Quietude surface; off-brand experience for arriving users | Rewrite in voice (Pillar 1) |
|
||||
| Domain consolidation requires 301 plan + email sender migration | Risk of traffic loss if mishandled | Plan in weeks 1–2, execute weeks 3–4 |
|
||||
| `quietude-promo` repo hasn't shipped since March 2026 | Marketing site is stale | Confirm whether it's live; rewrite or replace |
|
||||
| 29% monthly App Store churn vs. 38% 12-month retention claim | Metric definition mismatch confusing the team | Reconcile with Devon + Customer.io data |
|
||||
| Mira post-session reflection scope unknown | Blocks Variant B and Variant C onboarding tests | Resolve with Devon |
|
||||
|
||||
### Audit rubric snapshot (17-section)
|
||||
|
||||
Scored 0–5 from materials, using the embedded rubric in `references/current-state-rubric.md`. Marked "scored from materials" rather than "formal audit" — Alex can push back on any score where they have better data.
|
||||
|
||||
| # | Section | Score | Note |
|
||||
|---|---|---|---|
|
||||
| 1 | Positioning | **4** | Clear, original category claim. The bottom-up frame is the strongest piece. Needs broader external articulation. |
|
||||
| 2 | Customer research | **4** | Deep founder-led research, decade of live participants. Could be more systematically captured. |
|
||||
| 3 | Homepage | **2** | `quietude-promo` hasn't shipped since March. Off-brand voice in places. |
|
||||
| 4 | Sales / product pages | **2** | Eye mask page exists on Shopify but isn't optimized for SEO or sales narrative. No app-product landing page in brand voice. |
|
||||
| 5 | Conversion pages | **2** | `/partner` exists on `quietude.app`. No `/science`, `/eye-mask`, `/ambassadors`, `/guides` pages live. |
|
||||
| 6 | Competitor comparison | **1** | Nothing exists. Big SEO + sales opportunity (own "Quietude vs. Calm/Headspace/Brain.fm/Endel" SERPs). |
|
||||
| 7 | Resources / content | **1** | Sound Philosophy not yet public. peer-reviewed psychophysiology study not yet on a dedicated page. No blog. |
|
||||
| 8 | Onboarding | **2** | Headphones gate killing conversion. Hold-and-fix project this quarter. |
|
||||
| 9 | Email lifecycle | **1** | All three flows drafted, none live. Ship-order set. |
|
||||
| 10 | Sales material | **3** | Seed deck is strong (investor-facing). B2B sales material more founder-led than asset-led. |
|
||||
| 11 | Messaging | **5** | Alex + Sam have authored the most distinctive brand voice in the wellness category. This is a moat. |
|
||||
| 12 | Pricing | **3** | $30/mo app, $45 eye mask, $7,500 speakers, $50–200K B2B. Hasn't been pressure-tested for D2C conversion lift. |
|
||||
| 13 | CRO | **2** | App Store conversion rate trackable but no A/B history. Headphones gate is the obvious first test removal. |
|
||||
| 14 | GTM / launches | **2** | App in throttled beta. Major launches (eye mask, Mira public) haven't had structured GTM. |
|
||||
| 15 | Ads | **0** | No paid layer. Reflects the current organic strategy — not a weakness, but the budget unlock means this will move. |
|
||||
| 16 | SEO | **1** | Current state: 7 organic visits/mo. Plan exists; execution not yet started. |
|
||||
| 17 | Internationalization | **1** | Finland HQ + global ICP, but EN-only and US-centric copy. Defer until Q4+. |
|
||||
|
||||
**Total: 36 / 85 (42%).** The shape matters more than the score: high in Positioning + Messaging + Customer research, low in Conversion pages + Email lifecycle + SEO + Resources + Ads. That's the gap this plan closes.
|
||||
|
||||
---
|
||||
|
||||
## 4. Acquisition
|
||||
|
||||
> *"How do strangers become aware of Quietude?"*
|
||||
|
||||
### Current state
|
||||
|
||||
100% organic. Four real channels: Alex's personal LinkedIn, live Quietude events, organic word of mouth, organic App Store discovery. Plus passive PR drag from longevity-influencer endorsement + clinical study.
|
||||
|
||||
This is good news, not bad. Every dollar of revenue earned to date has been earned without paid acquisition. The bar to exceed it isn't high; the upside on top of an organic base is significant.
|
||||
|
||||
### The plan
|
||||
|
||||
**Channel 1 — SEO (primary 90-day investment).**
|
||||
The full 90-day plan lives in `seo/plan.md`. Summary: consolidate to `quietude.app`, target three asymmetric clusters (nervous-system regulation KD 14–32, weighted/blackout sleep mask KD 6–30, WELL + social-wellness-club B2B KD 5–34), publish 4 content pillars. 90-day target: 500–1,500 organic visits/mo, 80+ ranking keywords. 12-month target: 10,000/mo, 1,000+ keywords.
|
||||
|
||||
**Channel 2 — App Store optimization (highest-leverage non-site asset).**
|
||||
The App Store listing is currently the most-visited Quietude URL by Apple's algorithm. Fixing the copy is higher-leverage this quarter than fixing the marketing site. Rewrite in brand voice. Add the meditation-vs-regulation framing. Lead with the clinical anchor. Test screenshot variations.
|
||||
|
||||
**Channel 3 — Alex's LinkedIn (productize the channel).**
|
||||
Today it's ad-hoc founder posting. The next move is structured: a 2–3x/week cadence, post categories that map to the content pillars (nervous system, sound science, founder journey, clinical evidence, behind-the-scenes), trackable links via Dub, follower → email subscriber → app install funnel measured. This is Alex's voice — the channel only works if he's the one writing. fCMO + Typefully scheduling makes the cadence sustainable.
|
||||
|
||||
**Channel 4 — PR amplification.**
|
||||
longevity-influencer tailwind is real but underused on owned surfaces. Add a `/notable-users` or `/in-the-press` page. Pitch the peer-reviewed psychophysiology study to 5 outlets (wellness press: Well+Good, MindBodyGreen; tech-adjacent: Wired with the longevity-influencer hook; mainstream: Outside, Forbes Wellness). HARO/Help-A-B2B-Writer responses citing Quietude's data. Investor PR moments ("Why I invested in Quietude" Substack pieces from consumer-tech angels — push for these with backlinks).
|
||||
|
||||
**Channel 5 — Event-to-app instrumentation.**
|
||||
Live events are the highest-converting ICP exposure Quietude has (15K+ participants, decade of trust). They're un-instrumented. Add: per-event QR code → app install + email capture, post-event lifecycle (Customer.io Flow 7?), event ROI tracking. Goal: turn an event from a one-night conversion moment into a 30-day funnel.
|
||||
|
||||
**Channel 6 — Eye mask wedge (consumer entry product).**
|
||||
5K masks in stock. Shopify storefront exists but isn't optimized. Improvements: SEO-optimize the product page (target "weighted sleep mask," "blackout sleep mask," "silk sleep mask"), add reviews via Judge.me (per kickoff decision), 30-day return policy (US-market expectation, per kickoff), build the listicle ("Quietude vs. Manta vs. Nodpod vs. Lumon"). Consider Amazon listing as a v2 distribution play.
|
||||
|
||||
**Channel 7 — B2B venue installs (kept lean per kickoff).**
|
||||
Alex owns this. Marketing supports with: case studies after each install, `/partner` page rewrite in voice (already exists on quietude.app), Pillar 4 content ("The Missing Sound Feature in WELL"), reciprocal links from partner venues baked into contracts.
|
||||
|
||||
**Channel 8 — Paid layer (unlocked post-seed close).**
|
||||
Held until seed funding lands. Initial test budget: $5–10K/mo split across Apple Search Ads (highest-intent for App Store), Meta (Instagram + Facebook for eye mask), LinkedIn (B2B venue buyers). Don't fire until: (a) onboarding bedrock fix is shipped, (b) Flow 6 is live, (c) at least one Pillar landing page is in voice. Paid amplifies what already works — premature paid amplifies what's broken.
|
||||
|
||||
### 90-day acquisition moves
|
||||
|
||||
- Weeks 1–2: Domain consolidation decision + 301 plan. App Store listing rewrite first pass.
|
||||
- Weeks 3–4: Domain 301s executed. GSC migration. SEO Pillar 1 hub drafted.
|
||||
- Weeks 5–8: Pillar 1 hub + 3 spokes published. Pillar 2 (Eye Mask) hub + listicle published. Alex's LinkedIn cadence operationalized via Typefully. peer-reviewed psychophysiology study lands on dedicated `/science` page.
|
||||
- Weeks 9–12: Pillar 4 (WELL/B2B) cornerstone published. Sound Philosophy goes public at `/research/sound-philosophy`. First PR push: pitch study + longevity-influencer hook to 5 outlets.
|
||||
|
||||
### 12-month acquisition outlook
|
||||
|
||||
- Q1 (Months 1–3): Foundation. SEO pillars staked. App Store rewrite shipped. LinkedIn cadence stable. PR push launched.
|
||||
- Q2 (Months 4–6, post-seed close): Paid acquisition pilot at $5–10K/mo. SEO compounding — Pillar 1 ranking. First B2B install reference case live.
|
||||
- Q3 (Months 7–9): Paid scales to $20–30K/mo if unit economics hold. All four pillars producing. App GA — new GTM moment.
|
||||
- Q4 (Months 10–12): Compound channels live. 50+ pieces of pillar content. First Quietude Guides program pilot creating local SEO + earned media.
|
||||
|
||||
### Skills + tools
|
||||
|
||||
- **Skills:** `seo-audit`, `ai-seo`, `programmatic-seo`, `schema`, `content-strategy`, `competitors`, `launch`, `ads`, `ad-creative`, `social`, `typefully`, `analytics`, `copywriting`, `marketing-website-design`, `free-tools`
|
||||
- **MCPs / APIs:** Ahrefs API, DataForSEO API, Typefully MCP (LinkedIn scheduling), GA4 MCP (when wired), GitHub MCP (`quietude-promo` repo work), Notion (knowledge directory), Stripe MCP (LTV / paid-CAC math), `agent-browser` (LinkedIn drafting + testing), `defuddle` (research)
|
||||
|
||||
---
|
||||
|
||||
## 5. Activation
|
||||
|
||||
> *"Once someone tries Quietude, do they have an experience that converts?"*
|
||||
|
||||
### Current state
|
||||
|
||||
Day 1 → paid: **1.34%**. Day 7 → paid: **3.73%**. Day 35 → paid: **5.46%**. *The funnel shape is the signal.* The ~4× lift over 35 days means the product converts given time and contact — both of which the current onboarding undermines and the lifecycle layer doesn't yet provide.
|
||||
|
||||
Caveats: app is in throttled beta. Metrics are noisy. Don't optimize against absolutes; optimize against funnel *shape* and *cohort comparison*.
|
||||
|
||||
### The plan
|
||||
|
||||
**Move 1 — Kill the headphones hard-gate (bedrock fix, this week).**
|
||||
Confirmed conversion drop after the gate shipped. The fix isn't better copy on the gate — it's removing the gate. Replace with passive headphone detection + soft single-line nudge. No regret change. Full reasoning in `onboarding-recommendation.md`.
|
||||
|
||||
**Move 2 — Run the three-variant onboarding test.**
|
||||
Three variants, each a pure expression of one belief about what drives activation in this ICP:
|
||||
- **Variant 1 — Trust First.** Bold promise + clinical anchor + testimonial wall + 1-line mechanism. Tests whether the saturated ICP needs framing before they'll invest.
|
||||
- **Variant 2 — Seen First.** Multi-step diagnostic → AI-generated "we see you" summary → personalized session. Tests whether being accurately named is the conversion event.
|
||||
- **Variant 3 — Felt First.** Audio starts on app open. ~15 words on screen. The session IS the onboarding. Tests whether the product can carry it cold.
|
||||
|
||||
Test sequence (sequential, ~7 weeks to a winner): bedrock baseline → V3 vs. baseline → winner vs. V1 → winner vs. V2. Full system in `onboarding-recommendation.md`.
|
||||
|
||||
**Move 3 — App Store listing rewrite.**
|
||||
Highest-leverage non-site asset. Rewrite in brand voice. Lead with meditation-vs-regulation. Screenshot variations to test. This is also an Acquisition move (organic discovery) but it lives here because it's the threshold to the trial.
|
||||
|
||||
**Move 4 — Customer.io Flow 2 (held until UI stable).**
|
||||
The 8-email / 14-day onboarding sequence is drafted and on-brand. Holding the ship because the emails reference in-app screens that will change during the onboarding rebuild. Once a winning onboarding variant ships, Flow 2 gets a copy refresh against the final UI and goes live.
|
||||
|
||||
**Move 5 — Paywall + pricing review (cross-cuts to Revenue).**
|
||||
What's the current trial structure? Length, paywall trigger, intro pricing? When the funnel shape is "lift over 35 days," extending trial may convert better than aggressively gating earlier. To be audited in Q1.
|
||||
|
||||
### 90-day activation moves
|
||||
|
||||
- Week 1: Headphones gate removed. Baseline established.
|
||||
- Weeks 2–3: Variant 3 (Felt First) prototyped, instrumented, shipped to a test cohort.
|
||||
- Weeks 4–5: Read Variant 3 vs. baseline. Decide ship/iterate. Begin Variant 1 build.
|
||||
- Weeks 6–7: Variant 1 (Trust First) live.
|
||||
- Weeks 8–9: Read V1 vs. winner. Begin Variant 2 build.
|
||||
- Weeks 10–11: Variant 2 (Seen First) live.
|
||||
- Week 12: Final read. Winning variant scheduled for permanent ship. Flow 2 unblocked.
|
||||
|
||||
### 12-month activation outlook
|
||||
|
||||
- Q1: Winning variant identified and shipped.
|
||||
- Q2: Flow 2 ships. Paywall A/B tests start.
|
||||
- Q3: GA launch — onboarding re-validated at higher traffic. Cohort segmentation by acquisition source (Shopify/eye-mask vs. direct vs. ambassador vs. paid) starts to drive variant forks.
|
||||
- Q4: Onboarding is no longer the bottleneck. Focus moves to Activation → Retention transition (sessions 2–7).
|
||||
|
||||
### Skills + tools
|
||||
|
||||
- **Skills:** `onboarding`, `signup`, `cro`, `cro`, `paywalls`, `popups`, `copywriting`, `copy-editing`, `copycraft`, `marketing-website-design`, `ab-testing`, `marketing-psychology`
|
||||
- **MCPs / APIs:** App Store Connect (manual + `dev-browser` for screenshot automation), GitHub MCP (`quietude-app` app repo for onboarding code), Figma / Pencil MCP (for onboarding screen design), Customer.io MCP (for any in-app/email coordination), GA4 MCP (activation events)
|
||||
|
||||
---
|
||||
|
||||
## 6. Retention
|
||||
|
||||
> *"Once someone converts, do they stay — and deepen?"*
|
||||
|
||||
### Current state
|
||||
|
||||
**Headline metric (per seed deck): 38% 12-month retention** — nearly double the category average (~20%). This is the strongest single retention signal in the deck and one of the most undermarketed claims Quietude owns.
|
||||
|
||||
**App Store snapshot, 2026-05-16:** 145 paid, 42 churned (~29% monthly churn). Definition mismatch with the 38% claim — to reconcile. Possibly: 38% is annual cohort retention (people who paid month 1 and still pay month 12), 29% is gross monthly churn (people who paid this month who didn't pay next month). Both can be true. Need to clarify which metric is reported externally and which is the actual product health signal.
|
||||
|
||||
### The plan
|
||||
|
||||
**Move 1 — Ship Flow 6 first (Eye Mask Post-Purchase).**
|
||||
Per kickoff decision and the onboarding-recommendation doc: this is the ship-ready flow. Hardware-anchored, doesn't reference in-app screens, can ship today. Wires the hardware → app activation path (eye mask buyers should get a free 6-month Premium trial — formalize this as part of the flow).
|
||||
|
||||
**Move 2 — Ship Flow 4 second (Lapsed User Re-engagement).**
|
||||
Five emails over 38 days. Language is universal — doesn't depend on app UI state. Ship after Flow 6 is live.
|
||||
|
||||
**Move 3 — Hold Flow 2 (Onboarding).**
|
||||
Eight emails over 14 days. Holds until app UI stabilizes post-onboarding-rebuild. Don't ship copy that will need rewriting in 8 weeks.
|
||||
|
||||
**Move 4 — Customer.io subscription center with opt-in topics.**
|
||||
Per kickoff decision. Topics: events, app updates, somatics & nervous system, eye mask promotions. Users self-segment. Improves deliverability (lower complaint rates) and gives lifecycle a richer segmentation surface.
|
||||
|
||||
**Move 5 — Mira post-session reflection (when scoped).**
|
||||
Most powerful retention move medium-term. After a session, Mira asks *"What did you notice?"* Optional preset chips + free text. Two payoffs: (a) gives Mira priors for personalization on session 2+, (b) reflection responses become a content + segmentation goldmine for the team. Scope question for Devon — does Mira currently support this, or is it new build?
|
||||
|
||||
**Move 6 — Hardware → app activation flow.**
|
||||
The eye-mask-buyer-becomes-Premium-subscriber path is hinted in the seed deck (blended CAC via hardware) but isn't visible in the App Store dashboard. Audit the existing flow: does an eye mask Shopify purchase actually deliver a free Premium code? How is it redeemed? What's the conversion rate? This is foundational to the "B2C wedge" thesis.
|
||||
|
||||
**Move 7 — Reconcile the retention metric.**
|
||||
What's the actual definition of "38% 12-month retention"? Cohort? Plan type (monthly vs. annual)? Survives this even if the answer is uncomfortable — the team and investors need to be talking about the same metric.
|
||||
|
||||
**Move 8 — Annual plan as default (cross-cuts to Revenue).**
|
||||
Industry pattern: defaulting to annual reduces churn anxiety and improves LTV. To test in Q2.
|
||||
|
||||
### 90-day retention moves
|
||||
|
||||
- Weeks 1–2: Flow 6 (eye mask post-purchase) ships. Address fixes from kickoff review (study link line break, CAN-SPAM footer, founder face-bubble signature, Judge.me reviews).
|
||||
- Weeks 3–4: Flow 4 (lapsed user re-engagement) ships.
|
||||
- Weeks 5–6: Customer.io subscription center built and live.
|
||||
- Weeks 7–8: Hardware → app activation flow audited and documented. Fix any leaks.
|
||||
- Weeks 9–10: Retention metric reconciliation (with Devon).
|
||||
- Weeks 11–12: Win-back campaign for churned cohort — test re-activation copy.
|
||||
|
||||
### 12-month retention outlook
|
||||
|
||||
- Q1: Flows 6 + 4 firing. Subscription center live.
|
||||
- Q2: Flow 2 ships (post-onboarding-rebuild). Mira post-session reflection in production. Annual plan default tested.
|
||||
- Q3: GA launch — retention metrics re-baselined at higher volume. Cohort-based lifecycle flows (eye mask vs. direct app install).
|
||||
- Q4: Full lifecycle compound. Retention is no longer a top-three concern — focus moves to Referral and Revenue.
|
||||
|
||||
### Skills + tools
|
||||
|
||||
- **Skills:** `emails`, `churn-prevention`, `copywriting`, `copy-editing`, `paywalls`, `ab-testing`
|
||||
- **MCPs / APIs:** **Customer.io MCP** (validated on kickoff — non-technical team can ship flows), Shopify (eye mask buyers as event source), Stripe MCP (subscription state, churn cohort pulls), GA4 MCP (session events, retention curves)
|
||||
|
||||
---
|
||||
|
||||
## 7. Referral
|
||||
|
||||
> *"Do retained users bring more users — and at what cost?"*
|
||||
|
||||
### Current state
|
||||
|
||||
~5 inbound ambassadors waiting (per kickoff). Dub.co set up. No formal program yet. WOM happens naturally per Alex's UA breakdown.
|
||||
|
||||
This is one of the strongest leading indicators in the business: 5 unaffiliated people have raised their hand asking to bring Quietude to their network *before any program exists*. That signal doesn't show up in apps with weaker product-market fit.
|
||||
|
||||
### The plan
|
||||
|
||||
**Move 1 — Launch the ambassador program with the 5 inbound.**
|
||||
Tier 1 of the program. Per-ambassador landing pages (e.g., `quietude.app/with/sarah`). Dub.co tracks attribution. Commission structure to determine (per kickoff, $/sub or rev-share TBD). Soft-launch with the 5 — treat as pilot cohort, gather feedback, refine before opening applications.
|
||||
|
||||
**Move 2 — Build the share-after-shift moment.**
|
||||
The Mira post-session reflection (see Retention) is the natural moment to surface a share prompt. After a user reports a felt shift, offer: *"Want to share Quietude with someone who needs this?"* Single-line, never pushy. Most powerful WOM mechanism: gift-a-month flow where the recipient gets a discounted or free intro.
|
||||
|
||||
**Move 3 — Founder amplification (Alex + Sam as ambassador-zero).**
|
||||
Alex mentioning the fCMO engagement in fundraise pitches (permission granted). Reciprocal mentions in fCMO-side content. Sam's clinical network → practitioner ambassador pool.
|
||||
|
||||
**Move 4 — Quietude Guides cert pilot (long-term, Q3+).**
|
||||
The Guides program is the Phase-2 referral compound (per seed deck). 500–1,000 Guides across 50+ cities by Y3–5. First cert pilot: 3–5 hosts who run live sessions, get a rev-share + co-marketing. Builds local SEO + earned media + ambassador-of-ambassadors flywheel. Hold until paid + lifecycle are firing — Guides is a multi-quarter build.
|
||||
|
||||
**Move 5 — Eye mask gifting flow.**
|
||||
Hardware referral is rare and powerful. *"Send a friend an Quietude eye mask. They get the mask + a free 3-month Premium. You get a credit toward your next thing."* Holiday/gifting peak windows are the test.
|
||||
|
||||
### 90-day referral moves
|
||||
|
||||
- Weeks 1–4: Ambassador program scoped, commission structure decided, per-ambassador landing page template built, 5 inbound onboarded.
|
||||
- Weeks 5–8: First ambassador-driven sales tracked via Dub. Attribution and payout flow validated.
|
||||
- Weeks 9–12: Open applications for next 10–15 ambassadors. Begin Quietude Guides scoping.
|
||||
|
||||
### 12-month referral outlook
|
||||
|
||||
- Q1: Ambassador program live with 5–10 active.
|
||||
- Q2: 15–25 active ambassadors. Share-after-shift moment in production (post-Mira reflection).
|
||||
- Q3: Guides cert pilot launched (3–5 hosts). Eye mask gifting flow live for holiday peak.
|
||||
- Q4: 50+ ambassadors + 5–10 Guides. Referral driving 15–25% of new D2C subs.
|
||||
|
||||
### Skills + tools
|
||||
|
||||
- **Skills:** `referrals`, `social`, `copywriting`, `marketing-website-design` (per-ambassador landing pages)
|
||||
- **MCPs / APIs:** Dub.co (attribution — already in stack), Stripe MCP (commission accounting + payouts), GitHub MCP (landing page deployment in `quietude-promo` or new `quietude-ambassadors` repo), Customer.io MCP (ambassador lifecycle: onboarding, monthly performance digest, payout notification)
|
||||
|
||||
---
|
||||
|
||||
## 8. Revenue
|
||||
|
||||
> *"What do we charge, who pays, and how does that compound?"*
|
||||
|
||||
### Current state
|
||||
|
||||
| Product | Price | Volume signal |
|
||||
|---|---|---|
|
||||
| Quietude App + Mira | ~$30/mo | 145 paid subs (App Store snapshot 2026-05-16) |
|
||||
| Quietude Eye Mask | ~$45 | 5K in stock, longevity-influencer PR-driven sales |
|
||||
| Quietude Audio (speakers) | ~$7,500 | Niche, founder-led |
|
||||
| Quietude Spaces (B2B install) | $50–200K | Aurora flagship in-flight (~€250K), pipeline of 4 venues |
|
||||
| Quietude Experiences (events) | Varies | 15K+ historical participants |
|
||||
| Quietude Guides | Rev share | Not yet operational |
|
||||
|
||||
**Revenue to date: ~$500K on ~$250K raised.** Capital-efficient. Hardware + B2B + app subs all contributing.
|
||||
|
||||
**MRR (App Store snapshot): $592.** Beta-throttled, not steady-state. The implied ~$4/sub/mo against $30/mo list suggests heavy annual plan adoption (which compresses monthly revenue but improves LTV) or significant promotional pricing — to reconcile with Alex.
|
||||
|
||||
### The plan
|
||||
|
||||
**Move 1 — Pricing audit.**
|
||||
What's actually being charged today? List price, common plan mix, intro pricing, churn-recovery offers? The $4/sub/mo implied math doesn't tell a clean story — need ground truth before recommending changes.
|
||||
|
||||
**Move 2 — Annual plan as default (test).**
|
||||
Industry pattern, cross-references to Retention. Test in Q2.
|
||||
|
||||
**Move 3 — Hardware → app bundling formalized.**
|
||||
Per partner-event-business framing in the seed deck: blended CAC via hardware → app subscription is the play. Today an eye mask buyer gets... what, exactly? Free Premium? Trial code? Audit + formalize. The eye mask is the wedge; the app is the LTV.
|
||||
|
||||
**Move 4 — Eye mask Shopify storefront optimization.**
|
||||
The current page underperforms what it could. Add: SEO targeting ("weighted sleep mask," "blackout sleep mask"), Judge.me reviews (kickoff decision), 30-day return policy (kickoff decision), upsell flow into Premium app.
|
||||
|
||||
**Move 5 — Consider Amazon listing for eye mask.**
|
||||
Amazon takes margin but is its own discovery engine. Test as v2 distribution if Shopify volume validates.
|
||||
|
||||
**Move 6 — B2B install case studies + sales material.**
|
||||
Alex owns B2B sales but marketing supports with: post-install case studies (Aurora as the flagship), `/partner` page rewrite in voice, Pillar 4 SEO content. Each B2B install is a ~$430K/year recurring + reference-case multiplier.
|
||||
|
||||
**Move 7 — Data licensing (long-term, flag for ops stack).**
|
||||
Per seed deck Y10–15 value pool: $100–160M/yr. Not immediate revenue. Belongs in the 24-month strategic agenda. Flag here so we don't lose sight.
|
||||
|
||||
### 90-day revenue moves
|
||||
|
||||
- Weeks 1–2: Pricing audit. Reconcile implied vs. listed MRR.
|
||||
- Weeks 3–4: Hardware → app activation flow audited (also Retention move 6).
|
||||
- Weeks 5–8: Eye mask Shopify page rewrite + SEO optimization + Judge.me + return policy. Aurora case study scaffolded for post-install.
|
||||
- Weeks 9–12: Annual plan default test scoped.
|
||||
|
||||
### 12-month revenue outlook
|
||||
|
||||
- Q1: Pricing audit closes. Hardware → app activation formalized.
|
||||
- Q2: Annual plan default test live. Eye mask Shopify producing measurable lift.
|
||||
- Q3: B2B install case studies (1–2) published. GA launch + new pricing tier consideration (e.g., a higher-tier Mira-heavy plan?).
|
||||
- Q4: Pricing optimized via test results. Hardware → app blended CAC tracked and reported. First numbers on the data-licensing thesis (still very early).
|
||||
|
||||
### Skills + tools
|
||||
|
||||
- **Skills:** `pricing`, `paywalls`, `sales-enablement`, `revops`, `ab-testing`, `copywriting`
|
||||
- **MCPs / APIs:** Stripe MCP (pricing tests, subscription analytics, churn cohort, blended CAC math), Customer.io MCP (paywall-related lifecycle), Shopify (eye mask transactions), GA4 MCP (revenue events), Notion (commercial knowledge directory)
|
||||
|
||||
---
|
||||
|
||||
## 9. 90-day roadmap
|
||||
|
||||
Tactical execution layer. Each item is AARRR-tagged so priority is visible.
|
||||
|
||||
### Weeks 1–2 — Unblock
|
||||
|
||||
| Move | Stage | Owner |
|
||||
|---|---|---|
|
||||
| Kill the headphones hard-gate | Activation | Casey + Devon |
|
||||
| Domain consolidation decision documented | Acquisition | Casey + Alex |
|
||||
| 301 plan drafted (page-by-page) | Acquisition | Casey |
|
||||
| App Store listing rewrite — first pass | Activation + Acquisition | Casey + Alex + Sam (voice review) |
|
||||
| Flow 6 (eye mask post-purchase) ships | Retention | Casey + Customer.io MCP |
|
||||
| Ambassador program scoping doc | Referral | Casey |
|
||||
| Pricing audit kicked off | Revenue | Casey + Alex |
|
||||
|
||||
### Weeks 3–4 — Foundation
|
||||
|
||||
| Move | Stage | Owner |
|
||||
|---|---|---|
|
||||
| Domain consolidation 301s executed | Acquisition | Devon + Casey |
|
||||
| GSC + GA4 stood up on `quietude.app` | Acquisition | Casey |
|
||||
| SEO Pillar 1 hub drafted (Nervous System Regulation) | Acquisition | Casey |
|
||||
| `/science` hub built with peer-reviewed psychophysiology study | Acquisition + brand | Casey + Sam |
|
||||
| Variant 3 (Felt First) onboarding prototyped + tested | Activation | Casey + Devon |
|
||||
| Flow 4 (lapsed user) ships | Retention | Casey |
|
||||
| Ambassador program: 5 inbound onboarded | Referral | Casey |
|
||||
| Hardware → app activation flow audited | Retention + Revenue | Casey + Devon |
|
||||
| App Store listing rewrite — final + ship | Activation + Acquisition | Alex + Sam + Casey |
|
||||
|
||||
### Weeks 5–8 — Velocity
|
||||
|
||||
| Move | Stage | Owner |
|
||||
|---|---|---|
|
||||
| Pillar 1 hub + 3 spokes published | Acquisition | Casey |
|
||||
| Pillar 2 hub (Eye Mask) + listicle published | Acquisition | Casey |
|
||||
| Alex's LinkedIn cadence operationalized (Typefully) | Acquisition | Alex + Casey |
|
||||
| First PR push: study + longevity-influencer hook to 5 outlets | Acquisition | Casey + Alex |
|
||||
| Variant 3 read; ship or iterate | Activation | Casey |
|
||||
| Variant 1 (Trust First) prototyped + tested | Activation | Casey + Devon |
|
||||
| Customer.io subscription center built | Retention | Casey |
|
||||
| Eye mask Shopify storefront rewrite (SEO + reviews + return) | Acquisition + Revenue | Casey + Alex |
|
||||
| First ambassador attribution verified via Dub | Referral | Casey |
|
||||
|
||||
### Weeks 9–12 — Compound
|
||||
|
||||
| Move | Stage | Owner |
|
||||
|---|---|---|
|
||||
| Pillar 4 (WELL/B2B) cornerstone published | Acquisition | Casey |
|
||||
| 3 more Pillar 1 spokes published | Acquisition | Casey |
|
||||
| Sound Philosophy published at `/research/sound-philosophy` | Acquisition + brand | Alex + Casey |
|
||||
| Variant 1 read; begin Variant 2 (Seen First) build (Mira-dependent) | Activation | Casey + Devon |
|
||||
| Win-back campaign for churned cohort | Retention | Casey |
|
||||
| Annual plan default test scoped | Revenue | Casey + Alex |
|
||||
| Open ambassador applications for next 10–15 | Referral | Casey |
|
||||
| 90-day review + Q2 plan recalibration | Cross-cutting | Casey + Alex |
|
||||
|
||||
---
|
||||
|
||||
## 10. 12-month outlook
|
||||
|
||||
Quarterly milestones with funding-stage capability unlocks named explicitly.
|
||||
|
||||
### Q1 — Months 1–3 (Jun–Aug 2026)
|
||||
|
||||
**Funding state:** Pre-seed-close. Paid budget = $0. fCMO + founder-led + tool costs only.
|
||||
|
||||
**Focus:** Foundation. Plug the leaks. Stake the SEO ground. Get lifecycle firing.
|
||||
|
||||
**Outcomes by end of Q1:**
|
||||
- Headphones gate gone; onboarding winner identified
|
||||
- All four SEO pillars seeded (hub + first spokes)
|
||||
- Lifecycle Flows 4 + 6 live
|
||||
- App Store listing in brand voice
|
||||
- 5 ambassadors active
|
||||
- Pricing audit closed
|
||||
- Domain consolidated
|
||||
|
||||
**KPI targets:** Onboarding Day 1 → paid lift of 25–50%. Organic traffic 500–1,500/mo. App Store conversion rate +20%.
|
||||
|
||||
### Q2 — Months 4–6 (Sep–Nov 2026)
|
||||
|
||||
**Funding state:** Seed close (~Q3 2026 target). First paid budget unlock: $5–10K/mo test.
|
||||
|
||||
**Focus:** Validate paid. Scale winning onboarding. Add Flow 2.
|
||||
|
||||
**Outcomes by end of Q2:**
|
||||
- Paid acquisition firing on Apple Search Ads + Meta
|
||||
- Onboarding winner permanently shipped
|
||||
- Flow 2 (onboarding emails) shipped
|
||||
- Mira post-session reflection in production
|
||||
- 15–25 ambassadors active
|
||||
- First B2B install reference case (Aurora) published
|
||||
- Annual plan default tested
|
||||
|
||||
**KPI targets:** Paid CAC < $50 blended. Organic traffic 1,500–3,500/mo. Retention curves visibly improving.
|
||||
|
||||
### Q3 — Months 7–9 (Dec 2026–Feb 2027)
|
||||
|
||||
**Funding state:** Seed deployment. Paid scales to $20–50K/mo if unit economics hold. First marketing hire (lifecycle + content manager).
|
||||
|
||||
**Focus:** Scale + diversify. App GA. B2B reference cases compound.
|
||||
|
||||
**Outcomes by end of Q3:**
|
||||
- App GA launched with new GTM moment (PR + ad creative refresh + Pillar 3 spatial-audio-science content cycle)
|
||||
- First Quietude Guides cert pilot (3–5 hosts)
|
||||
- All four pillars producing weekly content
|
||||
- Eye mask gifting flow live for holiday peak
|
||||
- New marketing hire onboarded
|
||||
|
||||
**KPI targets:** Paid + organic blended CAC stabilizing. App GA conversion +50% from beta baseline. Guides pilot validates rev-share + co-marketing model.
|
||||
|
||||
### Q4 — Months 10–12 (Mar–May 2027)
|
||||
|
||||
**Funding state:** Pre–Series A. Paid scaling continues. Series A pitch in motion.
|
||||
|
||||
**Focus:** Compound. Position for Series A.
|
||||
|
||||
**Outcomes by end of Q4:**
|
||||
- Compound channels (organic + ambassador + Guides + lifecycle) producing 50%+ of new subs
|
||||
- 50+ ambassadors, 5–10 Guides
|
||||
- 4 SEO pillars + 30+ pieces of content live
|
||||
- Paid scaling to $50–150K/mo if validated
|
||||
- Series A narrative: clinical evidence + activation lift + lifecycle compounding + B2B reference case pipeline
|
||||
|
||||
**KPI targets:** D2C ARR run-rate trajectory clear. Blended LTV/CAC > 3. Founder narrative + data + reference cases ready for Series A.
|
||||
|
||||
---
|
||||
|
||||
## 11. Marketing operations stack
|
||||
|
||||
This is what makes the plan executable at Quietude's team size. A 4-person founder team + fCMO + agentic tooling can ship the output of a 15–20-person traditional marketing org — because the marketing skill library and MCP integrations do the orchestration.
|
||||
|
||||
### The thesis
|
||||
|
||||
Every move in the AARRR breakdown above maps to (a) one or more marketing skills that operationalize the work, and (b) one or more MCP/API integrations that let it execute without a dedicated headcount per channel.
|
||||
|
||||
The fCMO's job is to:
|
||||
1. Define the strategy and sequencing (this doc)
|
||||
2. Run the skills against the right context at the right time
|
||||
3. Maintain the shared context (`quietude-context`) and tooling so Alex + Sam + future hires can plug in
|
||||
4. Hand off operational work to humans (or future hires) only where the cost of agentic execution > human execution
|
||||
|
||||
### Skills mapped to AARRR stages
|
||||
|
||||
| Stage | Primary skills | Supporting skills |
|
||||
|---|---|---|
|
||||
| **Acquisition** | `seo-audit`, `ai-seo`, `programmatic-seo`, `schema`, `content-strategy`, `competitors`, `ads`, `ad-creative`, `social`, `typefully` | `launch`, `free-tools`, `analytics`, `cold-email`, `copywriting`, `marketing-website-design` |
|
||||
| **Activation** | `onboarding`, `signup`, `paywalls`, `cro`, `copywriting`, `copy-editing`, `copycraft` | `marketing-website-design`, `ab-testing`, `marketing-psychology`, `cro`, `popups` |
|
||||
| **Retention** | `emails`, `churn-prevention` | `copywriting`, `copy-editing`, `ab-testing`, `paywalls` |
|
||||
| **Referral** | `referrals`, `social` | `copywriting`, `marketing-website-design`, `emails` |
|
||||
| **Revenue** | `pricing`, `paywalls`, `sales-enablement`, `revops` | `ab-testing`, `copywriting` |
|
||||
| **Cross-cutting** (brand, intelligence) | `product-marketing`, `customer-research`, `marketing-psychology` | `marketing-ideas`, `diagram-maker` |
|
||||
|
||||
### MCPs / APIs mapped to stages
|
||||
|
||||
| Stage | Existing connections at Quietude | Tooling layer (Casey's fCMO stack) |
|
||||
|---|---|---|
|
||||
| **Acquisition** | App Store Connect (manual), Shopify, GA4 (in progress), Notion | Ahrefs API, DataForSEO API, Typefully MCP, GitHub MCP (`quietude-promo`), `agent-browser`, `defuddle` |
|
||||
| **Activation** | App Store Connect, Customer.io, Shopify | App Store Connect (via `dev-browser` for screenshot automation), Figma / Pencil MCP, GitHub MCP (`quietude-app` app repo), Stripe MCP |
|
||||
| **Retention** | **Customer.io (with Claude MCP — validated on kickoff)**, Stripe, Shopify | Customer.io MCP, Stripe MCP, GA4 MCP |
|
||||
| **Referral** | Dub.co, Stripe | Dub.co, Stripe MCP, GitHub MCP (per-ambassador landing pages), Customer.io MCP |
|
||||
| **Revenue** | Stripe, Shopify, Customer.io | Stripe MCP, Shopify, GA4 MCP, Notion |
|
||||
| **Cross-cutting** | Notion, GitHub (`quietude-context`) | Notion, GitHub MCP, `defuddle`, `obsidian-cli` (for Casey's working notes) |
|
||||
|
||||
### The Customer.io MCP unlock (concrete example)
|
||||
|
||||
Per kickoff call: *"Built live on call — abandoned-cart flow drafted using Customer.io's Claude MCP. Validated that non-technical team can use the skill pattern independently."*
|
||||
|
||||
This is the operational proof that the stack works. Alex, who is not a developer, drafted a working lifecycle flow with Claude + Customer.io MCP in real time on a kickoff call. The same pattern applies to: Flow 4 ship (lapsed user re-engagement), subscription center build, win-back campaign, eye mask gifting flow, ambassador lifecycle. The fCMO's role becomes orchestration + brand-voice QA, not hand-cranking each email.
|
||||
|
||||
### Capability unlocks by funding stage
|
||||
|
||||
| Stage | Headcount | Tooling | Channels live |
|
||||
|---|---|---|---|
|
||||
| **Pre-seed-close (now)** | fCMO + founder team | All current tooling + Casey's marketing skill library + MCP layer | Organic only (SEO, content, App Store, LinkedIn, events, WOM, ambassador) |
|
||||
| **Seed close (~Q3 2026)** | + first marketing hire (lifecycle/content) by end of Q3 | + paid ad accounts (Apple Search Ads, Meta, LinkedIn) | + paid acquisition pilot $5–10K/mo |
|
||||
| **Seed deployment (Q3–Q4 2026)** | + designer (potentially fractional) | + analytics expansion (Mixpanel or Amplitude if needed) | + paid scaling $20–50K/mo, + Guides cert pilot |
|
||||
| **Series A (2027)** | + performance marketing lead + content lead | + dedicated tooling spend (~$2–5K/mo software) | + paid scaling $50–150K/mo, + international, + B2B vertical expansion |
|
||||
|
||||
The marketing skill library scales these stages. Every channel added doesn't require a 1:1 headcount increase because each skill encodes the workflow.
|
||||
|
||||
---
|
||||
|
||||
## 12. Tactical idea bank — 139-idea cross-reference
|
||||
|
||||
The `marketing-ideas` skill catalogs 139 proven marketing tactics. Sections 4–8 (AARRR) prescribe what we're *doing*. This section maps the full universe of what's *possible* — every idea cross-referenced to the AARRR stage it primarily serves, with Quietude applicability and timing.
|
||||
|
||||
This is the exhaustive menu. The plan above is the curated path. When we move to Q2 / Q3 / Series A and unlock new capacity, this is the inventory we pull from.
|
||||
|
||||
**Status legend:**
|
||||
|
||||
- **Now (Q1)** — already in the 90-day plan OR can run alongside it without new capacity
|
||||
- **Q2** — post-bedrock-fix, post-foundation; second-quarter layer-ins
|
||||
- **Q3+** — post-seed-close, post-GA; expansion moves
|
||||
- **Q4+** — long-game / large-investment moves
|
||||
- **Skip / off-brand** — incompatible with Quietude's brand voice, business model, or product category
|
||||
|
||||
### 12.1 Acquisition ideas (88 mapped)
|
||||
|
||||
**Now (Q1):**
|
||||
|
||||
| # | Idea | Quietude note |
|
||||
|---|---|---|
|
||||
| 1 | Easy Keyword Ranking | SEO plan Tier-1 cluster (nervous system, sleep mask, B2B) targets this directly |
|
||||
| 2 | SEO Audit | Run `/seo-audit quietude.app` quarterly; publish findings as content |
|
||||
| 5 | Content Repurposing | Sound Philosophy → essays → LinkedIn posts → newsletter → podcast loop |
|
||||
| 6 | Proprietary Data Content | peer-reviewed psychophysiology study now; anonymized Quietude HRV / sleep dataset later |
|
||||
| 7 | Internal Linking | Built into the pillar/spoke structure of the SEO plan |
|
||||
| 10 | Parasite SEO | Alex's LinkedIn already does this; consider mirror to Substack |
|
||||
| 12 | Marketing Jiu-Jitsu | Meditation-vs-Regulation IS this — turn "meditation works" assumption against itself |
|
||||
| 36 | Quora Marketing | Answer "why meditation doesn't work for me" + HRV + somatic questions |
|
||||
| 37 | Reddit Keyword Research | Mine r/somatic, r/CPTSD, r/HSP, r/ADHD for ICP language (feeds Customer Language #139) |
|
||||
| 39 | LinkedIn Audience | Alex's channel productized — primary D2C top-of-funnel today |
|
||||
| 59 | Article Quotes | HARO / Help-A-B2B-Writer for Alex + Sam — easy press wins |
|
||||
| 70 | Conference Speaking | Alex: WELL Conference, biophilic design events, Mindful Leadership Summit |
|
||||
| 74 | Press Coverage | Pitch peer-reviewed study + longevity-influencer hook to 5 outlets in Q1 |
|
||||
| 109 | Public Demos | Live Quietude events ARE this; instrument the in-person → app conversion |
|
||||
| 114 | Moneyball Marketing | Already practicing — asymmetric SEO keywords, undervalued channels |
|
||||
| 133 | Investor Marketing | Alex's raise — leverage angel backchannel for PR + intros |
|
||||
|
||||
**Q2:**
|
||||
|
||||
| # | Idea | Quietude note |
|
||||
|---|---|---|
|
||||
| 3 | Glossary Marketing | Sound + nervous system glossary — "what is polyvagal," "what is HRV," "what is somatic listening" |
|
||||
| 8 | Content Refreshing | Revisit Pillar 1 quarterly with new data and search-intent updates |
|
||||
| 11 | Competitor Comparison Pages | Quietude vs. Calm / Headspace / Brain.fm / Endel / Wavepaths — high-intent SERPs |
|
||||
| 13 | Competitive Ad Research | SpyFu + Facebook Ad Library before launching paid |
|
||||
| 17 | Quiz Marketing | "What's your nervous system profile?" — generates personalization seed + lead capture |
|
||||
| 25 | Facebook Ads | Eye mask creative + somatic content + retargeting from event attendees |
|
||||
| 26 | Instagram Ads | Visual product + Reels-native ads (eye mask especially) |
|
||||
| 28 | LinkedIn Ads | B2B venue buyers + investor-adjacent ICP |
|
||||
| 31 | Google Ads | Apple Search Ads first (App Store intent); Google for eye mask + B2B |
|
||||
| 38 | Reddit Marketing | Authentic participation in r/somatic, r/HSP, r/ADHD after content base exists |
|
||||
| 40 | Instagram Audience | Eye mask + somatic creators; Reels-native |
|
||||
| 44 | Comment Marketing | Thoughtful comments on Huberman / the partner-event-business / Tim Ferriss / wellness creators |
|
||||
| 49 | Monthly Newsletters | Either Quietude-branded or sync with Sam's Sam's Substack newsletter |
|
||||
| 54 | Affiliate Discovery via Backlinks | Find who links to Calm/Headspace/Brain.fm — pitch them on Quietude affiliate program |
|
||||
| 58 | Newsletter Swaps | the partner-event-business, founder wellness Substacks, Alex's investor network |
|
||||
| 64 | Community Sponsorship | Somatic newsletters, wellness Substacks, founder communities |
|
||||
| 65 | Live Webinars | Alex + Sam hosting "Sound + the Nervous System" |
|
||||
| 101 | Industry Interviews | Alex + Sam interview category experts (becomes seed of Quietude podcast) |
|
||||
| 102 | Social Screenshots | Mira reflection responses (anonymized, consented) — social proof gold |
|
||||
| 108 | Changelogs | Public changelog at `quietude.app/changes` — product momentum signal |
|
||||
| 115 | Curation as Marketing | Curated "field recordings of the year" feature; Quietude Spaces directory |
|
||||
| 135 | Support as Marketing | Surface customer support / Mira reflection moments as content |
|
||||
| 138 | Podcast Tours | Alex on Huberman, the partner-event-business, Tim Ferriss, Rich Roll, Rangan Chatterjee |
|
||||
|
||||
**Q3+:**
|
||||
|
||||
| # | Idea | Quietude note |
|
||||
|---|---|---|
|
||||
| 4 | Programmatic SEO | Quietude Guides city pages once Guides program scales |
|
||||
| 9 | Knowledge Base SEO | When help docs scale enough to have problem-solution coverage |
|
||||
| 14 | Side Projects | Eventually a free Quietude-adjacent tool that lives outside the app |
|
||||
| 15 | Engineering as Marketing | HRV interpretation guide; nervous system self-assessment; sound bath finder directory |
|
||||
| 18 | Calculator Marketing | Sleep latency calculator; overstimulation index |
|
||||
| 20 | Microsites | For specific GTM moments (e.g., Mira GA launch) |
|
||||
| 23 | Podcast Advertising | Huberman, Tim Ferriss, Rich Roll, the partner-event-business — host-read most relevant |
|
||||
| 24 | Pre-targeting Ads | Warm audiences via content before direct-response |
|
||||
| 29 | Reddit Ads | r/HSP, r/ADHD, r/somatic — high ICP density, low advertiser saturation |
|
||||
| 30 | Quora Ads | Intent-rich for "why meditation doesn't work" queries |
|
||||
| 32 | YouTube Ads | Pre-roll on Huberman / Lex Fridman / wellness creator videos |
|
||||
| 33 | Cross-Platform Retargeting | Standard layer once paid is firing |
|
||||
| 35 | Community Marketing | Quietude Spaces community (Discord/Circle); host monthly drop-ins |
|
||||
| 42 | Short Form Video | TikTok / Reels — somatic education + eye mask UGC |
|
||||
| 55 | Influencer Whitelisting | Run ads through ambassador / Guide accounts for authenticity |
|
||||
| 57 | Expert Networks | Quietude Guides program IS this — certified hosts who can market |
|
||||
| 60 | Pixel Sharing | Standard once paid is firing |
|
||||
| 61 | Shared Slack Channels | Partner venue Slacks (Aurora, Lumen, Stillwater) |
|
||||
| 63 | Integration Marketing | Apple Health (HRV data), Oura, Whoop — co-marketing |
|
||||
| 66 | Virtual Summits | Quietude participates or hosts |
|
||||
| 68 | Local Meetups | Cities with high ICP density (SF, NYC, LA, Austin) |
|
||||
| 69 | Meetup Sponsorship | Sponsor wellness / biohacking meetups |
|
||||
| 72 | Conference Sponsorship | Industry conferences once budget unlocks |
|
||||
| 75 | Fundraising PR | "Quietude raises $3M" moment when seed closes |
|
||||
| 78 | Product Hunt Launch | Mira public launch moment |
|
||||
| 79 | Early-Access Referrals | App GA early-access list (cross-references to Referral) |
|
||||
| 81 | Early Access Pricing | App GA — early-access tier locked in for first cohort |
|
||||
| 82 | Product Hunt Alternatives | BetaList, Launching Next, AlternativeTo at GA |
|
||||
| 97 | Playlists as Marketing | Quietude curates Spotify playlists for somatic listening |
|
||||
| 98 | Template Marketing | Free "nervous system reset" protocol PDFs |
|
||||
| 100 | Promo Videos | High-quality brand films — Ed Dorsey advises, Matt Mikkelsen field audio |
|
||||
| 103 | Online Courses | Alex's Sound Philosophy course; Sam's somatic methodology course |
|
||||
| 107 | Podcasts | Quietude podcast — interview format with category experts and customers |
|
||||
| 111 | Challenges as Marketing | "21-day nervous system reset" — tasteful, no fitness-bro tone |
|
||||
| 113 | Controversy as Marketing | Meditation-vs-Regulation IS mild controversy — lean in carefully |
|
||||
| 126 | YouTube Reviews | Pitch Quietude to wellness YouTubers — Huberman fan-creator tier |
|
||||
| 127 | YouTube Channel | Sound design behind-the-scenes; Sam session demos |
|
||||
| 129 | Review Sites | App Store reviews actively managed; Trustpilot for eye mask Shopify |
|
||||
| 130 | Live Audio | Twitter Spaces / LinkedIn Audio with Alex on sound + body |
|
||||
| 134 | Certifications | Quietude Guides cert IS this — Q3+ pilot |
|
||||
|
||||
**Q4+ / long-game:**
|
||||
|
||||
| # | Idea | Quietude note |
|
||||
|---|---|---|
|
||||
| 56 | Reseller Programs | Corporate wellness platforms (Modern Health, Lyra) as resellers |
|
||||
| 67 | Roadshows | Quietude Experiences IS this — eye mask + listening session pop-ups in 3 cities |
|
||||
| 71 | Conferences | Quietude-hosted "Sound + the Body" — long-game category-defining moment |
|
||||
| 76 | Documentaries | Alex's story is documentary-grade — long game |
|
||||
| 77 | Black Friday Promotions | Holiday eye mask + Premium bundle |
|
||||
| 80 | New Year Promotions | New Year nervous system reset campaign |
|
||||
| 84 | Giveaways | Eye mask giveaway with brand partner (Wellness Mama tier) |
|
||||
| 85 | Vacation Giveaways | Quietude + retreat partner giveaway (quietude.center could be venue) |
|
||||
| 87 | Powered By Marketing | "Sound system by Quietude" badge in B2B venue installs |
|
||||
| 104 | Book Marketing | Sound Philosophy as a book — long-game positioning anchor |
|
||||
| 105 | Annual Reports | "State of the Nervous System" — Quietude's data + industry commentary |
|
||||
| 106 | End of Year Wraps | "Your nervous system year" — Spotify Wrapped equivalent |
|
||||
| 110 | Awards as Marketing | Quietude founds an award for innovative biophilic acoustic design |
|
||||
| 116 | Grants as Marketing | Free Quietude subscriptions for therapists, social workers, first responders |
|
||||
| 119 | OOH Advertising | SF / NYC billboards if Series A budget unlocks |
|
||||
| 120 | Marketing Stunts | Public sound installation could work — brand-fitting |
|
||||
| 121 | Guerrilla Marketing | Sound installation in subway / airport — interesting but requires care |
|
||||
| 131 | International Expansion | Finland HQ + global ICP — Q4 or post-Series A |
|
||||
|
||||
**Skip / off-brand for Quietude:**
|
||||
|
||||
| # | Idea | Why skip |
|
||||
|---|---|---|
|
||||
| 16 | Importers as Marketing | No competitor data to import (consumer wellness, not SaaS) |
|
||||
| 19 | Chrome Extensions | Off-platform (mobile-first product) |
|
||||
| 21 | Scanners | No obvious product fit |
|
||||
| 22 | Public APIs | Not core business |
|
||||
| 27 | Twitter Ads | Lower priority unless Alex's X presence grows |
|
||||
| 34 | Click-to-Messenger Ads | Off-brand (no DM-driven sales pattern) |
|
||||
| 41 | X Audience | Depends on Alex's bandwidth — defer unless he wants to |
|
||||
| 43 | Engagement Pods | Off-brand |
|
||||
| 73 | Media Acquisitions | Too capital-intensive at this stage |
|
||||
| 83 | Twitter Giveaways | Off-brand voice |
|
||||
| 86 | Lifetime Deals | Brand-conflict — pressures the "no pressure" voice and damages LTV math |
|
||||
| 88 | Free Migrations | No competitor data to migrate |
|
||||
| 89 | Contract Buyouts | Not relevant for D2C subs |
|
||||
| 99 | Graphic Novel Marketing | Off-brand |
|
||||
| 112 | Reality TV Marketing | Off-brand |
|
||||
| 117 | Product Competitions | Not a developer product |
|
||||
| 118 | Cameo Marketing | Off-brand |
|
||||
| 122 | Humor Marketing | Brand voice is serious; humor would feel off |
|
||||
| 123 | Open Source as Marketing | Proprietary audio library |
|
||||
| 125 | App Marketplaces | Not relevant for native consumer app (no app-of-app pattern) |
|
||||
| 128 | Source Platforms | G2 / Capterra are B2B-focused; D2C uses App Store reviews |
|
||||
| 132 | Price Localization | Q4+ — tied to international expansion |
|
||||
| 136 | Developer Relations | Not a dev product |
|
||||
|
||||
### 12.2 Activation ideas (7 mapped)
|
||||
|
||||
| # | Idea | Status | Quietude note |
|
||||
|---|---|---|---|
|
||||
| 124 | App Store Optimization | Now | Q1 priority — listing rewrite in voice (also Acquisition) |
|
||||
| 90 | One-Click Registration | Now | OAuth (Apple, Google) for app signup — standard activation lift |
|
||||
| 51 | Onboarding Emails | Q2 | Flow 2 — held until UI stable post-onboarding-rebuild |
|
||||
| 96 | Onboarding Optimization | Q1-Q2 | The 3-variant test IS this — primary activation work |
|
||||
| 47 | Founder Welcome Email | Q2 | Personal welcome from Alex or Sam early in Flow 2 |
|
||||
| 48 | Dynamic Email Capture | Q2 | Smart capture on `quietude.app` — exit intent + scroll depth |
|
||||
| 95 | Concierge Setup | Q3+ | High-touch onboarding for B2B venue clients + high-value subscribers |
|
||||
|
||||
### 12.3 Retention ideas (8 mapped)
|
||||
|
||||
| # | Idea | Status | Quietude note |
|
||||
|---|---|---|---|
|
||||
| 46 | Reactivation Emails | Now | Flow 4 ships in weeks 3–4 — exactly this |
|
||||
| 52 | Win-back Emails | Q1 (week 11-12) | Standalone campaign on top of Flow 4 |
|
||||
| 53 | Trial Reactivation | Q2 | Expired-trial recovery campaign once paywall is firing |
|
||||
| 45 | Mistake Email Marketing | Q2 | When something genuinely goes wrong, send "oops" — drives engagement |
|
||||
| 50 | Inbox Placement | Q1 | Subdomain silo strategy (`mail.quietude.app` / `commerce.quietude.app`) addresses this |
|
||||
| 91 | In-App Upsells | Q2 | Premium upsell points within app (also Revenue) |
|
||||
| 94 | Offboarding Flows | Q2 | Optimize cancellation flow to retain or learn — feeds churn intel |
|
||||
| 135 | Support as Marketing | Q2 | Customer support stories surface as content (also Acquisition) |
|
||||
|
||||
### 12.4 Referral ideas (5 mapped)
|
||||
|
||||
| # | Idea | Status | Quietude note |
|
||||
|---|---|---|---|
|
||||
| 62 | Affiliate Program | Now | Ambassador program v1 is exactly this — launched with the 5 inbound |
|
||||
| 137 | Two-Sided Referrals | Q2 | Reward both referrer and referred — share-after-shift moment + gifting flow |
|
||||
| 92 | Newsletter Referrals | Q3 | If we launch a newsletter, Sparkloop-style referral mechanic |
|
||||
| 93 | Viral Loops | Q3 | Built-in share mechanics post-Mira reflection |
|
||||
| 79 | Early-Access Referrals | Q3 | App GA early-access list referrals (cross-references to Acquisition) |
|
||||
|
||||
### 12.5 Revenue ideas (3 mapped — most ideas serve top-of-funnel)
|
||||
|
||||
| # | Idea | Status | Quietude note |
|
||||
|---|---|---|---|
|
||||
| 91 | In-App Upsells | Q2 | Premium upgrade prompts; eye mask cross-sell from app (also Retention) |
|
||||
| 132 | Price Localization | Q4+ | Adjust pricing for local purchasing power once international |
|
||||
| 86 | Lifetime Deals | Skip | Brand-conflict — see Acquisition skip list |
|
||||
|
||||
### 12.6 Cross-cutting / brand foundation ideas
|
||||
|
||||
| # | Idea | Status | Quietude note |
|
||||
|---|---|---|---|
|
||||
| 139 | Customer Language | Now | Mira reflection responses + 7 Ds language = the source-of-truth for customer language across all copy |
|
||||
| 114 | Moneyball Marketing | Ongoing | Find undervalued channels at every stage — methodology, not a single tactic |
|
||||
|
||||
### Idea-bank summary
|
||||
|
||||
- **88 ideas applicable to Acquisition** (the dominant stage at Quietude's current stage — makes sense, Quietude's product converts well; the bottleneck is the top of funnel)
|
||||
- **7 ideas to Activation, 8 to Retention** (smaller because these stages are about depth, not breadth — execute the right few well rather than running a wide tactic menu)
|
||||
- **5 ideas to Referral** (program-driven, not tactic-driven)
|
||||
- **3 ideas to Revenue** (most revenue work is pricing strategy, not tactical tricks)
|
||||
- **2 cross-cutting**
|
||||
- **23 ideas skipped for brand / business-model fit** — Quietude's category positioning constrains what's available
|
||||
|
||||
**What this proves:** the plan is roughly 30% of the available tactical surface area, not 100%. That's appropriate at this stage and budget. As capacity unlocks across Q2 → Q3 → Series A, the cross-reference becomes the inventory we pull from to scale activity without losing strategic coherence.
|
||||
|
||||
---
|
||||
|
||||
## 13. Measurement, RACI, open decisions, appendix
|
||||
|
||||
### Measurement — the metrics that matter
|
||||
|
||||
**North star (proposed):**
|
||||
**Blended-LTV-to-blended-CAC ratio per acquired user**, where:
|
||||
- Blended LTV combines app subscription revenue + hardware revenue (eye mask + speakers) + any cross-sells, per cohort
|
||||
- Blended CAC combines paid spend + content production cost + ambassador commissions + lifecycle tool spend, per cohort
|
||||
|
||||
This captures the business model: the eye mask wedge isn't free if it costs $X to make, and the app sub isn't expensive to acquire if a Bryan-Johnson-style PR moment is paying for itself.
|
||||
|
||||
If a single metric is preferred for team-level focus, fall back to: **monthly new D2C subscribers from non-paid channels.** This isolates the compound channels the long-game strategy depends on.
|
||||
|
||||
**Leading indicators by AARRR stage:**
|
||||
|
||||
| Stage | Leading indicators |
|
||||
|---|---|
|
||||
| Acquisition | Organic visits/mo (overall + per pillar), App Store visit-to-install rate, Alex's LinkedIn engagement → email subscribers, event-to-app conversion rate, ambassador-attributed visits |
|
||||
| Activation | Day 1 / Day 7 / Day 35 → paid conversion, onboarding session-completion rate, first session Mira reflection completion |
|
||||
| Retention | 30 / 60 / 90-day retention, monthly churn, Flow 4 reactivation rate, hardware → app activation rate |
|
||||
| Referral | Ambassador-attributed new subs (Dub), share-after-shift rate, Guides pilot referrals (when live) |
|
||||
| Revenue | Blended MRR, ARPU, annual plan adoption %, LTV by cohort, eye mask attach rate |
|
||||
|
||||
**Review cadence:**
|
||||
- **Weekly:** fCMO ↔ Alex 30-min sync. AARRR scoreboard + this week's ships.
|
||||
- **Monthly:** Full metrics review (extended sync, Sam included). Compare against quarterly KPI targets.
|
||||
- **Quarterly:** Plan recalibration. What's working, what's not, what funding-stage moves we're triggering.
|
||||
|
||||
### RACI
|
||||
|
||||
| Domain | Responsible | Accountable | Consulted | Informed |
|
||||
|---|---|---|---|---|
|
||||
| Strategic plan (this doc) | Casey | Alex | Sam, Emily | Team |
|
||||
| Brand voice | Alex + Sam | Alex + Sam | Casey | Team |
|
||||
| App + onboarding implementation | Devon | Alex | Casey | Team |
|
||||
| Lifecycle flows (Customer.io) | Casey | Alex | Sam (copy QA) | Team |
|
||||
| SEO content | Casey | Casey | Sam, Alex | Team |
|
||||
| App Store copy | Casey | Alex | Sam | Team |
|
||||
| Alex's LinkedIn cadence | Alex | Alex | Casey (orchestration) | Team |
|
||||
| Events | Alex + Sam | Alex | Casey (instrumentation only) | Team |
|
||||
| Ambassador program | Casey | Casey | Alex | Team |
|
||||
| B2B sales | Alex | Alex | Casey (case studies) | Team |
|
||||
| Pricing | Alex | Alex | Casey | Sam |
|
||||
| Investor narrative | Alex | Alex | Casey, Sam | Team |
|
||||
| Quietude Guides program (Q3+) | TBD (likely future hire) | Alex + Sam | Casey | Team |
|
||||
| Future marketing hire (Q3) | Casey | Alex | Sam | Team |
|
||||
|
||||
### Open decisions blocking the plan
|
||||
|
||||
Most blocking, ranked by impact:
|
||||
|
||||
1. **Canonical domain.** SEO data + this plan recommend `quietude.app`. Needs exec sign-off + 301 execution plan. *Blocks: domain consolidation, SEO foundation, email sender migration.*
|
||||
2. **Retention metric definition.** Reconcile 38% 12-month retention claim vs. 29% monthly App Store churn. *Blocks: clean dashboards, investor narrative coherence, lifecycle test reads.*
|
||||
3. **Mira post-session reflection scope.** Does Mira currently support this, or is it new build? *Blocks: Onboarding Variants 1 and 2 (which depend on Mira reflection moment), retention compound moves.*
|
||||
4. **App UI stability timeline.** When does the headphone-gate-removal + onboarding-rebuild allow Flow 2 to ship without rework risk? *Blocks: Flow 2, full lifecycle, paid acquisition timing.*
|
||||
5. **GA launch timeline.** When does the throttled beta become GA? *Blocks: paid acquisition scale, Q3 GTM planning.*
|
||||
6. **Pricing structure ground truth.** What's actually charged today? *Blocks: pricing audit conclusions, annual-plan default test, blended LTV math.*
|
||||
7. **First marketing hire scope.** Lifecycle + content owner, or something else? When does the JD get written? *Blocks: Q3 capacity plan, succession of fCMO operational work.*
|
||||
8. **Ambassador commission structure.** $/sub, rev-share, hybrid? *Blocks: ambassador program launch, attribution dashboards.*
|
||||
|
||||
### Appendix — deep-dive links
|
||||
|
||||
**Published to the team via `Quietude-Inc/quietude-context` GitHub repo:**
|
||||
- `marketing/seo/plan.md` — Full 90-day SEO + keyword research plan
|
||||
- `marketing/seo/keyword-shortlist.md` — Tier 1 keyword shortlist
|
||||
- `marketing/seo/raw/` — Ahrefs + DataForSEO API pulls
|
||||
- `marketing/onboarding-recommendation.md` — Three-variant onboarding test plan
|
||||
|
||||
**Founder-authored strategic context** (in Quietude's internal knowledge base):
|
||||
- Seed deck — Investor narrative
|
||||
- Sound Philosophy — Alex's technical/philosophical working doc
|
||||
- Marketing OS — Brand voice, content rhythm, visual system
|
||||
- ICP doc — D2C audience profile
|
||||
- Meditation-vs-Regulation note (2026-05-19) — Central content pillar
|
||||
- Kickoff call transcript (2026-05-18) — Decisions + open questions
|
||||
- App Store copy snapshot + voice-gap analysis
|
||||
- App Store metrics snapshot (2026-05-16)
|
||||
- Customer.io lifecycle flows inventory
|
||||
|
||||
---
|
||||
|
||||
*Marketing Plan v1. Prepared by Casey Reed (fCMO), 2026-05-27. For team review and discussion.*
|
||||
@@ -0,0 +1,230 @@
|
||||
# Funding-Stage Capability Unlocks
|
||||
|
||||
Every marketing plan must include explicit "what changes when funding closes / when budget unlocks" reasoning. This makes the plan investor-friendly and operationally honest.
|
||||
|
||||
This doc defines the standard tiers. Use them as anchors, adjust for client category and unit economics.
|
||||
|
||||
**Related docs:**
|
||||
- `budget-planning.md` — two scientific methods for setting the actual budget number (Revenue-Based 5–40%, or Goal-Based reverse-engineered from the revenue target), CAC calculation, experimental buffer
|
||||
- `growth-patterns.md` — the real shape of SaaS growth by phase ($0–10K / $10K–100K / $100K–1M+), linear vs step-function, S-curve layering
|
||||
- `team-and-agency-model.md` — what each tier means for team composition, the first marketing hire, and the in-house vs outsource ratio
|
||||
|
||||
## Why funding stage matters in a marketing plan
|
||||
|
||||
Most marketing plans are written as if budget is unconstrained. That's a failure mode for early-stage clients — it produces aspirational lists rather than executable roadmaps.
|
||||
|
||||
The fix: tie every recommendation to a budget tier. The plan stays honest about what's executable today, and the team / investors see explicitly what each round of capital unlocks.
|
||||
|
||||
This also helps the founder mid-raise: showing what the round buys is investor-narrative material.
|
||||
|
||||
## Standard tiers
|
||||
|
||||
### Tier 1 — Pre-seed / bootstrapped
|
||||
|
||||
**Budget profile:**
|
||||
- Paid acquisition: $0
|
||||
- Tooling stack: ~$500–2,000/mo (Customer.io / similar, GA4 free, Stripe fees, Notion, GitHub, basic SaaS)
|
||||
- Retainers / fCMO: variable (fractional only)
|
||||
- Headcount: founders + maybe 1–2 multipurpose hires
|
||||
|
||||
**Marketing capability:**
|
||||
- Organic only — SEO, content, App Store organic, founder-led social, events, WOM, ambassador (if inbound exists)
|
||||
- Limited PR (founder-led pitches, HARO responses)
|
||||
- No paid layer
|
||||
|
||||
**Channels live:** Organic SEO, content, App Store, LinkedIn / X / founder-led social, events, WOM, ambassador
|
||||
|
||||
**What a fCMO does:** Strategy + lifecycle + content + SEO + onboarding + community + ambassador. Hands-on with skill library + MCPs doing the operational lift.
|
||||
|
||||
**Hires unlocked:** None. The plan must execute with current team + agentic stack.
|
||||
|
||||
### Tier 2 — Seed close
|
||||
|
||||
**Budget profile:**
|
||||
- Paid acquisition: $5–15K/mo test budget
|
||||
- Tooling stack: $1,000–3,000/mo (paid ad accounts, Mixpanel / Amplitude if needed, additional SaaS)
|
||||
- Retainers / fCMO: continued
|
||||
- Headcount: + first dedicated marketing hire
|
||||
|
||||
**Marketing capability:**
|
||||
- Above + paid acquisition pilot (Apple Search Ads, Meta, LinkedIn)
|
||||
- Begin PR push with the funding announcement
|
||||
- First Product Hunt / GA-style launch
|
||||
|
||||
**Channels live:** All Tier 1 + paid acquisition (small) + active PR
|
||||
|
||||
**Hires unlocked:**
|
||||
- Lifecycle + content marketing manager (one person doing both, or split)
|
||||
- OR dedicated growth / performance marketing manager (if heavy paid focus)
|
||||
|
||||
**fCMO shifts:** From hands-on to strategy + ops oversight. Hires the dedicated marketer. Sets up the channel playbooks before paid scales.
|
||||
|
||||
### Tier 3 — Seed deployment
|
||||
|
||||
**Budget profile:**
|
||||
- Paid acquisition: $20–50K/mo
|
||||
- Tooling stack: $2,000–5,000/mo
|
||||
- Retainers / fCMO: continued
|
||||
- Headcount: + designer (potentially fractional)
|
||||
|
||||
**Marketing capability:**
|
||||
- Paid scaling across 2–3 channels
|
||||
- Brand-aligned creative production (designer enables velocity)
|
||||
- Lifecycle programs fully live across all flows
|
||||
- First true content production cadence (weekly cadence sustainable)
|
||||
|
||||
**Channels live:** All previous + paid scaling + structured launch motion
|
||||
|
||||
**Hires unlocked:**
|
||||
- Designer (brand, creative, web)
|
||||
- Second marketing manager (if first was lifecycle, second is content; or vice versa)
|
||||
- Potentially fractional PR if budget allows
|
||||
|
||||
**fCMO shifts:** Hands off lifecycle to dedicated owner. Moves to GTM strategy + channel mix optimization + growth analytics.
|
||||
|
||||
### Tier 4 — Series A
|
||||
|
||||
**Budget profile:**
|
||||
- Paid acquisition: $50–150K/mo
|
||||
- Tooling stack: $5,000–10,000/mo
|
||||
- Retainers / fCMO: may transition to permanent CMO
|
||||
- Headcount: full marketing team forming
|
||||
|
||||
**Marketing capability:**
|
||||
- Paid scales aggressively across all proven channels
|
||||
- Brand campaigns become possible
|
||||
- International consideration begins
|
||||
- B2B vertical expansion (if applicable)
|
||||
- Sophisticated CAC/LTV math + attribution
|
||||
|
||||
**Channels live:** Full marketing surface area
|
||||
|
||||
**Hires unlocked:**
|
||||
- Performance marketing lead
|
||||
- Content lead
|
||||
- Designer (permanent)
|
||||
- Potentially: PR firm, paid agency, international growth manager
|
||||
- Series A often the moment the fCMO transitions out or transitions to advisor
|
||||
|
||||
**fCMO shifts:** Often the moment of transition — to permanent CMO hire, fCMO becomes advisor.
|
||||
|
||||
### Tier 5 — Series B+
|
||||
|
||||
**Budget profile:**
|
||||
- Paid acquisition: $150K+/mo
|
||||
- Tooling stack: $10,000–25,000/mo
|
||||
- Headcount: 10+ marketing org
|
||||
|
||||
**Marketing capability:**
|
||||
- Brand campaigns at industry scale
|
||||
- PR firm partnerships
|
||||
- Acquisitions as marketing (acquiring newsletters / podcasts in space)
|
||||
- Conference sponsorship at category level
|
||||
- Sponsorships at brand level
|
||||
|
||||
**Channels live:** Everything available
|
||||
|
||||
**Hires unlocked:**
|
||||
- VP Marketing or CMO
|
||||
- Brand director
|
||||
- Growth / performance team (3–5 people)
|
||||
- Content team (3–5 people)
|
||||
- Designers (2–3)
|
||||
- PR director or agency partnership
|
||||
- International marketing leads (region-specific)
|
||||
|
||||
**fCMO involvement:** Typically out of the company by this point — the original fCMO might still be an advisor.
|
||||
|
||||
## How to apply tier logic in a plan
|
||||
|
||||
### Section 3 (Current state)
|
||||
- State the client's current tier explicitly: "Current tier: pre-seed / bootstrapped per Tier 1."
|
||||
|
||||
### Section 4–8 (AARRR sections)
|
||||
- Note tier-dependent moves: "Paid layer (Tier 2 unlock — held until seed close)"
|
||||
- For Tier 1 plans: every move must be executable at current budget tier OR explicitly flagged as future
|
||||
- For Tier 2+ plans: moves can assume the tier's capability
|
||||
|
||||
### Section 10 (12-month outlook)
|
||||
- Each quarter names the tier that's active: "Q2 — Months 4–6 (post seed close). Funding state: Tier 2."
|
||||
- Tier transitions trigger plan recalibration moments
|
||||
|
||||
### Section 11 (Marketing operations stack)
|
||||
- Use the table in `references/ops-stack-mapping.md` capability-unlocks section
|
||||
- Make it client-specific: "Today (Tier 1): {client's current capability}. After seed close (Tier 2): + {what changes}."
|
||||
|
||||
## Adjustments by client category
|
||||
|
||||
The standard tiers assume a typical software / SaaS / consumer app. Adjust for category:
|
||||
|
||||
### Consumer apps (D2C)
|
||||
- Higher paid acquisition floor — apps need to test CAC against download cost benchmarks (~$2-10 install + 5-15% trial conversion benchmark)
|
||||
- Tier 2 starts effectively at $10–20K/mo paid (otherwise can't get statistically meaningful reads at app-install CPMs)
|
||||
|
||||
### B2B SaaS
|
||||
- Lower paid acquisition floor — LinkedIn / Google Ads can produce signal at $3–5K/mo
|
||||
- More weight on content + sales enablement budget
|
||||
- Often add a sales hire before a content hire
|
||||
|
||||
### Hybrid hardware + software
|
||||
- Hardware revenue can self-fund some marketing (the eye-mask wedge pattern)
|
||||
- Paid budget should track blended CAC across hardware sales + app subs
|
||||
- Shopify-side optimization is a Tier 1 priority (cheap leverage)
|
||||
|
||||
### Deep-tech / scientific / clinical
|
||||
- PR + investor marketing carries more weight than paid
|
||||
- Conference speaking + academic publishing > Meta ads
|
||||
- Tier 1 can produce significant traction without paid
|
||||
|
||||
### Marketplace / two-sided
|
||||
- Each side has its own AARRR funnel — budget splits accordingly
|
||||
- Supply-side acquisition often dominates early; demand-side dominates after liquidity
|
||||
|
||||
### Open source / developer tools
|
||||
- DevRel + community + content > paid
|
||||
- GitHub stars / npm installs are the activation event
|
||||
- Paid layer often delayed until Series A
|
||||
|
||||
## Tier 1 budget detail (most common starting point)
|
||||
|
||||
For Tier 1 clients, the marketing budget breakdown typically looks like:
|
||||
|
||||
| Line | Typical monthly |
|
||||
|---|---|
|
||||
| Customer.io / lifecycle ESP | $100–500 |
|
||||
| App Store Connect / Google Play | $25 + 30% rev share (Apple/Google take) |
|
||||
| Stripe | 2.9% + 30¢ per transaction |
|
||||
| GA4 | Free |
|
||||
| Notion | $0–100 |
|
||||
| GitHub | $0–50 |
|
||||
| Shopify (if hardware) | $39–100 |
|
||||
| Ahrefs (or similar SEO tool) | $129–399 |
|
||||
| Typefully (if social cadence) | $13–39 |
|
||||
| Dub.co (if ambassador tracking) | $0–39 |
|
||||
| Misc SaaS | $200–500 |
|
||||
| **Tooling total** | **~$500–1,700/mo** |
|
||||
| Paid acquisition | $0 |
|
||||
| fCMO retainer | Variable |
|
||||
|
||||
For the plan, this becomes: "Current monthly marketing budget: $X (tooling only, no paid)."
|
||||
|
||||
## When to surface tier limits to the founder
|
||||
|
||||
If a founder asks for moves that require a future tier:
|
||||
- Name the requirement: "This is a Tier 2 move (requires $10K+/mo paid budget). Will unlock after seed close per the 12-month outlook in §10."
|
||||
- Don't refuse — frame the timing
|
||||
|
||||
If a founder underestimates what's needed:
|
||||
- Be honest: "To scale paid acquisition meaningfully, expect Tier 2 budget. Tier 1 can validate organic; Tier 2 validates paid."
|
||||
|
||||
If a founder is over-funded for their stage:
|
||||
- Don't pad budget to match. Recommend the right work for the funnel state, return excess capacity, suggest investment in compounding rather than scaling.
|
||||
|
||||
## Tier-skip cases (worth flagging)
|
||||
|
||||
Some companies skip tiers:
|
||||
- **Notable founder** raising larger-than-typical rounds — can jump from Tier 1 to Tier 3 directly
|
||||
- **Hardware company** with PR moment — can deploy at Tier 3 levels with the right product moment (e.g., a high-profile longevity-influencer endorsement)
|
||||
- **B2B SaaS post-LOI** with named enterprise contracts — can fund pilot deployment from contract value
|
||||
|
||||
If the client is in a tier-skip situation, name it explicitly in the plan rather than forcing them into the standard ladder.
|
||||
@@ -0,0 +1,148 @@
|
||||
# Growth Patterns — The Real Shape of SaaS Growth
|
||||
|
||||
The 12-month outlook in every plan (Section 10) describes a trajectory. This doc names the shape of that trajectory honestly — what real SaaS growth looks like, when to expect plateaus, and how to plan for the next leg of growth before the current one stalls.
|
||||
|
||||
Excerpted and adapted from *Founding Marketing* by Corey Haines.
|
||||
|
||||
## The long, slow SaaS ramp of death
|
||||
|
||||
Pitch decks show hockey sticks. Real growth shows a series of S-curves — each representing a distinct phase followed by a plateau that tests resolve and creativity.
|
||||
|
||||
### Phase 1 — $0 → $10K ARR (the grueling phase)
|
||||
|
||||
The hardest milestone. Every customer is a hard-won victory. Typical time: **6–12 months.** Most companies pivot the product multiple times during this phase.
|
||||
|
||||
What it requires:
|
||||
- Runway long enough to keep experimenting until something clicks
|
||||
- A financial cushion or additional income sources (often the difference between success and shutdown)
|
||||
- Tolerance for ambiguity — the product positioning, the pricing, and the channel can all still be wrong at this stage
|
||||
|
||||
### Phase 2 — $10K → $100K ARR (the treacherous middle)
|
||||
|
||||
The middle ground that kills most promising startups. The average company reaches ~$40K ARR in year one. The danger: enough revenue to prove the concept, not enough to support a team.
|
||||
|
||||
The threshold to watch for: **$8–10K MRR.** That's when founders can typically go full-time on the business without other income sources. Until then, careful cash management or side income carries the company through.
|
||||
|
||||
Companies that flame out in Phase 2 usually run out of runway just as things start working.
|
||||
|
||||
### Phase 3 — $100K → $1M ARR (the acceleration phase)
|
||||
|
||||
Where things get interesting. Typical time: nearly 2 years total to reach $1M. But there's an acceleration pattern: **once across $100K, companies often double from $100K → $200K in one-third the time it took to reach the first $100K.**
|
||||
|
||||
Why: critical mass kicks in. Word-of-mouth starts working. Early customers become your best salespeople. The product has proven itself, and growth becomes more about execution than experimentation.
|
||||
|
||||
This is the phase where the marketing plan's 90-day roadmap (Section 9) starts compounding instead of just covering ground.
|
||||
|
||||
## Two real growth patterns (and the exponential myth)
|
||||
|
||||
The myth: successful SaaS companies grow exponentially, doubling revenue month over month like clockwork.
|
||||
|
||||
The reality: two distinct patterns, often combining at scale to *look* exponential when zoomed out.
|
||||
|
||||
### Pattern 1 — Linear growth
|
||||
|
||||
Build a predictable revenue machine. Find a channel that works (content, partnerships, paid, outbound) and steadily scale it. Some companies reliably add **$10K MRR per month** through a well-oiled marketing engine.
|
||||
|
||||
Less sexy than exponential. Far more sustainable. Crucially, **plannable**: when you know what you can count on adding each month, hiring decisions, product roadmap, and expansion planning all become tractable.
|
||||
|
||||
### Pattern 2 — Step-function growth
|
||||
|
||||
Periods of plateau followed by sudden jumps. Jumps aren't random — they're triggered by specific events:
|
||||
- Breaking into a new market segment (e.g., enterprise after starting SMB)
|
||||
- Launching a major product expansion (new feature line, new tier)
|
||||
- Cracking a new marketing channel that compounds
|
||||
|
||||
Example: one founder saw revenue triple in two months after launching enterprise features — following six months of flat growth.
|
||||
|
||||
Key insight for the plan: **each step requires deliberate action and investment.** Steps don't happen by waiting. While standing on the current step, you have to be actively building the next one.
|
||||
|
||||
### How they combine
|
||||
|
||||
Zoom out far enough and a series of linear phases + step functions can look exponential. That's where the myth comes from. Understanding it's actually a series of plannable shapes changes how you build the plan:
|
||||
|
||||
- Don't chase the myth of doubling every month
|
||||
- Build sustainable linear systems (Sections 4–8 AARRR moves)
|
||||
- Plan deliberate step functions (Section 10 12-month milestones)
|
||||
|
||||
## Layering growth curves — Channel × Product × Market
|
||||
|
||||
The secret to sustained growth isn't one perfect channel. It's orchestrating multiple S-curves that work together. Three S-curves to track:
|
||||
|
||||
### Channel S-curves
|
||||
|
||||
Every marketing channel has its own lifecycle:
|
||||
- **SEO** — 6–12 months to mature; once it does, steady leads for years. Marathon runner.
|
||||
- **Paid ads** — quick wins; diminishing returns as you scale.
|
||||
- **Content marketing** — slow to start, compounds beautifully over time.
|
||||
- **Partnerships / co-marketing** — episodic; high yield when the right partner aligns.
|
||||
- **Outbound** — predictable when calibrated; CAC-heavy and plateaus at team capacity.
|
||||
- **PR** — spike-driven; sustains awareness rather than direct conversion.
|
||||
|
||||
**The rule:** start the next channel before the current one plateaus. Riding one channel to its ceiling before investing in the next produces a multi-month growth plateau that takes more effort to break out of than it would have taken to start the next channel earlier.
|
||||
|
||||
In the plan: Section 4 (Acquisition) names current channels, planned channels, and skipped channels. The 12-month roadmap (Section 10) sequences when the next channel investment begins.
|
||||
|
||||
### Product S-curves
|
||||
|
||||
Your core product naturally hits a growth ceiling as you saturate the initial market. Pushing harder on the same features doesn't break through. What does:
|
||||
|
||||
- Adding features that target new use cases
|
||||
- Extending the product line to serve adjacent needs
|
||||
- Expanding into new market segments (e.g., team collaboration added to a single-user tool — opens a new market)
|
||||
|
||||
In the plan: Sections 5 (Activation) and 8 (Revenue) name where the product needs to grow to unlock the next growth tier.
|
||||
|
||||
### Market S-curves
|
||||
|
||||
Every market segment has its own growth ceiling. Time the expansion into the next segment while the current segment is still showing strong growth. Common patterns:
|
||||
|
||||
- SMB → mid-market → enterprise
|
||||
- Single vertical → adjacent verticals
|
||||
- Domestic → international
|
||||
|
||||
Waiting until a segment is saturated makes the transition harder.
|
||||
|
||||
In the plan: Section 2 (Strategic frame) names current segment + future segments. Section 10 (12-month outlook) sequences when expansion moves begin.
|
||||
|
||||
### The orchestration
|
||||
|
||||
The real magic: while SEO is maturing, you're using paid for quick wins. As those channels mature, you're developing product features that unlock enterprise. Meanwhile, the groundwork for international expansion is being laid for when domestic saturates.
|
||||
|
||||
This is the operational thesis behind the AARRR mapping (Sections 4–8) and the 12-month outlook (Section 10): each section is a curve, and the plan sequences them so the next curve is ramping while the current one is still growing.
|
||||
|
||||
## The 3-3-2-2-2 VC growth path
|
||||
|
||||
For companies that have crossed $1M ARR and raised institutional capital, the VC benchmark is:
|
||||
|
||||
| Year | Multiple | Cumulative ARR (from $1M) |
|
||||
|---|---|---|
|
||||
| Year 0 | — | $1M |
|
||||
| Year +1 | 3× | $3M |
|
||||
| Year +2 | 3× | $9M |
|
||||
| Year +3 | 2× | $18M |
|
||||
| Year +4 | 2× | $36M |
|
||||
| Year +5 | 2× | $72M |
|
||||
| Year +6 | 2× | $144M |
|
||||
| Year +7 | 2× | $288M |
|
||||
|
||||
Most companies don't hit this. Useful regardless — anchoring the 12-month outlook against this benchmark forces the plan to either (a) match it and show how, or (b) explicitly defend choosing a slower trajectory.
|
||||
|
||||
For non-VC-backed (bootstrapped, founder-funded, profit-focused) companies, this curve doesn't apply. Use linear or step-function targeting instead.
|
||||
|
||||
## How this informs the plan
|
||||
|
||||
| Section | What to include |
|
||||
|---|---|
|
||||
| **3 (Current state)** | Where the company is on each S-curve (channel maturity, product maturity, market saturation). Name the current phase ($0–10K / $10K–100K / $100K–1M / $1M+). |
|
||||
| **4 (Acquisition)** | Current channels + their position on the S-curve (early / mature / plateauing). Next channel investment with rationale. |
|
||||
| **5–8 (AARRR)** | Each section names the binding constraint at the current phase. For Phase 2 companies, Activation is usually the leverage point. For Phase 3, Retention + Referral compound the existing growth. |
|
||||
| **9 (90-day roadmap)** | Linear-pattern moves dominate (predictable additions). Step-function setups (the build-up to a launch, an enterprise tier, a new market segment) live here. |
|
||||
| **10 (12-month outlook)** | Sequence channel S-curves, product S-curves, market S-curves. If VC-backed Series A+, anchor against 3-3-2-2-2. If not, name the linear or step-function targets. |
|
||||
| **13 (Measurement)** | The north-star metric reflects the current phase (Phase 1 is usually pure new-signup; Phase 3 is usually expansion ARR or NRR). |
|
||||
|
||||
## Operational guidance for the planner
|
||||
|
||||
- **Don't promise exponential.** If the plan implies doubling every month, the founder will use it against you in 90 days. Linear + step-function is honest.
|
||||
- **Name the binding constraint.** Phase 1 binding constraint is finding any channel that works. Phase 2 is funding the team. Phase 3 is breaking the ceiling on whichever channel got you here.
|
||||
- **Plateaus aren't failures.** They're the moment between two S-curves. The plan should anticipate them and stage the next move.
|
||||
- **Don't conflate "growth" with "growth rate."** A company adding $20K MRR each month for 24 months has built a remarkable machine. The fact that the *percentage* growth rate declines as the base grows is arithmetic, not failure.
|
||||
@@ -0,0 +1,265 @@
|
||||
# Idea Cross-Reference — 139 Marketing Ideas Mapped to AARRR
|
||||
|
||||
The `marketing-ideas` skill catalogs 139 proven marketing tactics. This doc is the source-of-truth mapping: every idea assigned to a primary AARRR stage, with notes for when it's typically active and what category constraints apply.
|
||||
|
||||
The plan's Section 12 ("Tactical idea bank") uses this mapping as the base, then layers client-specific filters: brand voice rules might skip some ideas; funding stage might shift Q-status; client category might rule out others.
|
||||
|
||||
## How to read this doc
|
||||
|
||||
- **139 unique ideas, 144 entries.** Five ideas cross-cut multiple AARRR stages and appear under each stage they serve (#79 Early-Access Referrals, #86 Lifetime Deals, #91 In-App Upsells, #114 Moneyball Marketing, #117 Product Competitions). Each duplicate row carries a cross-cut note.
|
||||
- **"Entries" counts rows; idea IDs are unique.** Section header counts reflect rows in this doc, not unique ideas from `marketing-ideas`.
|
||||
- **Numbers correspond exactly to the `marketing-ideas` skill ordering.** If `marketing-ideas` reorders or expands, update this doc.
|
||||
|
||||
## AARRR assignment for all 139 ideas
|
||||
|
||||
### Acquisition (116 entries)
|
||||
|
||||
These ideas primarily serve top-of-funnel awareness, traffic, and lead generation.
|
||||
|
||||
| # | Idea | Category | Typical stage available |
|
||||
|---|---|---|---|
|
||||
| 1 | Easy Keyword Ranking | Content & SEO | Now (any stage) |
|
||||
| 2 | SEO Audit | Content & SEO | Now |
|
||||
| 3 | Glossary Marketing | Content & SEO | Q2+ |
|
||||
| 4 | Programmatic SEO | Content & SEO | Q3+ (needs data + template system) |
|
||||
| 5 | Content Repurposing | Content & SEO | Now (immediate leverage) |
|
||||
| 6 | Proprietary Data Content | Content & SEO | Now (if data exists) |
|
||||
| 7 | Internal Linking | Content & SEO | Now |
|
||||
| 8 | Content Refreshing | Content & SEO | Q2+ (after content base exists) |
|
||||
| 9 | Knowledge Base SEO | Content & SEO | Q3+ (after help docs exist) |
|
||||
| 10 | Parasite SEO | Content & SEO | Now |
|
||||
| 11 | Competitor Comparison Pages | Competitor | Q2+ |
|
||||
| 12 | Marketing Jiu-Jitsu | Competitor | Now |
|
||||
| 13 | Competitive Ad Research | Competitor | Pre-paid |
|
||||
| 14 | Side Projects | Free Tools | Q3+ |
|
||||
| 15 | Engineering as Marketing | Free Tools | Q3+ |
|
||||
| 16 | Importers as Marketing | Free Tools | SaaS-specific |
|
||||
| 17 | Quiz Marketing | Free Tools | Q2+ |
|
||||
| 18 | Calculator Marketing | Free Tools | Q3+ |
|
||||
| 19 | Chrome Extensions | Free Tools | Browser-relevant only |
|
||||
| 20 | Microsites | Free Tools | Q3+ |
|
||||
| 21 | Scanners | Free Tools | Specific products only |
|
||||
| 22 | Public APIs | Free Tools | Developer/dev tool products |
|
||||
| 23 | Podcast Advertising | Paid Ads | Post-budget |
|
||||
| 24 | Pre-targeting Ads | Paid Ads | Post-budget |
|
||||
| 25 | Facebook Ads | Paid Ads | Post-budget |
|
||||
| 26 | Instagram Ads | Paid Ads | Post-budget |
|
||||
| 27 | Twitter Ads | Paid Ads | Post-budget |
|
||||
| 28 | LinkedIn Ads | Paid Ads | Post-budget (B2B-strong) |
|
||||
| 29 | Reddit Ads | Paid Ads | Post-budget |
|
||||
| 30 | Quora Ads | Paid Ads | Post-budget |
|
||||
| 31 | Google Ads | Paid Ads | Post-budget |
|
||||
| 32 | YouTube Ads | Paid Ads | Post-budget |
|
||||
| 33 | Cross-Platform Retargeting | Paid Ads | Post-paid-firing |
|
||||
| 34 | Click-to-Messenger Ads | Paid Ads | Niche use cases |
|
||||
| 35 | Community Marketing | Social & Community | Q3+ |
|
||||
| 36 | Quora Marketing | Social & Community | Now |
|
||||
| 37 | Reddit Keyword Research | Social & Community | Now |
|
||||
| 38 | Reddit Marketing | Social & Community | Q2+ |
|
||||
| 39 | LinkedIn Audience | Social & Community | Now (B2B + founders) |
|
||||
| 40 | Instagram Audience | Social & Community | Q2+ |
|
||||
| 41 | X Audience | Social & Community | Depends on founder bandwidth |
|
||||
| 42 | Short Form Video | Social & Community | Q3+ |
|
||||
| 43 | Engagement Pods | Social & Community | Generally off-brand |
|
||||
| 44 | Comment Marketing | Social & Community | Q2+ |
|
||||
| 49 | Monthly Newsletters | Email | Q2+ (Acquisition use: subscriber capture) |
|
||||
| 54 | Affiliate Discovery via Backlinks | Partnerships | Q2+ |
|
||||
| 55 | Influencer Whitelisting | Partnerships | Post-paid-budget |
|
||||
| 56 | Reseller Programs | Partnerships | Q4+ |
|
||||
| 57 | Expert Networks | Partnerships | Q3+ |
|
||||
| 58 | Newsletter Swaps | Partnerships | Q2+ |
|
||||
| 59 | Article Quotes (HARO) | Partnerships | Now |
|
||||
| 60 | Pixel Sharing | Partnerships | Post-paid |
|
||||
| 61 | Shared Slack Channels | Partnerships | Q3+ |
|
||||
| 63 | Integration Marketing | Partnerships | Q3+ |
|
||||
| 64 | Community Sponsorship | Partnerships | Q2+ |
|
||||
| 65 | Live Webinars | Events | Q2+ |
|
||||
| 66 | Virtual Summits | Events | Q3+ |
|
||||
| 67 | Roadshows | Events | Q4+ |
|
||||
| 68 | Local Meetups | Events | Q3+ |
|
||||
| 69 | Meetup Sponsorship | Events | Q3+ |
|
||||
| 70 | Conference Speaking | Events | Now (if founder is speakable) |
|
||||
| 71 | Conferences (own-hosted) | Events | Q4+ |
|
||||
| 72 | Conference Sponsorship | Events | Q3+ |
|
||||
| 73 | Media Acquisitions | PR & Media | Series A+ |
|
||||
| 74 | Press Coverage | PR & Media | Now (if newsworthy) |
|
||||
| 75 | Fundraising PR | PR & Media | When fund closes |
|
||||
| 76 | Documentaries | PR & Media | Q4+ |
|
||||
| 77 | Black Friday Promotions | Launches | Q4 (seasonal) |
|
||||
| 78 | Product Hunt Launch | Launches | At GA or major feature |
|
||||
| 79 | Early-Access Referrals | Launches | Pre-launch or GA |
|
||||
| 80 | New Year Promotions | Launches | Q1 (seasonal) |
|
||||
| 81 | Early Access Pricing | Launches | GA |
|
||||
| 82 | Product Hunt Alternatives | Launches | Same as PH |
|
||||
| 83 | Twitter Giveaways | Launches | Generally off-brand |
|
||||
| 84 | Giveaways | Launches | Q3+ |
|
||||
| 85 | Vacation Giveaways | Launches | Q4+ (seasonal) |
|
||||
| 86 | Lifetime Deals | Launches | Generally off-brand (damages LTV math) |
|
||||
| 87 | Powered By Marketing | Product-Led | Q4+ |
|
||||
| 88 | Free Migrations | Product-Led | SaaS-specific |
|
||||
| 89 | Contract Buyouts | Product-Led | B2B SaaS only |
|
||||
| 97 | Playlists as Marketing | Content Formats | Q3+ |
|
||||
| 98 | Template Marketing | Content Formats | Q3+ |
|
||||
| 99 | Graphic Novel Marketing | Content Formats | Generally off-brand |
|
||||
| 100 | Promo Videos | Content Formats | Q3+ |
|
||||
| 101 | Industry Interviews | Content Formats | Q2+ |
|
||||
| 102 | Social Screenshots | Content Formats | Q2+ |
|
||||
| 103 | Online Courses | Content Formats | Q3+ |
|
||||
| 104 | Book Marketing | Content Formats | Q4+ |
|
||||
| 105 | Annual Reports | Content Formats | Q4+ |
|
||||
| 106 | End of Year Wraps | Content Formats | Q4 (seasonal) |
|
||||
| 107 | Podcasts (own-hosted) | Content Formats | Q3+ |
|
||||
| 108 | Changelogs | Content Formats | Q2+ |
|
||||
| 109 | Public Demos | Content Formats | Now |
|
||||
| 110 | Awards as Marketing | Unconventional | Q4+ |
|
||||
| 111 | Challenges as Marketing | Unconventional | Q3+ |
|
||||
| 112 | Reality TV Marketing | Unconventional | Generally off-brand |
|
||||
| 113 | Controversy as Marketing | Unconventional | Brand-dependent |
|
||||
| 114 | Moneyball Marketing | Unconventional | Ongoing methodology |
|
||||
| 115 | Curation as Marketing | Unconventional | Q2+ |
|
||||
| 116 | Grants as Marketing | Unconventional | Q4+ |
|
||||
| 117 | Product Competitions | Unconventional | Developer-specific |
|
||||
| 118 | Cameo Marketing | Unconventional | Generally off-brand |
|
||||
| 119 | OOH Advertising | Unconventional | Series A+ |
|
||||
| 120 | Marketing Stunts | Unconventional | Brand-dependent |
|
||||
| 121 | Guerrilla Marketing | Unconventional | Brand-dependent |
|
||||
| 122 | Humor Marketing | Unconventional | Brand-dependent |
|
||||
| 123 | Open Source as Marketing | Platforms | Developer products |
|
||||
| 125 | App Marketplaces | Platforms | Platform-specific |
|
||||
| 126 | YouTube Reviews | Platforms | Q3+ |
|
||||
| 127 | YouTube Channel | Platforms | Q3+ |
|
||||
| 128 | Source Platforms | Platforms | B2B SaaS only |
|
||||
| 129 | Review Sites | Platforms | Now |
|
||||
| 130 | Live Audio | Platforms | Q3+ |
|
||||
| 131 | International Expansion | International | Q4+ |
|
||||
| 133 | Investor Marketing | Developer/etc | Now (when raising) |
|
||||
| 138 | Podcast Tours | Audience-Specific | Q2+ |
|
||||
|
||||
### Activation (8 entries)
|
||||
|
||||
| # | Idea | Category | Typical stage available |
|
||||
|---|---|---|---|
|
||||
| 47 | Founder Welcome Email | Email | Q2+ (Activation use) |
|
||||
| 48 | Dynamic Email Capture | Email | Q2+ |
|
||||
| 51 | Onboarding Emails | Email | When UI is stable |
|
||||
| 90 | One-Click Registration | Product-Led | Now |
|
||||
| 91 | In-App Upsells | Product-Led | Q2+ (cross-cuts Revenue) |
|
||||
| 95 | Concierge Setup | Product-Led | Q3+ (high-value users) |
|
||||
| 96 | Onboarding Optimization | Product-Led | Now |
|
||||
| 124 | App Store Optimization | Platforms | Now (App Store products) |
|
||||
|
||||
### Retention (8 entries)
|
||||
|
||||
| # | Idea | Category | Typical stage available |
|
||||
|---|---|---|---|
|
||||
| 45 | Mistake Email Marketing | Email | Opportunistic |
|
||||
| 46 | Reactivation Emails | Email | Now |
|
||||
| 50 | Inbox Placement | Email | Now (technical setup) |
|
||||
| 52 | Win-back Emails | Email | Q1+ |
|
||||
| 53 | Trial Reactivation | Email | Q2+ (when paywall is firing) |
|
||||
| 94 | Offboarding Flows | Product-Led | Q2+ |
|
||||
| 135 | Support as Marketing | Developer/etc | Q2+ |
|
||||
| 134 | Certifications | Developer/etc | Q3+ (cross-cuts Referral) |
|
||||
|
||||
### Referral (5 entries)
|
||||
|
||||
| # | Idea | Category | Typical stage available |
|
||||
|---|---|---|---|
|
||||
| 62 | Affiliate Program | Partnerships | Now (when inbound exists) |
|
||||
| 79 | Early-Access Referrals | Launches | Pre-launch / GA |
|
||||
| 92 | Newsletter Referrals | Product-Led | Q3+ (if newsletter exists) |
|
||||
| 93 | Viral Loops | Product-Led | Q3+ |
|
||||
| 137 | Two-Sided Referrals | Audience-Specific | Q2+ |
|
||||
|
||||
### Revenue (2 entries — most monetization is strategy not tactic)
|
||||
|
||||
| # | Idea | Category | Typical stage available |
|
||||
|---|---|---|---|
|
||||
| 91 | In-App Upsells | Product-Led | Q2+ (cross-cuts Activation) |
|
||||
| 132 | Price Localization | International | Q4+ |
|
||||
|
||||
> **Skipped from Revenue:** #86 Lifetime Deals appears under Launches (Acquisition section) only. It's generally off-brand for subscription products because it damages LTV math; recommend in Section 12's Skip list with rationale, not in stage totals.
|
||||
|
||||
### Cross-cutting / brand foundation (2 entries)
|
||||
|
||||
| # | Idea | Category | Typical stage available |
|
||||
|---|---|---|---|
|
||||
| 114 | Moneyball Marketing | Unconventional | Ongoing methodology |
|
||||
| 139 | Customer Language | Audience-Specific | Now (foundational) |
|
||||
|
||||
### Developer-specific / dev tool products (2 entries)
|
||||
|
||||
| # | Idea | Category | Use when |
|
||||
|---|---|---|---|
|
||||
| 117 | Product Competitions | Unconventional | Developer tool products |
|
||||
| 136 | Developer Relations | Developer/etc | Developer tool products |
|
||||
|
||||
## How to apply this to a specific client
|
||||
|
||||
For Section 12 of the plan:
|
||||
|
||||
### Step 1 — Filter for category fit
|
||||
|
||||
For each idea, ask:
|
||||
- Does this idea apply to the client's category? (e.g., #16 Importers only for SaaS; #19 Chrome Extensions only for browser-relevant; #136 DevRel only for dev tools)
|
||||
- Skip ideas that don't apply, with a note
|
||||
|
||||
### Step 2 — Filter for brand voice
|
||||
|
||||
For each idea, ask:
|
||||
- Does this idea conflict with the client's brand voice?
|
||||
- Common conflicts:
|
||||
- **Lifetime Deals (#86)** — conflicts with premium positioning
|
||||
- **Twitter Giveaways (#83)** — often off-brand for serious / clinical / luxury voices
|
||||
- **Humor Marketing (#122)** — off-brand for serious / clinical voices
|
||||
- **Cameo Marketing (#118)** — off-brand for most voices
|
||||
- **Reality TV Marketing (#112)** — off-brand for most voices
|
||||
|
||||
If conflict, place in Skip list with explicit rationale.
|
||||
|
||||
### Step 3 — Set timing status
|
||||
|
||||
For ideas that pass filters, set status:
|
||||
- **Now (Q1)** — already in 90-day plan OR can run alongside without new capacity
|
||||
- **Q2** — post-bedrock-fix, post-foundation; second-quarter layer-in
|
||||
- **Q3+** — post-seed-close, post-GA; expansion moves
|
||||
- **Q4+** — long-game / large-investment
|
||||
|
||||
Use the "Typical stage available" column as the default. Shift earlier if client has unusual capability (e.g., a celebrity founder shifts Conference Speaking #70 from "Now" to "Now and high-leverage").
|
||||
|
||||
### Step 4 — Write the client-specific note
|
||||
|
||||
Every "Now / Q2 / Q3+" idea gets a one-line client-specific note. Examples:
|
||||
- For idea #11 Competitor Comparison Pages: "Quietude vs. Calm / Headspace / Brain.fm / Endel / Wavepaths — high-intent SERPs"
|
||||
- For idea #133 Investor Marketing: "Alex's seed raise — leverage angel backchannel for PR + intros"
|
||||
- For idea #15 Engineering as Marketing: "HRV interpretation guide; nervous system self-assessment; sound bath finder directory"
|
||||
|
||||
### Step 5 — Sum the bank
|
||||
|
||||
After all five AARRR tables + skip list:
|
||||
|
||||
```markdown
|
||||
### Idea-bank summary
|
||||
|
||||
- {Acquisition count} ideas applicable to Acquisition (the dominant stage at {client}'s current stage)
|
||||
- {Activation count} to Activation, {Retention count} to Retention
|
||||
- {Referral count} to Referral
|
||||
- {Revenue count} to Revenue
|
||||
- {cross-cutting count} cross-cutting
|
||||
- {skipped count} ideas skipped for brand / business-model fit
|
||||
|
||||
**What this proves:** the plan is roughly X% of the available tactical surface area, not 100%. {appropriate or not for the stage} — as capacity unlocks across Q2 → Q3 → Series A, the cross-reference becomes the inventory to scale activity without losing strategic coherence.
|
||||
```
|
||||
|
||||
## How to maintain this doc
|
||||
|
||||
If `marketing-ideas` adds new ideas (it's a living skill — the 139 may become 145 or 160 over time):
|
||||
1. Read `skills/marketing-ideas/references/ideas-by-category.md` in the `marketingskills` repo
|
||||
2. Assign each new idea to a primary AARRR stage using the rules above
|
||||
3. Add to this doc's tables
|
||||
4. Update SKILL.md's idea-count reference
|
||||
|
||||
## Sources
|
||||
|
||||
- `skills/marketing-ideas/SKILL.md` (in the `marketingskills` repo)
|
||||
- `skills/marketing-ideas/references/ideas-by-category.md` (in the `marketingskills` repo)
|
||||
@@ -0,0 +1,213 @@
|
||||
# Measurement Framework — KPIs, North Stars, Cadence
|
||||
|
||||
Every plan needs a measurement section that tells the team how to know if the plan is working. This doc is the source for Section 13's measurement subsection.
|
||||
|
||||
**Related docs:**
|
||||
- `growth-patterns.md` — the 3-3-2-2-2 VC growth path (3× in years 1–2, 2× in years 3–7 from $1M ARR) and which phase of SaaS growth the company is in ($0–10K / $10K–100K / $100K–1M+)
|
||||
- `budget-planning.md` — CAC calculation (blended, not paid-only) and the forecasting reality check (forecasts under $100M ARR are educated guesses, not precise predictions)
|
||||
|
||||
## The north-star principle
|
||||
|
||||
A north star is one metric that captures the business-model thesis at the highest level. It should:
|
||||
- Be derivable from the funnel + revenue model
|
||||
- Move slowly enough to be a strategic compass (not whipsawed by weekly noise)
|
||||
- Trade off correctly against other metrics — improving the north star should generally improve the business
|
||||
|
||||
Don't default to "ARR" or "MRR" alone. Those are outcomes, not norths. Pick something that captures the business model.
|
||||
|
||||
## North-star patterns by business model
|
||||
|
||||
### B2B SaaS (subscription)
|
||||
- **Net Revenue Retention (NRR)** — keeps existing customers + expansion in focus
|
||||
- Alternative: "Logo retention × expansion ARR"
|
||||
- Why: ARR alone hides churn / lets gross-add growth mask product fit problems
|
||||
|
||||
### D2C consumer app (subscription)
|
||||
- **Blended LTV / blended CAC** — keeps unit economics honest as paid layer scales
|
||||
- Alternative: "Day-35 paid users from cohort × LTV"
|
||||
- Why: monthly subscription metrics are volatile; cohort × LTV smooths it
|
||||
|
||||
### Hybrid hardware + software (e.g., Quietude)
|
||||
- **Blended LTV / blended CAC across hardware + software** — captures the wedge thesis
|
||||
- Alternative: "Hardware-buyers-to-subscriber conversion × blended margin"
|
||||
- Why: hardware revenue isn't free (cost to make); subscription revenue isn't expensive to acquire if hardware funds it
|
||||
|
||||
### Marketplace (two-sided)
|
||||
- **Liquidity ratio × take-rate** — captures both sides + monetization
|
||||
- Alternative: "Monthly transacting users × take-rate × repeat frequency"
|
||||
- Why: GMV alone doesn't capture whether the marketplace is becoming a habit
|
||||
|
||||
### Developer tool / open source
|
||||
- **Weekly active developers × paid-conversion** — captures both adoption and monetization
|
||||
- Alternative: "Weekly active orgs × seats per org × ARPU"
|
||||
|
||||
### Content / media business
|
||||
- **Daily active readers / listeners × ad revenue per session** — captures both reach and monetization
|
||||
- Alternative: "Subscriber count × retention × ARPU"
|
||||
|
||||
### Commerce (DTC, non-subscription)
|
||||
- **Repeat purchase rate × AOV × frequency** — captures monetization layered on quality of customer
|
||||
- Alternative: "Customer LTV / CAC × payback period"
|
||||
|
||||
## Leading indicators by AARRR stage
|
||||
|
||||
After the north star, every plan needs leading indicators per AARRR stage. These move faster than the north star and trigger investigations.
|
||||
|
||||
### Acquisition leading indicators
|
||||
- Organic visits/month, total + per pillar (SEO health)
|
||||
- App Store / Play Store visit-to-install rate (ASO health)
|
||||
- Founder-led social channel growth → email subscriber conversion (LinkedIn / X / Substack funnels)
|
||||
- Event-to-app conversion rate (event ROI)
|
||||
- Ambassador-attributed visits (referral funnel)
|
||||
- Paid CAC by channel (when paid is firing)
|
||||
|
||||
### Activation leading indicators
|
||||
- Day 1 / Day 7 / Day 35 → paid conversion rate
|
||||
- Onboarding session-completion rate
|
||||
- First key-action completion (post-signup activation event)
|
||||
- App Store conversion rate (install → trial → paid)
|
||||
- Trial → paid conversion rate
|
||||
|
||||
### Retention leading indicators
|
||||
- Day 30 / Day 60 / Day 90 retention
|
||||
- Monthly churn rate (gross + net)
|
||||
- Lifecycle email engagement (open / click / unsubscribe by flow)
|
||||
- Hardware → app activation rate (for hybrid businesses)
|
||||
- Win-back / reactivation rate
|
||||
|
||||
### Referral leading indicators
|
||||
- Ambassador-attributed new subs (via Dub or similar)
|
||||
- Share-after-value moment rate (% of users sharing)
|
||||
- Two-sided referral completion rate
|
||||
- Guides program referrals (when live)
|
||||
- NPS score (if surveyed)
|
||||
|
||||
### Revenue leading indicators
|
||||
- ARPU by cohort
|
||||
- Annual plan adoption %
|
||||
- Cohort LTV by source
|
||||
- Plan mix shifts
|
||||
- Eye-mask / hardware attach rate (for hybrid)
|
||||
- Expansion revenue (B2B)
|
||||
|
||||
## Review cadence
|
||||
|
||||
The plan should specify three rhythms:
|
||||
|
||||
### Weekly (operational sync)
|
||||
- **Who:** fCMO ↔ founder (CEO usually)
|
||||
- **Duration:** 30 min
|
||||
- **Format:** AARRR scoreboard (current vs. last week numbers across the leading indicators) + this week's ships + blockers
|
||||
- **Output:** Action items, decisions made
|
||||
|
||||
### Monthly (metrics review)
|
||||
- **Who:** fCMO + founder + extended team (CXO, product lead, designer if applicable)
|
||||
- **Duration:** 60–90 min
|
||||
- **Format:** Full metrics review + comparison against quarterly KPI targets + qualitative learnings + idea bank reprioritization
|
||||
- **Output:** Possible plan adjustments, hire decisions
|
||||
|
||||
### Quarterly (plan recalibration)
|
||||
- **Who:** fCMO + founders + key advisors
|
||||
- **Duration:** 2–3 hours
|
||||
- **Format:** Full plan review against 90-day and 12-month outcomes, channel-level analysis, funding-stage transition check, recalibration of next 90 days
|
||||
- **Output:** Updated plan (could be v2 / v3 document iteration)
|
||||
|
||||
## KPI target setting
|
||||
|
||||
For each quarter in Section 10, the plan must include 3–5 specific KPI targets. These should be:
|
||||
- **Specific** — not "improve retention," but "Day 30 retention from 22% → 30%"
|
||||
- **Measurable** — pull from a wired data source
|
||||
- **Stretch but plausible** — based on funnel state + historical patterns
|
||||
- **Decision-triggering** — if missed, what does that mean? (Adjust strategy, kill a channel, etc.)
|
||||
|
||||
### KPI target patterns by quarter
|
||||
|
||||
**Q1 (foundation quarter):**
|
||||
- Mostly *bedrock* metrics — fixing leaks. "Headphones-gate conversion drop reverses." "Day 1 → paid +25–50%."
|
||||
- Some *foundation* metrics — laying tracks. "4 SEO pillars staked." "App Store rewrite shipped."
|
||||
- Avoid bold growth targets — the foundations aren't in yet
|
||||
|
||||
**Q2 (validation quarter):**
|
||||
- Mostly *validation* metrics — does what we built work? "Paid CAC < $X blended." "Organic traffic 1,500–3,500/mo."
|
||||
- Some *cohort* metrics — do new cohorts behave better? "Day 7 retention for Q2 cohort vs. Q1."
|
||||
|
||||
**Q3 (scaling quarter):**
|
||||
- Mostly *scaling* metrics — how far does it go? "Paid scaling to $20–30K/mo with CAC steady." "First B2B install reference case live."
|
||||
- Some *capability* metrics — what new things are live? "First Guides pilot launched."
|
||||
|
||||
**Q4 (compound quarter):**
|
||||
- Mostly *compound* metrics — is the flywheel turning? "50%+ of new subs from non-paid channels." "Ambassador-driven 15–25% of new subs."
|
||||
- Some *narrative* metrics — does the Series A story write itself? "Blended LTV/CAC > 3."
|
||||
|
||||
## Anchoring against the VC growth path
|
||||
|
||||
For VC-backed clients past $1M ARR, anchor 12-month and multi-year targets against the **3-3-2-2-2 rule** (3× in years 1 and 2, then 2× in years 3 through 7). Hitting it is rare; most companies don't. Anchoring against it forces the plan to either match it and show how, or explicitly defend choosing a slower trajectory. Full table and context in `growth-patterns.md`.
|
||||
|
||||
For non-VC-backed companies (bootstrapped, founder-funded, profit-focused), the 3-3-2-2-2 doesn't apply. Use linear-pattern targets ("$X MRR added per month") or step-function targets ("$Y revenue jump after the enterprise tier launches") instead.
|
||||
|
||||
## Forecasting reality check
|
||||
|
||||
A plan derives a budget and an annual goal. It does not produce a 12-month month-by-month forecast that's reliably accurate to the dollar.
|
||||
|
||||
**Unless the company is publicly traded, all forecasts are educated guesses.** No startup under $100M ARR consistently hits month-by-month forecasts. Quarterly review is when the plan adjusts — not when variance is treated as failure.
|
||||
|
||||
What the plan commits to honestly:
|
||||
- The annual goal is a defensible direction-of-travel
|
||||
- The budget is the resource commitment that makes the goal plausible
|
||||
- The 90-day roadmap (Section 9) is what's actionable now
|
||||
- Month-to-month projection is illustrative, not promised
|
||||
|
||||
Founders who over-engineer the forecast end up explaining variance every month instead of executing. The plan should resist this — name the annual target, the quarterly KPIs, and the kill criteria. Don't promise the month.
|
||||
|
||||
Full context in `budget-planning.md`.
|
||||
|
||||
## Kill criteria
|
||||
|
||||
For every channel or initiative, the plan should specify when to stop. Often missing from plans, kill criteria force discipline.
|
||||
|
||||
Examples:
|
||||
- "If a paid channel has CAC > 2× target after 30 days at meaningful spend, pause."
|
||||
- "If onboarding Variant 3 doesn't show statistically meaningful lift (or directional lift + congruent qualitative signal) after 4 weeks, move to Variant 1."
|
||||
- "If lifecycle Flow 4 has open rate < 12% after 6 weeks, redo subject lines + audience segmentation."
|
||||
|
||||
## Guardrail metrics
|
||||
|
||||
Some metrics get a hard guardrail (cannot drop below threshold). Useful for protecting brand or unit economics during aggressive growth.
|
||||
|
||||
Examples:
|
||||
- "Brand voice complaint rate > 1% of customer feedback triggers content review."
|
||||
- "Paid CAC > $X for two consecutive months pauses paid scaling pending audit."
|
||||
- "App Store rating drops below 4.5 triggers product review."
|
||||
|
||||
## Data sources mapping
|
||||
|
||||
The plan should name where each metric comes from. This makes it auditable.
|
||||
|
||||
| Metric | Source |
|
||||
|---|---|
|
||||
| Organic traffic | GA4 / Ahrefs |
|
||||
| App Store conversion | App Store Connect |
|
||||
| Funnel conversion (Day N → paid) | Internal analytics (Mixpanel / Amplitude) or App Store Connect cohort export |
|
||||
| Retention | Customer.io segments + product analytics |
|
||||
| MRR / ARR | Stripe (via MCP if wired) |
|
||||
| Plan mix | Stripe |
|
||||
| Lifecycle email metrics | Customer.io |
|
||||
| Ambassador attribution | Dub.co |
|
||||
| Hardware → app activation | Shopify + App Store + internal join |
|
||||
| NPS | Survey tool (Customer.io / Typeform / SurveyMonkey) |
|
||||
|
||||
## When data isn't wired
|
||||
|
||||
If a metric can't currently be measured, flag it in Section 13's open decisions. Example:
|
||||
|
||||
> "Hardware → app activation rate not currently visible in the App Store dashboard. Requires Shopify ↔ App Store Connect join. Q1 work item."
|
||||
|
||||
A plan with un-measurable goals is a plan that can't be validated. Surface the instrumentation work explicitly.
|
||||
|
||||
## Reporting cadence + automation
|
||||
|
||||
Where possible, auto-generate the metrics review rather than building it manually each time. Stripe MCP + GA4 MCP + Customer.io MCP can pull most of what's needed.
|
||||
|
||||
For Tier 1 clients, a simple weekly metrics email to the team (Markdown table, generated via skills + MCPs) costs nothing and creates discipline.
|
||||
|
||||
For Tier 2+ clients, consider a real dashboard (Hex, Metabase, Looker, or internal tool).
|
||||
@@ -0,0 +1,363 @@
|
||||
# Methodology — How a Marketing Plan Gets Made
|
||||
|
||||
The three-phase workflow that produces a comprehensive marketing plan. SKILL.md is the orchestration layer; this is the operational detail.
|
||||
|
||||
## Phase 1 — INIT (research + intake)
|
||||
|
||||
**Goal:** Walk into Phase 2 with enough context to draft every section without guessing.
|
||||
|
||||
### Step 1.1 — Set up the plan folder
|
||||
|
||||
Canonical file layout for every plan:
|
||||
|
||||
```
|
||||
~/marketing-plans/{client-slug}/
|
||||
├── materials/ # Client-provided files (decks, audit output, brand-voice doc, etc.)
|
||||
├── research.md # Written in Phase 1 (INIT)
|
||||
├── progress.md # State machine — see Step 1.1.1 for schema
|
||||
├── sections/
|
||||
│ ├── 01.md # Executive summary (written last, ordered first)
|
||||
│ ├── 02.md # Strategic frame
|
||||
│ ├── ...
|
||||
│ └── 13.md # Measurement, RACI, open decisions, appendix
|
||||
└── final_plan.md # Compiled deliverable (Phase 3 output)
|
||||
```
|
||||
|
||||
### Step 1.1.1 — `progress.md` state schema
|
||||
|
||||
Every plan tracks a single `progress.md` file at the plan root. It's the source of truth for resumption. Schema:
|
||||
|
||||
```markdown
|
||||
# {Client} — Marketing Plan Progress
|
||||
|
||||
phase: init | review | finalize | finalized
|
||||
current_section: <number, only meaningful during review phase>
|
||||
plan_version: v1
|
||||
last_updated: YYYY-MM-DD HH:MM
|
||||
|
||||
## Sections completed
|
||||
- [ ] 2. Strategic frame
|
||||
- [ ] 3. Current state
|
||||
- [ ] 4. Acquisition
|
||||
- [ ] 5. Activation
|
||||
- [ ] 6. Retention
|
||||
- [ ] 7. Referral
|
||||
- [ ] 8. Revenue
|
||||
- [ ] 9. 90-day roadmap
|
||||
- [ ] 10. 12-month outlook
|
||||
- [ ] 11. Marketing operations stack
|
||||
- [ ] 12. Tactical idea bank
|
||||
- [ ] 13. Measurement, RACI, open decisions, appendix
|
||||
- [ ] 1. Executive summary (synthesized last)
|
||||
|
||||
## Approved artifacts
|
||||
sections/02.md, sections/03.md, ... (list as they're written)
|
||||
|
||||
## Notes
|
||||
<any open decisions, blockers, or out-of-band context that aren't in research.md>
|
||||
```
|
||||
|
||||
### Step 1.1.2 — Resumption decision tree
|
||||
|
||||
On every invocation, check state in this order:
|
||||
|
||||
1. **No `{client-slug}/` folder** → fresh plan. Create folder + `materials/` + empty `sections/`. Start INIT (Step 1.2).
|
||||
2. **Folder exists, no `research.md`** → INIT was interrupted. Resume from Step 1.2.
|
||||
3. **`research.md` exists, no `progress.md`** → INIT done, REVIEW not started. Create `progress.md`, start REVIEW from Section 2.
|
||||
4. **`progress.md` exists, `phase: review`** → REVIEW in progress. Resume from `current_section` (or first unchecked box).
|
||||
5. **`progress.md` exists, `phase: finalize`** → FINALIZE was interrupted. Re-run Phase 3.
|
||||
6. **`progress.md` exists, `phase: finalized`** → plan is done. **Do not silently overwrite.** Ask the user: *"This plan is finalized (v{N}). Want to (a) revise it as v{N+1}, (b) start a fresh plan in a new folder, or (c) re-open a specific section?"*
|
||||
|
||||
Update `phase` and `last_updated` whenever state changes.
|
||||
|
||||
### Step 1.2 — Read existing materials
|
||||
|
||||
If `materials/` has files, read all of them. Common drops:
|
||||
- Pitch deck / investor deck
|
||||
- Positioning doc / brand voice doc
|
||||
- Customer research / ICP doc
|
||||
- App Store metrics / analytics snapshot
|
||||
- Lifecycle email inventory
|
||||
- Prior audit output (any scored current-state assessment the team has run)
|
||||
- SEO research (`seo/plan.md`, `seo/keyword-shortlist.md`)
|
||||
- Kickoff call transcript
|
||||
- Founder Slack / async notes
|
||||
|
||||
Read everything. Capture key facts to `research.md` as you go.
|
||||
|
||||
### Step 1.3 — Pull live data where wired
|
||||
|
||||
If MCPs/APIs are wired for this client, pull:
|
||||
|
||||
- **Ahrefs** → domain rating, organic keywords, backlinks, top pages, ref domains (per `/seo-audit` skill)
|
||||
- **GA4 MCP** → traffic by channel, conversion events, retention curves
|
||||
- **Stripe MCP** → MRR, ARR, churn, plan mix, blended LTV by cohort
|
||||
- **App Store Connect** (manual or `dev-browser`) → install → trial → paid funnel; cohort retention
|
||||
- **Customer.io MCP** → flow inventory, send / open / click / unsubscribe rates
|
||||
- **Shopify** → product page conversion, AOV, repeat rate
|
||||
- **GitHub MCP** → repos inventory, last commit dates, what's stale
|
||||
- **Notion** → internal knowledge directory if exposed
|
||||
|
||||
Don't ask the user to copy/paste data that can be pulled directly.
|
||||
|
||||
### Step 1.4 — Conduct structured intake
|
||||
|
||||
For every gap in the materials, ask the user. The minimum intake covers ten topics:
|
||||
|
||||
#### Intake 1 — Client overview
|
||||
- What does the company do, in one sentence (founder's words)?
|
||||
- What's the primary product?
|
||||
- What other products / SKUs / tiers exist?
|
||||
- Is the product live, beta, or pre-launch?
|
||||
- If beta: throttling? GA timeline?
|
||||
|
||||
#### Intake 2 — ICP
|
||||
- Who are you for, in one sentence?
|
||||
- What do they say they want?
|
||||
- What do they actually want?
|
||||
- What's their stated problem? Their real problem?
|
||||
- Demographics / firmographics: who fits the ICP exactly?
|
||||
|
||||
#### Intake 3 — Funnel state today
|
||||
- What are the current funnel numbers? (signups, activations, paid, retention)
|
||||
- What's the funnel *shape* — is it bottle-necked at top, middle, or bottom?
|
||||
- What's the biggest leak?
|
||||
|
||||
#### Intake 4 — Funding state
|
||||
- Current round (pre-seed / seed / Series A / etc.)?
|
||||
- Total raised to date?
|
||||
- Current burn / runway?
|
||||
- Active raise? Closing when?
|
||||
- Investors of note?
|
||||
- Permission to mention fCMO engagement in pitches?
|
||||
|
||||
#### Intake 5 — Team
|
||||
- Founders and what each owns (product, marketing, sales, etc.)?
|
||||
- Other roles on the team and their marketing surface area?
|
||||
- Advisors who touch marketing?
|
||||
- Agencies / contractors / fractionals?
|
||||
- Where are the obvious gaps?
|
||||
- For the team's current marketing owner (if there is one): is the shape π-shaped (two deep skill sets), T-shaped (one deep, broad), or tactical-only? See `team-and-agency-model.md` for the framework that informs Section 11 RACI and the first-hire recommendation in Section 9.
|
||||
|
||||
#### Intake 6 — Budget
|
||||
- Current monthly marketing spend, broken down: paid acquisition, tools, retainers, headcount?
|
||||
- Budget tier this maps to (see `funding-stage-unlocks.md`)?
|
||||
- What budget unlocks when the next round closes?
|
||||
- Blended CAC if known (including salaries, content costs, tools, retainers — not just paid ad spend). If unknown, flag as the top Section 13 open decision — every revenue projection depends on it.
|
||||
- ARPC, annual retention rate (or churn rate), so the budget math in `budget-planning.md` can be applied to Section 8 (Revenue) and Section 10 (12-month outlook).
|
||||
|
||||
#### Intake 7 — Channels currently active
|
||||
- Acquisition: organic SEO, paid search, paid social, content, social, partnerships, events, PR, ambassadors, etc. — for each, status (live / paused / never tried)
|
||||
- Activation: onboarding state, signup flow, paywall, first-session experience, app store listing
|
||||
- Retention: lifecycle email state, in-app upsells, churn cohort
|
||||
- Referral: program existence, attribution, inbound interest
|
||||
- Revenue: pricing structure, plan mix, recent experiments
|
||||
|
||||
#### Intake 8 — Already done
|
||||
What past work should this plan acknowledge?
|
||||
- Major launches and dates
|
||||
- PR moments and who covered
|
||||
- Content pillars / hubs / cornerstone pieces
|
||||
- Partnerships
|
||||
- Awards / certifications
|
||||
- Notable customers / users (if consumer-named users)
|
||||
- Past advisors / fractionals
|
||||
|
||||
#### Intake 9 — In-flight and stuck
|
||||
- What's drafted but not shipped? Why?
|
||||
- What's been "almost ready" for months?
|
||||
- What's blocking each?
|
||||
- What's broken or actively harmful?
|
||||
|
||||
#### Intake 10 — Strategic posture
|
||||
- The most important thing to fix this quarter (founder's read)
|
||||
- The most important thing to ignore this quarter (founder's read)
|
||||
- What investors / board are asking about most
|
||||
- Any constraints not visible elsewhere (legal, partnership-related, brand-related)
|
||||
|
||||
### Step 1.5 — Score current state against the rubric
|
||||
|
||||
Use the 17-section rubric in `references/current-state-rubric.md` as your scoring lens. Two modes:
|
||||
|
||||
- **From rich materials.** When the team has shared decks, prior content audits, an existing brand voice doc, recent positioning work, or a kickoff call transcript — score from those. Mark "scored from materials" in the section heading.
|
||||
- **From a separately scored audit.** If the team already has a scored current-state assessment (in any format), ingest those numbers directly. Don't redo the work.
|
||||
|
||||
Either way, the output is the scored 17-row table that becomes Section 3 of the plan, followed by a 2–4 sentence "shape interpretation" calling out where strengths and gaps cluster.
|
||||
|
||||
### Step 1.6 — Write research.md
|
||||
|
||||
Compile everything into `research.md` with this structure:
|
||||
|
||||
```markdown
|
||||
# {Client} — Marketing Plan Research Record
|
||||
|
||||
**Date:** YYYY-MM-DD
|
||||
**Author:** (fCMO / planner name)
|
||||
|
||||
## Company snapshot
|
||||
- One-sentence description
|
||||
- Stage (pre-seed / seed / Series A / etc.)
|
||||
- Product status (beta / GA)
|
||||
|
||||
## ICP
|
||||
- Primary ICP
|
||||
- Stated vs. actual problem
|
||||
- Demographics / firmographics
|
||||
|
||||
## Funnel state today
|
||||
- Current numbers
|
||||
- Funnel shape
|
||||
- Biggest leak
|
||||
|
||||
## Funding
|
||||
- Total raised
|
||||
- Current round status
|
||||
- Runway
|
||||
|
||||
## Team
|
||||
- Founders and ownership
|
||||
- Marketing surface area by person
|
||||
- Gaps
|
||||
|
||||
## Current marketing budget
|
||||
- $/mo total
|
||||
- Breakdown
|
||||
- Tier mapping
|
||||
|
||||
## Channels currently active
|
||||
[By AARRR stage]
|
||||
|
||||
## Already done (acknowledge in plan)
|
||||
[List]
|
||||
|
||||
## In-flight and stuck
|
||||
[List with blockers]
|
||||
|
||||
## Strategic posture
|
||||
- Founder's top priority
|
||||
- Founder's top de-prioritization
|
||||
- Investor pressure points
|
||||
- Constraints
|
||||
|
||||
## Current-state rubric scores
|
||||
[17 section scores using `references/current-state-rubric.md`. If a prior scored audit exists, paste those scores. Otherwise mark "scored from materials."]
|
||||
|
||||
## Materials read
|
||||
[List of files in materials/ + when read]
|
||||
```
|
||||
|
||||
Save. Move to Phase 2.
|
||||
|
||||
---
|
||||
|
||||
## Phase 2 — REVIEW (section-by-section drafting)
|
||||
|
||||
**Goal:** Walk through all 13 sections of the plan template (`references/plan-template.md`), drafting each, getting user confirmation, saving as you go.
|
||||
|
||||
### Step 2.1 — Initialize progress.md
|
||||
|
||||
Use the schema defined in Step 1.1.1 above. Set `phase: review`, `current_section: 2`, `plan_version: v1`, and stamp `last_updated`.
|
||||
|
||||
### Step 2.2 — Walk each section in this order: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, then 1
|
||||
|
||||
Section 1 (Executive Summary) is drafted **last** because it depends on every other section's conclusions. Walk Sections 2 → 13 in numeric order, then synthesize Section 1 from the others. The final compiled `final_plan.md` is always presented in canonical order 1 → 13.
|
||||
|
||||
For each section, use the template at `references/plan-template.md` to draft. Then in chat:
|
||||
|
||||
1. Present the draft (or key bullets — short sections inline, long sections as bullet outline first)
|
||||
2. Ask: *"Approve, adjust, or expand?"*
|
||||
3. Iterate until user confirms
|
||||
4. Save the confirmed text to `sections/01.md` ... `sections/13.md` (one file per section, zero-padded for sort order). This is the canonical persisted artifact — recovery depends on it.
|
||||
5. Check the box in `progress.md`
|
||||
6. Move to next section
|
||||
|
||||
### Step 2.3 — Section-specific guidance
|
||||
|
||||
**Section 1 (Executive summary)** is synthesized from Sections 2–13 after they're all approved. Draft it last; present it first in the output document.
|
||||
|
||||
**Section 3 (Current state)** uses the embedded 17-section rubric in `references/current-state-rubric.md`. If a prior scored audit exists, paste those scores in. If not, score from available materials.
|
||||
|
||||
**Sections 4–8 (AARRR)** each follow the same internal structure: current state, the plan (numbered moves), 90-day moves, 12-month outlook, skills + tools. Don't skip the skills + tools sub-section — it's what makes the plan operationally honest.
|
||||
|
||||
**Section 11 (Marketing operations stack)** is auto-generatable from `references/ops-stack-mapping.md` plus the specific moves named in Sections 4–8.
|
||||
|
||||
**Section 12 (Idea bank)** is auto-generatable from `references/idea-cross-reference.md` plus client-specific filters (skip ideas that conflict with brand voice; status moves based on funding-stage timing).
|
||||
|
||||
**Section 13** lives at the end. Open decisions should be ranked by impact. Appendix should reference only files the team can access (warn about machine-local paths).
|
||||
|
||||
### Step 2.4 — Brand voice consistency
|
||||
|
||||
If the client has documented brand voice rules (captured in research.md / Section 2), every section must respect them. Common voice constraints:
|
||||
- Vocabulary rules (YES / NO lists)
|
||||
- CTA rules (e.g., "never pressure")
|
||||
- Initiatory vs. explanatory framing
|
||||
- Tone (e.g., authoritative-yet-accessible, intimate-yet-professional)
|
||||
|
||||
If a section's draft violates the brand voice, redo it before showing it to the user.
|
||||
|
||||
---
|
||||
|
||||
## Phase 3 — FINALIZE (compile + verify + publish)
|
||||
|
||||
**Goal:** Produce `final_plan.md` and optionally publish to a shared repo.
|
||||
|
||||
### Step 3.1 — Compile
|
||||
|
||||
Set `phase: finalize` in `progress.md` before starting. Concatenate `sections/01.md` through `sections/13.md` into `final_plan.md` (canonical order 1 → 13, regardless of drafting order). Add:
|
||||
- Title header with date and "v1" version marker
|
||||
- "Prepared by / For / Date / Status" frontmatter
|
||||
- Section anchors that work in Notion paste
|
||||
|
||||
### Step 3.2 — Verification pass
|
||||
|
||||
Before printing:
|
||||
|
||||
- **Cross-reference check** — every marketing-ideas number (e.g., "idea #17") matches the actual idea in `references/idea-cross-reference.md`. Every related-skill mention either exists in the `marketingskills` repo or is documented as an external dependency (see ops-stack-mapping note on cross-marketplace skills).
|
||||
- **MCP/API check** — every tool mentioned in Section 11 actually exists in the user's stack (per research.md intake) OR is flagged as "future / not yet wired."
|
||||
- **Path check** — no machine-specific paths (`/Users/...`, `/home/...`) in the output. Replace with descriptive references.
|
||||
- **Voice check** — final read against brand voice rules. Flag and fix violations.
|
||||
- **Open-decisions check** — every "TBD" or unanswered question from intake is listed in Section 13's open decisions, not hidden in the body.
|
||||
- **Acknowledge check** — every item from "already done" in research.md is acknowledged somewhere in the plan.
|
||||
|
||||
### Step 3.3 — Print
|
||||
|
||||
Output `final_plan.md` to the plan folder. Print a summary to chat:
|
||||
|
||||
> *"Marketing Plan v1 saved to `~/marketing-plans/{client-slug}/final_plan.md`. ~X,XXX words across 13 sections. Ready to paste into Notion or share with the team."*
|
||||
|
||||
### Step 3.4 — Publish (optional)
|
||||
|
||||
Ask the user:
|
||||
> *"Want me to publish this to a shared GitHub repo so the team can access it? If yes, what's the target repo and path (e.g., `{client-org}/{client-context}/marketing/plan.md`)?"*
|
||||
|
||||
If yes:
|
||||
- Clone (or assume cloned) target repo
|
||||
- Check out a feature branch or push direct to main per user's preference
|
||||
- Copy `final_plan.md` to the target path
|
||||
- Adjust the appendix to use repo-relative paths (not machine paths)
|
||||
- Commit + push
|
||||
- Confirm with commit URL
|
||||
|
||||
If no: leave it local. Done.
|
||||
|
||||
### Step 3.5 — Mark finalized
|
||||
|
||||
Set `phase: finalized` in `progress.md` and stamp `last_updated`. This is the terminal state and prevents future `/marketing-plan` invocations from silently overwriting the plan (see Step 1.1.2 case 6).
|
||||
|
||||
---
|
||||
|
||||
## Resuming a plan
|
||||
|
||||
Resumption is governed entirely by the decision tree in Step 1.1.2 above — always check state in that order on every invocation.
|
||||
|
||||
If the user says *"start over"* → ask whether they want to delete the existing folder or move it to `archive/` first; don't silently overwrite.
|
||||
If the user says *"redo Section X"* → uncheck that box in `progress.md`, delete `sections/0X.md`, and re-draft.
|
||||
|
||||
## Failure modes to watch for
|
||||
|
||||
- **Skipping intake.** A plan written without proper intake is generic and won't survive contact with the founder. Always do the full ten-topic intake unless the user explicitly waives it.
|
||||
- **Pretending data exists.** If you can't confirm a number (current MRR, retention rate, etc.), don't guess. Mark it `[TBD — to confirm with team]` in the plan and add to open decisions.
|
||||
- **Ignoring the brand voice.** If the client has a strong voice (most do), every section must respect it. Read the voice rules before drafting any copy-adjacent text.
|
||||
- **Padding the idea bank.** Section 12 is comprehensive only if it includes the skip list with reasons. Don't pad with ideas that clearly don't fit just to hit the 139.
|
||||
- **Glossing over uncomfortable metrics.** If churn is high or activation is low, name it in Current State. Founders read past sugar-coating.
|
||||
- **Forgetting funding-stage logic.** If the client is mid-raise, the plan must explain what changes when the round closes. Skipping this turns a plan into a wish-list.
|
||||
@@ -0,0 +1,197 @@
|
||||
# Marketing Operations Stack — Skills + MCPs per AARRR Stage
|
||||
|
||||
This doc maps every marketing-skill and every relevant MCP/API integration to the AARRR stage(s) it primarily serves. It's the source for Section 11 of every plan.
|
||||
|
||||
> **Note on scope.** Skills below live in this `marketingskills` repo. A few references point to optional tools from adjacent Claude Code marketplaces (e.g., `vercel:agent-browser`, `compound-engineering:diagram-maker`) — substitute equivalents if not installed. When a plan references a skill or tool that isn't available, fall back to the underlying tactic and call it out in Section 13's open decisions.
|
||||
|
||||
## The thesis
|
||||
|
||||
A small team + fCMO + agentic tooling = output of a 15–20-person traditional marketing org. The skills + MCPs encode workflows that previously required dedicated headcount per channel.
|
||||
|
||||
The plan's Section 11 makes this thesis explicit by:
|
||||
1. Mapping skills to stages so the founder sees which skills execute which work
|
||||
2. Mapping MCPs/APIs to stages so the founder sees the tooling layer
|
||||
3. Naming a concrete operational example that proves the stack works
|
||||
4. Showing capability unlocks by funding stage (pre-seed → seed → Series A)
|
||||
|
||||
## Marketing skills mapped to AARRR
|
||||
|
||||
### Acquisition skills
|
||||
|
||||
| Skill | What it does | Primary use in Acquisition |
|
||||
|---|---|---|
|
||||
| `seo-audit` | Audit site for technical and on-page SEO | Quarterly site health checks |
|
||||
| `ai-seo` | Optimize content for AI search engines / LLM citation | Future-proof content strategy |
|
||||
| `programmatic-seo` | Build template-driven SEO pages at scale | Location, comparison, integration page systems |
|
||||
| `schema` | Add structured data markup | Rich snippets, eligibility for AI citation |
|
||||
| `content-strategy` | Plan content topics, pillars, cadence | Setting the editorial calendar |
|
||||
| `competitors` | Build vs-pages and alternative-to-pages | Capture high-intent SERPs against competitors |
|
||||
| `ads` | Plan and structure paid campaigns | Apple Search Ads, Meta, Google, LinkedIn |
|
||||
| `ad-creative` | Generate ad variations and creative | Iterate ad creative across platforms |
|
||||
| `social` | Plan and write social media content | LinkedIn, Twitter/X, Instagram, TikTok |
|
||||
| `typefully` | Schedule/post tweets, threads, LinkedIn content | Cadence operations for founder-led channels |
|
||||
| `cold-email` | Write B2B cold outreach + sequences | Outbound for B2B SaaS / hybrid businesses |
|
||||
| `analytics` | Set up tracking, GA4, conversion events | Funnel instrumentation |
|
||||
| `free-tools` | Plan engineering-as-marketing free tools | Build tools that generate links + leads |
|
||||
| `marketing-website-design` | Design marketing sites with intention | Pillar/landing page design |
|
||||
| `launch` | Plan and execute launches (Product Hunt, GA, feature launches) | GTM moments — strategy + tactical execution |
|
||||
|
||||
### Activation skills
|
||||
|
||||
| Skill | What it does | Primary use in Activation |
|
||||
|---|---|---|
|
||||
| `onboarding` | Optimize user onboarding flows | Onboarding rebuild, activation rate tests |
|
||||
| `signup` | Optimize signup/registration | Reduce friction at top of activation |
|
||||
| `cro` | Optimize any marketing page or form | Conversion testing across pages, forms, landing pages |
|
||||
| `paywalls` | Optimize paywalls and upgrade screens | Trial → paid conversion (also Revenue) |
|
||||
| `popups` | Optimize popups, modals, slide-ins | Lead capture + activation prompts |
|
||||
| `copywriting` | Write marketing copy | Onboarding screens, paywall copy, CTAs |
|
||||
| `copy-editing` | Edit and improve existing copy | Voice / clarity pass before ship |
|
||||
| `copycraft` | Real-time copy variation overlay | Live copy iteration during reviews |
|
||||
| `website-copy` | Write full website copy (stage-8 from CF process) | Comprehensive site copy production |
|
||||
| `ab-testing` | Plan A/B tests | Structure for onboarding variant tests |
|
||||
| `marketing-psychology` | Apply behavioral science to copy and CRO | Persuasion principles in activation moments |
|
||||
|
||||
### Retention skills
|
||||
|
||||
| Skill | What it does | Primary use in Retention |
|
||||
|---|---|---|
|
||||
| `emails` | Design email sequences | Customer.io / Mailchimp / Resend flow building |
|
||||
| `churn-prevention` | Build cancellation flows, save offers, win-back | Reduce churn, recover failed payments |
|
||||
| `copywriting` / `copy-editing` | Email copy production | Lifecycle email content |
|
||||
| `paywalls` | (cross-cuts) — upgrade prompts in retention emails | Upsell within lifecycle |
|
||||
| `ab-testing` | Test email variants | Subject line, CTA, timing tests |
|
||||
|
||||
### Referral skills
|
||||
|
||||
| Skill | What it does | Primary use in Referral |
|
||||
|---|---|---|
|
||||
| `referrals` | Plan and launch referral / affiliate / ambassador programs | Core skill for Section 7 |
|
||||
| `social` | Create ambassador-shareable content | Talking points, post templates |
|
||||
| `copywriting` | Ambassador / affiliate email copy | Recruitment, onboarding, communication |
|
||||
| `marketing-website-design` | Per-ambassador landing pages | Attribution surface |
|
||||
| `emails` | Ambassador lifecycle emails | Onboarding, monthly digest, payout notifications |
|
||||
|
||||
### Revenue skills
|
||||
|
||||
| Skill | What it does | Primary use in Revenue |
|
||||
|---|---|---|
|
||||
| `pricing` | Audit and optimize pricing | Plan tier structure, annual defaults, value metrics |
|
||||
| `paywalls` | Paywall optimization | Trial → paid, free → paid conversion |
|
||||
| `sales-enablement` | Build sales decks, one-pagers, demos | B2B sales support material |
|
||||
| `revops` | Revenue operations, lead lifecycle | Marketing → sales handoff |
|
||||
| `ab-testing` | Pricing experiments | Test annual default, intro pricing, tier consolidation |
|
||||
|
||||
### Cross-cutting / brand foundation skills
|
||||
|
||||
| Skill | What it does | Primary use |
|
||||
|---|---|---|
|
||||
| `product-marketing` | Set up the `.agents/product-marketing.md` context file (positioning, ICP, voice) | Foundational — run first; every section of the plan references this |
|
||||
| `customer-research` | Conduct customer interviews + surveys | Section 2 + Section 3 (Current state) |
|
||||
| `marketing-psychology` | Apply behavioral science | Cross-cuts copy, CRO, paywalls |
|
||||
| `marketing-ideas` | The 139-idea library | Section 12 of plan (Idea bank) |
|
||||
|
||||
## MCPs and APIs mapped to AARRR
|
||||
|
||||
### Acquisition tooling
|
||||
|
||||
| Tool | What it provides | Wired-at-client check |
|
||||
|---|---|---|
|
||||
| **Ahrefs API** | SEO data: keyword research, backlinks, competitor analysis | Required `AHREFS_API_KEY` in `.env` |
|
||||
| **DataForSEO API** | SERP data, keyword volume, competitor SERP analysis | Required API key |
|
||||
| **GA4 MCP** | Traffic by channel, conversion events, retention curves | Wired via gcp project + service account |
|
||||
| **GitHub MCP** | Repo work: marketing site (`site-name-promo` patterns), content authoring | Standard `gh` CLI auth + MCP server |
|
||||
| **Typefully MCP** | Social posting (LinkedIn, X, Threads, Bluesky) | Typefully account + API key |
|
||||
| **Google Ads MCP** | Ad account management, campaign creation, performance pulls | Wired post-budget-unlock |
|
||||
| **agent-browser** | Browser automation (form fills, screenshots, scraping) | CLI install: `npm install -g agent-browser` |
|
||||
| **dev-browser** | General-purpose browser automation | MCP server install |
|
||||
| **defuddle** | Clean markdown extraction from web pages | CLI install |
|
||||
| **Notion** | Internal knowledge directory access | Notion API key |
|
||||
| **Stripe MCP** | LTV math, paid-CAC reconciliation (cross-cuts to Revenue) | Stripe account + restricted key |
|
||||
|
||||
### Activation tooling
|
||||
|
||||
| Tool | What it provides |
|
||||
|---|---|
|
||||
| **App Store Connect** | Conversion rate by listing variant, install funnel | Usually manual + `dev-browser` for screenshots |
|
||||
| **GitHub MCP** | Mobile app repo for onboarding code edits |
|
||||
| **Figma / Pencil MCP** | Onboarding screen design + iteration |
|
||||
| **Customer.io MCP** | In-app messaging + lifecycle email coordination |
|
||||
| **Stripe MCP** | Subscription state for paywall logic |
|
||||
| **GA4 MCP** | Activation events instrumentation |
|
||||
|
||||
### Retention tooling
|
||||
|
||||
| Tool | What it provides |
|
||||
|---|---|
|
||||
| **Customer.io MCP** | The retention infrastructure — flow building, segmentation, sending |
|
||||
| **Shopify** | Hardware buyer events as lifecycle triggers |
|
||||
| **Stripe MCP** | Subscription state, churn cohorts, plan changes |
|
||||
| **GA4 MCP** | Session events, retention curves |
|
||||
| **Resend / Mailchimp / SendGrid** | Alternatives to Customer.io for different stacks |
|
||||
|
||||
### Referral tooling
|
||||
|
||||
| Tool | What it provides |
|
||||
|---|---|
|
||||
| **Dub.co** | Ambassador attribution, short links, per-ambassador tracking |
|
||||
| **Stripe MCP** | Commission accounting + payouts via Connect |
|
||||
| **GitHub MCP** | Per-ambassador landing pages |
|
||||
| **Customer.io MCP** | Ambassador lifecycle (recruitment → onboarding → monthly digest → payout notifications) |
|
||||
| **Rewardful / Tolt / Mention Me** | Alternatives to Dub for affiliate management |
|
||||
|
||||
### Revenue tooling
|
||||
|
||||
| Tool | What it provides |
|
||||
|---|---|
|
||||
| **Stripe MCP** | Pricing tests, subscription analytics, churn cohort analysis, blended CAC math |
|
||||
| **Shopify** | Hardware transactions |
|
||||
| **GA4 MCP** | Revenue events |
|
||||
| **Customer.io MCP** | Paywall / pricing-related lifecycle |
|
||||
| **Notion** | Commercial knowledge directory |
|
||||
|
||||
### Cross-cutting tooling
|
||||
|
||||
| Tool | What it provides |
|
||||
|---|---|
|
||||
| **Notion** | Shared knowledge base |
|
||||
| **GitHub MCP** | Shared context repo (`{client-org}/{client-context}`) |
|
||||
| **defuddle** | Research extraction |
|
||||
| **obsidian-cli** | Working notes for fCMO |
|
||||
| **Pencil MCP** | Design files |
|
||||
| **Figma MCP** | Design files (if Figma) |
|
||||
|
||||
## Capability unlocks by funding stage
|
||||
|
||||
The plan's Section 11 must include this table (or equivalent), specific to the client's current and projected funding stages.
|
||||
|
||||
| Stage | Headcount | Tooling | Channels live |
|
||||
|---|---|---|---|
|
||||
| **Pre-seed / bootstrapped** | fCMO + founder team | All current tooling + marketing-skills library + MCP layer | Organic only (SEO, content, App Store, founder-led social, events, WOM, ambassador) |
|
||||
| **Seed close** | + first marketing hire (lifecycle/content owner) | + paid ad accounts (Apple Search Ads, Meta, LinkedIn) + `ads` skill activated | + paid acquisition pilot ($5–15K/mo — see `funding-stage-unlocks.md` for canonical tiers) |
|
||||
| **Seed deployment** | + designer (potentially fractional) | + analytics expansion (Mixpanel / Amplitude if needed) | + paid scaling ($20–50K/mo) + first launches (PH, GA) |
|
||||
| **Series A** | + performance marketing lead + content lead | + dedicated tooling spend ($2–5K/mo software) + sponsored event budget | + paid scaling ($50–150K/mo) + international consideration + B2B vertical expansion |
|
||||
| **Series B+** | Full-stack marketing org (10+ people) | + agency partnerships + PR firm | + brand campaigns + acquisitions + sponsorships at category level |
|
||||
|
||||
## The concrete-example test
|
||||
|
||||
Section 11 of the plan must include at least one concrete operational example that proves the stack thesis. The example should be:
|
||||
- A specific event (not abstract claim)
|
||||
- From this client's actual history if possible (most credible)
|
||||
- Tied to a non-technical person executing via the stack (proves it works without dedicated engineering)
|
||||
|
||||
Examples from real engagements:
|
||||
- *"On the kickoff call, Alex drafted a working Customer.io abandoned-cart flow live, using Customer.io's Claude MCP. Validated that a non-technical founder can ship lifecycle work using the skill pattern independently."*
|
||||
- *"In two weeks, the team scaled from 0 to 14 ranking keywords using `programmatic-seo` against the Ahrefs API + GitHub MCP — no dedicated SEO hire required."*
|
||||
- *"The first email campaign generated a 24% reply rate after `cold-email` skill + GA4 MCP + Stripe MCP gave the team a verified target list of users with high LTV but no recent activity."*
|
||||
|
||||
If the client has no such moment in their history yet, frame the example as the *first move* — "Here's the demonstration the team will run in week one to validate the stack:"
|
||||
|
||||
## When the stack doesn't apply (yet)
|
||||
|
||||
For clients without MCP connections set up, frame Section 11 differently:
|
||||
- List the skills that DO apply with current tooling
|
||||
- Name which MCPs would unlock which sections of the plan
|
||||
- Treat MCP setup as a Q1 priority alongside the bedrock fixes
|
||||
|
||||
A plan can't claim the agentic-stack thesis if the stack isn't wired. Be honest about state.
|
||||
@@ -0,0 +1,494 @@
|
||||
# Plan Template — The 13-Section Structure
|
||||
|
||||
The canonical template for every marketing plan generated by this skill. Each section has a purpose, a structure, and inline prompts for what to draft.
|
||||
|
||||
The Quietude plan (see `references/example-quietude.md`) is the canonical reference implementation.
|
||||
|
||||
---
|
||||
|
||||
## Title block
|
||||
|
||||
```markdown
|
||||
# {Client} — Marketing Plan v1
|
||||
|
||||
**Prepared by:** {Author / fCMO name}
|
||||
**For:** {Founders / leadership team}
|
||||
**Date:** YYYY-MM-DD
|
||||
**Status:** Draft v1 — for team review
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Section 1 — Executive summary
|
||||
|
||||
**Purpose:** Lift-and-share. A founder should be able to paste this into a board update or investor email without editing.
|
||||
|
||||
**Length:** 400–700 words. Tight.
|
||||
|
||||
**Structure:**
|
||||
1. **One-sentence frame.** What does this plan optimize for? Not "more revenue" — something specific to this client at this stage.
|
||||
2. **Three big bets, ranked by leverage.** Each is a paragraph. Bet = a high-conviction thesis about where the team should focus capital and attention.
|
||||
3. **What twelve months looks like, plausibly.** Bullet list. The plausible outcome state at end of plan horizon. Investor-readable.
|
||||
4. **90-day priorities.** Numbered list. The six (give or take) moves that ship in the first quarter.
|
||||
|
||||
**Voice notes:**
|
||||
- Match the client's voice
|
||||
- Direct, founder-readable, no marketing-speak
|
||||
- Use names and numbers (specific channels, specific metrics) — not abstractions
|
||||
- Tradeoffs named explicitly when they matter
|
||||
|
||||
---
|
||||
|
||||
## Section 2 — Strategic frame
|
||||
|
||||
**Purpose:** Distill positioning, ICP, business-model logic, and brand voice into a single page that any team member or new hire can read to orient.
|
||||
|
||||
**Length:** 800–1500 words.
|
||||
|
||||
**Structure:**
|
||||
|
||||
### What {Company} is, in one sentence
|
||||
Pulled from positioning doc / seed deck / founder language.
|
||||
|
||||
### The category we're claiming
|
||||
Is the company creating a new category, redefining an existing one, or competing in a defined category? Name it. State the category-defining frame in 2–3 sentences. Reference the source (founder's words, ICP doc, etc.).
|
||||
|
||||
### Who we're for (ICP, distilled)
|
||||
Demographics / firmographics + stated problem vs. real problem + what they're actually buying. Tight, 4–6 bullets.
|
||||
|
||||
### The business model logic
|
||||
How does the company make money? What's the customer-acquisition unit economics theory? What's the compounding channel thesis (if any)? Pulled from seed deck / financial model / founder narrative.
|
||||
|
||||
### Brand voice (the non-negotiable)
|
||||
If the client has documented voice rules, list them. YES / NO vocabulary. CTA rules. Tone. Core method (initiatory, explanatory, narrative, etc.). Every other section of the plan must respect these.
|
||||
|
||||
**Voice notes:**
|
||||
- This section is the most "lift from existing materials" — don't invent positioning. Surface what's there.
|
||||
- If positioning is unclear or contradicted across materials, flag it in Section 13's open decisions.
|
||||
|
||||
---
|
||||
|
||||
## Section 3 — Current state
|
||||
|
||||
**Purpose:** Anchor the plan in reality. What's the team, budget, in-flight work, and stuck work *today*?
|
||||
|
||||
**Length:** 1000–2000 words.
|
||||
|
||||
**Structure:**
|
||||
|
||||
### Team composition (marketing surface area)
|
||||
Table of every person with marketing surface area:
|
||||
|
||||
| Person | Role | Marketing surface area |
|
||||
|---|---|---|
|
||||
|
||||
Be honest about gaps. If there's no dedicated marketing hire yet, name when one becomes necessary and what role (see `references/team-and-agency-model.md` — first hire should be π-shaped strategist titled Manager or Lead, not VP/CMO).
|
||||
|
||||
### Marketing budget (current)
|
||||
- Paid acquisition: $X/mo
|
||||
- Tooling stack: list with estimated cost
|
||||
- Retainers / fCMO: list
|
||||
- Headcount: list
|
||||
- Blended CAC: $X (must include salaries, content costs, tools, retainers — not just paid spend; see `references/budget-planning.md` for the calculation)
|
||||
- Current spend as % of ARR: X% (compare against 5–40% range)
|
||||
|
||||
State the funding-stage tier this maps to (see `references/funding-stage-unlocks.md`). Implication: what 90-day plan must produce *without* lever pulls that require future budget.
|
||||
|
||||
### Phase of SaaS growth
|
||||
Name the current phase: $0–10K ARR / $10K–100K / $100K–1M / $1M–$10M / $10M+. Each phase has its own binding constraint and dominant growth pattern (see `references/growth-patterns.md`). Section 10 sequences the move into the next phase.
|
||||
|
||||
### What's already done (acknowledge, then build on)
|
||||
Table:
|
||||
|
||||
| Asset | Status | Marketing leverage |
|
||||
|---|---|---|
|
||||
|
||||
This is where past launches, PR moments, content pillars, certifications, notable users get acknowledged. **Critical**: don't write a plan that ignores work the team is proud of.
|
||||
|
||||
### What's in-flight (drafted but not shipped)
|
||||
Table:
|
||||
|
||||
| Item | Status | Blocker |
|
||||
|---|---|---|
|
||||
|
||||
Be honest about blockers. Where the blocker is "no time" or "no decision," that goes to Section 13's open decisions.
|
||||
|
||||
### What's stuck (and needs to unstick this quarter)
|
||||
Table:
|
||||
|
||||
| Issue | Cost of inaction | Action |
|
||||
|---|---|---|
|
||||
|
||||
Stuck things are the most leverage-positive places to focus the first weeks of the 90-day plan.
|
||||
|
||||
### Audit rubric snapshot
|
||||
17-section scored snapshot using the embedded current-state rubric. See `references/current-state-rubric.md` for the full rubric and scoring guides.
|
||||
|
||||
If a prior scored audit exists, paste those scores in. Otherwise score from available materials and note "scored from materials" under the heading.
|
||||
|
||||
| # | Section | Score | Note |
|
||||
|---|---|---|---|
|
||||
| 1 | Positioning | 0–5 | |
|
||||
| 2 | Customer research | 0–5 | |
|
||||
| ... | ... | ... | ... |
|
||||
| 17 | Internationalization | 0–5 | |
|
||||
|
||||
**Total: X / 85 (Y%).** Note the *shape* of strength and weakness — that shape is the gap the rest of the plan closes.
|
||||
|
||||
**Voice notes:**
|
||||
- Honest > polished. If the client's metrics are bad, name them. Founders read past sugar-coating.
|
||||
|
||||
---
|
||||
|
||||
## Section 4 — Acquisition
|
||||
|
||||
**Purpose:** Answer "how do strangers become aware of us?" Map every channel: current state, planned moves, skipped (with reason).
|
||||
|
||||
**Length:** 1000–1800 words.
|
||||
|
||||
**Structure:**
|
||||
|
||||
### Current state
|
||||
Brief. What's working today, what's not, what the data shows about channel mix.
|
||||
|
||||
### The plan
|
||||
Numbered "Moves." Each move is a paragraph (3–6 sentences) describing the channel, the thesis, and the specific work. Common moves:
|
||||
|
||||
- **Move 1 — SEO (and content)** — Reference the SEO plan if one exists (`seo/plan.md`). Otherwise: keyword research, pillar/spoke structure, content cadence.
|
||||
- **Move 2 — App Store / Play Store optimization** (for consumer apps) — Listing rewrite, screenshot tests, ASO keyword targeting.
|
||||
- **Move 3 — Founder-led channels** — LinkedIn for B2B/SaaS, Twitter/X for tech, Instagram for consumer. Cadence, topics, owners.
|
||||
- **Move 4 — PR amplification** — What's the credibility anchor? How to amplify it.
|
||||
- **Move 5 — Events (if applicable)** — Live events, conferences, webinars. Acquisition vs. activation role.
|
||||
- **Move 6 — Hardware / commerce surface (if applicable)** — Shopify storefront, Amazon, retail.
|
||||
- **Move 7 — B2B sales support** — Case studies, partner pages, vertical-specific content.
|
||||
- **Move 8 — Paid layer (when budget unlocks)** — Apple Search Ads, Meta, LinkedIn, Google. Held until specified funding stage.
|
||||
|
||||
### 90-day acquisition moves
|
||||
Week-by-week breakdown of the ships in the first quarter.
|
||||
|
||||
### 12-month acquisition outlook
|
||||
Quarter-by-quarter outcome state (Q1 / Q2 / Q3 / Q4).
|
||||
|
||||
### Skills + tools
|
||||
- **Skills:** list relevant marketing-skills repo skills (`seo-audit`, `ai-seo`, `ads`, `social`, `competitors`, etc.)
|
||||
- **MCPs / APIs:** list connections (Ahrefs API, GA4 MCP, Typefully MCP, Stripe MCP for LTV math, etc.)
|
||||
|
||||
---
|
||||
|
||||
## Section 5 — Activation
|
||||
|
||||
**Purpose:** Answer "once someone tries us, do they have an experience that converts?"
|
||||
|
||||
**Length:** 800–1500 words.
|
||||
|
||||
**Structure:** Same as Acquisition (Current state / The plan / 90-day / 12-month / Skills + tools).
|
||||
|
||||
**Common moves:**
|
||||
- Bedrock fixes (broken signup, broken onboarding gates, etc.)
|
||||
- Onboarding tests / rebuild (often the most leveraged move at this stage)
|
||||
- App Store listing rewrite (cross-references to Acquisition)
|
||||
- Lifecycle Flow ship order (when to ship onboarding emails vs. hold for product stability)
|
||||
- Paywall + pricing review (often Activation × Revenue)
|
||||
|
||||
### Skills + tools
|
||||
`onboarding`, `signup`, `paywalls`, `copywriting`, `marketing-website-design`, `ab-testing`, etc.
|
||||
|
||||
---
|
||||
|
||||
## Section 6 — Retention
|
||||
|
||||
**Purpose:** Answer "once someone converts, do they stay and deepen?"
|
||||
|
||||
**Length:** 800–1500 words.
|
||||
|
||||
**Structure:** Same as above.
|
||||
|
||||
**Common moves:**
|
||||
- Lifecycle email flows (post-purchase, lapsed user, win-back)
|
||||
- Subscription / preference centers
|
||||
- Churn reconciliation (often metric definitions don't match across surfaces)
|
||||
- Hardware → software activation paths (for hybrid businesses)
|
||||
- Annual plan default tests (cross-references to Revenue)
|
||||
|
||||
### Skills + tools
|
||||
`emails`, `churn-prevention`, `copywriting`, `paywalls`, etc.
|
||||
|
||||
---
|
||||
|
||||
## Section 7 — Referral
|
||||
|
||||
**Purpose:** Answer "do retained users bring more users, and at what cost?"
|
||||
|
||||
**Length:** 500–1200 words.
|
||||
|
||||
**Structure:** Same as above.
|
||||
|
||||
**Common moves:**
|
||||
- Ambassador / affiliate program launch (if inbound interest exists, lead with it)
|
||||
- Share-after-value moments built into product
|
||||
- Founder amplification (founder as referrer-zero)
|
||||
- Long-game expert / Guides / certified-host network
|
||||
- Gifting flows (for consumer / hardware)
|
||||
|
||||
### Skills + tools
|
||||
`referrals`, `social`, `emails` (for ambassador lifecycle), `copywriting`, etc.
|
||||
|
||||
---
|
||||
|
||||
## Section 8 — Revenue
|
||||
|
||||
**Purpose:** Answer "what do we charge, who pays, and how does it compound?"
|
||||
|
||||
**Length:** 500–1200 words.
|
||||
|
||||
**Structure:** Same as above.
|
||||
|
||||
**Common moves:**
|
||||
- Pricing audit (what's actually charged today vs. listed?)
|
||||
- Annual plan default tests
|
||||
- Hardware → software bundling formalization (for hybrid businesses)
|
||||
- Storefront / commerce page optimization
|
||||
- B2B case studies + sales material
|
||||
- Long-term value pools (data licensing, enterprise expansion) — flagged not executed in 12-month plan
|
||||
|
||||
### Unit economics
|
||||
Required table:
|
||||
|
||||
| Metric | Value | Note |
|
||||
|---|---|---|
|
||||
| ARPC (avg monthly revenue per customer) | $X | Pulled from Stripe / billing |
|
||||
| Blended CAC | $X | Includes all marketing costs, not just paid |
|
||||
| Annual retention rate | X% | 1 − annual churn |
|
||||
| LTV (rough) | $X | ARPC × 12 / annual churn |
|
||||
| LTV / CAC | X | Health benchmark: > 3 |
|
||||
|
||||
These feed the budget math in Section 10. If any of these are unknown, flag in Section 13 as top open decision.
|
||||
|
||||
### Skills + tools
|
||||
`pricing`, `paywalls`, `sales-enablement`, `revops`, `ab-testing`, etc.
|
||||
|
||||
---
|
||||
|
||||
## Section 9 — 90-day roadmap
|
||||
|
||||
**Purpose:** The tactical execution layer. Every move ships within a named week, with an owner.
|
||||
|
||||
**Length:** Tables, not prose. Should fit on one printed page if possible.
|
||||
|
||||
**Structure:** Four 2–3-week sprints:
|
||||
|
||||
### Weeks 1–2 — Unblock
|
||||
Highest-confidence, lowest-cost changes. Removing things that are broken.
|
||||
|
||||
| Move | Stage | Owner |
|
||||
|---|---|---|
|
||||
|
||||
### Weeks 3–4 — Foundation
|
||||
Pillar/foundational work. Domain consolidation. First content. First flows shipping. First tests live.
|
||||
|
||||
### Weeks 5–8 — Velocity
|
||||
Compounding work begins. Content cadence. Repeat tests. Channel scaling.
|
||||
|
||||
### Weeks 9–12 — Compound
|
||||
Second-order moves. Layered tactics. 90-day review prep.
|
||||
|
||||
---
|
||||
|
||||
## Section 10 — 12-month outlook
|
||||
|
||||
**Purpose:** Quarterly milestones with explicit funding-stage capability unlocks named, anchored against a defensible growth pattern.
|
||||
|
||||
**Length:** Four sub-sections, one per quarter. ~250–400 words each. Plus a short framing paragraph at the top naming the budget method and growth pattern.
|
||||
|
||||
### Framing (top of Section 10)
|
||||
|
||||
State explicitly:
|
||||
- **Budget method used.** Method 1 (Revenue-Based 5–40% of ARR) or Method 2 (Goal-Based formula). See `references/budget-planning.md`. Show the math.
|
||||
- **Annual budget total** + the experimental buffer (+10–20%).
|
||||
- **Resulting end-of-year ARR goal.** Honest forecast, not a guarantee — see the forecasting reality check in `references/measurement-framework.md`.
|
||||
- **Growth pattern expected.** Linear (predictable $X MRR added per month), step-function (plateau between deliberate jumps), or layered S-curves. For VC-backed Series A+, anchor against 3-3-2-2-2 and show whether the plan matches it or explicitly chooses a different trajectory. See `references/growth-patterns.md`.
|
||||
|
||||
### Structure (per quarter)
|
||||
|
||||
#### Q{N} — Months {X}–{Y}
|
||||
|
||||
**Funding state:** {tier} per `funding-stage-unlocks.md`
|
||||
|
||||
**Focus:** One-sentence focus theme for the quarter.
|
||||
|
||||
**Outcomes by end of Q{N}:**
|
||||
- Bulleted outcome list (5–8 items)
|
||||
|
||||
**KPI targets:** 3–5 specific numerical targets.
|
||||
|
||||
**Channel/Product/Market S-curve position:** Which curves are growing, which are plateauing, which is the next one being staged for this quarter (see `growth-patterns.md` — layering principle).
|
||||
|
||||
---
|
||||
|
||||
## Section 11 — Marketing operations stack
|
||||
|
||||
**Purpose:** The fCMO differentiator. Show how a small team + agentic tooling executes the plan without hiring at every channel.
|
||||
|
||||
**Length:** Tables + brief explanation.
|
||||
|
||||
**Structure:**
|
||||
|
||||
### The thesis
|
||||
1–2 paragraphs explaining the principle: small team + marketing-skills library + MCP integrations = output of a larger team.
|
||||
|
||||
### Skills mapped to AARRR stages
|
||||
|
||||
| Stage | Primary skills | Supporting skills |
|
||||
|---|---|---|
|
||||
| Acquisition | (list) | (list) |
|
||||
| Activation | (list) | (list) |
|
||||
| Retention | (list) | (list) |
|
||||
| Referral | (list) | (list) |
|
||||
| Revenue | (list) | (list) |
|
||||
| Cross-cutting | (list) | (list) |
|
||||
|
||||
### MCPs / APIs mapped to stages
|
||||
|
||||
| Stage | Existing connections | fCMO tooling layer |
|
||||
|---|---|---|
|
||||
|
||||
### A concrete example
|
||||
Pick one operational moment that proves the stack works (e.g., "Customer.io MCP let the non-technical founder draft a flow live on the kickoff call"). Anchor the abstract claim in a specific event.
|
||||
|
||||
### Capability unlocks by funding stage
|
||||
|
||||
| Stage | Headcount | Tooling | Channels live |
|
||||
|---|---|---|---|
|
||||
| (current) | (list) | (list) | (list) |
|
||||
| (next round) | (delta) | (delta) | (delta) |
|
||||
| ... | ... | ... | ... |
|
||||
|
||||
### Team and agency model (RACI)
|
||||
|
||||
Apply the principle from `references/team-and-agency-model.md`: strategy in-house, execution often outsourced.
|
||||
|
||||
| Function | Owned by (internal strategic role) | Executed by (IC / contractor / agency) |
|
||||
|---|---|---|
|
||||
| Growth marketing (demand engine) | | |
|
||||
| Product marketing (story engine) | | |
|
||||
| Content marketing (trust engine) | | |
|
||||
|
||||
If the team is missing a strategic owner for one of these functions, the first 90-day move (Section 9) should be the hire — Manager or Lead title, π-shaped if possible, not VP/CMO.
|
||||
|
||||
If execution capacity is the gap, name the contractor or small niche agency in the right cell rather than the team's existing IC.
|
||||
|
||||
Pull from `references/funding-stage-unlocks.md`.
|
||||
|
||||
---
|
||||
|
||||
## Section 12 — Tactical idea bank
|
||||
|
||||
**Purpose:** Cross-reference all 139 ideas from the `marketing-ideas` skill against AARRR stages, with client-specific status.
|
||||
|
||||
**Length:** Long — tables can easily total 150+ rows.
|
||||
|
||||
**Structure:**
|
||||
|
||||
### Intro paragraph
|
||||
Explain the cross-reference: Sections 4–8 prescribe what's *being done*. This section maps what's *possible*.
|
||||
|
||||
### Status legend
|
||||
|
||||
- **Now (Q1)** — already in 90-day plan
|
||||
- **Q2** — post-foundation layer-in
|
||||
- **Q3+** — post-seed-close or post-GA expansion
|
||||
- **Q4+** — long-game
|
||||
- **Skip / off-brand** — incompatible with brand voice or business model
|
||||
|
||||
### 12.1 Acquisition ideas
|
||||
|
||||
By status (Now / Q2 / Q3+ / Q4+ / Skip), tables of relevant marketing-ideas by number.
|
||||
|
||||
| # | Idea | Client note |
|
||||
|---|---|---|
|
||||
|
||||
### 12.2 Activation ideas
|
||||
### 12.3 Retention ideas
|
||||
### 12.4 Referral ideas
|
||||
### 12.5 Revenue ideas
|
||||
### 12.6 Cross-cutting / brand foundation ideas
|
||||
|
||||
### Idea-bank summary
|
||||
- Counts per AARRR stage
|
||||
- Counts skipped, with rationale
|
||||
- What the plan covers as a % of the available tactical surface area
|
||||
- What this proves about the client's stage
|
||||
|
||||
Use `references/idea-cross-reference.md` as the source-of-truth mapping. Apply client-specific filters during draft (brand voice rules out some; funding stage shifts timing of others).
|
||||
|
||||
---
|
||||
|
||||
## Section 13 — Measurement, RACI, open decisions, appendix
|
||||
|
||||
**Purpose:** Operational close. Define how the plan gets measured, who owns what, what's still TBD, and where to find the deeper docs.
|
||||
|
||||
**Structure:**
|
||||
|
||||
### Measurement — the metrics that matter
|
||||
|
||||
**North star (proposed):** One metric that captures the business-model thesis. For Quietude it was blended-LTV-to-blended-CAC; for a B2B SaaS it might be NRR × NPS; for a marketplace, take-rate × monthly transacting users. Make it specific to the company.
|
||||
|
||||
**Leading indicators by AARRR stage:** Table:
|
||||
|
||||
| Stage | Leading indicators |
|
||||
|---|---|
|
||||
| Acquisition | ... |
|
||||
| Activation | ... |
|
||||
| Retention | ... |
|
||||
| Referral | ... |
|
||||
| Revenue | ... |
|
||||
|
||||
**Review cadence:**
|
||||
- Weekly: who syncs with whom, on what
|
||||
- Monthly: who reviews what
|
||||
- Quarterly: plan recalibration trigger
|
||||
|
||||
### RACI
|
||||
|
||||
| Domain | Responsible | Accountable | Consulted | Informed |
|
||||
|---|---|---|---|---|
|
||||
|
||||
Common domains: strategic plan, brand voice, app/product implementation, lifecycle, SEO content, App Store, founder-led social, events, ambassadors, B2B sales, pricing, investor narrative, future hires.
|
||||
|
||||
### Open decisions blocking the plan
|
||||
|
||||
Ranked by impact. Each is: name + impact + what's blocked.
|
||||
|
||||
1. (highest impact) ...
|
||||
2. ...
|
||||
8. (lowest impact) ...
|
||||
|
||||
### Appendix — deep-dive links
|
||||
|
||||
**Published in this repo / shared with team:** {relative paths to docs in the shared repo}
|
||||
|
||||
**Founder-authored strategic context** (internal knowledge base): {names of docs the team has access to outside the plan repo}
|
||||
|
||||
**fCMO working drafts** (not yet published): {names + how to access from author}
|
||||
|
||||
---
|
||||
|
||||
## Closing line
|
||||
|
||||
```markdown
|
||||
*{Client} Marketing Plan v1. Prepared by {Author}, {Date}. For team review and discussion.*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Per-section heuristics for "is this section done?"
|
||||
|
||||
- **Section 1** — A non-Quietude reader could understand the company's growth thesis from this alone.
|
||||
- **Section 2** — Brand voice rules are explicit enough that any new copywriter could follow them.
|
||||
- **Section 3** — All "in-flight" items have an owner and a blocker named.
|
||||
- **Sections 4–8** — Each move names a skill (`some-skill`) and a tool (Customer.io MCP / Stripe MCP / Ahrefs / etc.).
|
||||
- **Section 9** — Every row has an owner.
|
||||
- **Section 10** — Each quarter names the funding stage explicitly.
|
||||
- **Section 11** — At least one concrete operational example proves the stack thesis.
|
||||
- **Section 12** — Skip list has rationale, not just absence.
|
||||
- **Section 13** — North-star is specific to this company (not generic "ARR growth").
|
||||
@@ -0,0 +1,278 @@
|
||||
# Team and Agency Model — Hire for Strategy, Outsource Execution
|
||||
|
||||
The marketing operations stack (Section 11 of every plan) describes *what* gets done. This doc describes *who does it* — the operating principle, the org shape, the first hire, the agency model, and how it evolves as the company scales.
|
||||
|
||||
Excerpted and adapted from *Founding Marketing* by Corey Haines.
|
||||
|
||||
## The principle
|
||||
|
||||
**Strategy lives in-house. Execution can — and often should — be outsourced.**
|
||||
|
||||
Two failure modes are common when founders ignore this:
|
||||
|
||||
1. **Hire junior tactician first.** Founder hits a milestone, raises a round, hires a junior to "do marketing" (run ads, write blogs, post on social). Six months later: scattered tactics, no coherent strategy, disappointing results.
|
||||
2. **Hire expensive agency for strategy.** Burns cash while the internal team struggles to execute on recommendations they don't fully understand. Strategic insight gathers dust; tactical needs go unmet.
|
||||
|
||||
The traditional advice — "hire full-time for competitive advantages, only use agencies for commoditized work" — made sense when marketing moved slowly and talent stayed for decades. That world is gone. Full-time hires take months to ramp and years to develop deep expertise. The best agencies and contractors deliver results immediately, with cross-industry pattern recognition you couldn't build in-house affordably.
|
||||
|
||||
## What stays in-house
|
||||
|
||||
The strategic heart of the marketing operation. Specifically:
|
||||
|
||||
- **Strategic direction and vision** — the "why" behind every move
|
||||
- **Customer and market understanding** — only comes from daily immersion in the business
|
||||
- **Positioning and deep market knowledge** — represents the company's unique place in the market
|
||||
- **Core product and service delivery** — the heart of the value proposition
|
||||
- **Long-term institutional knowledge** — the compound interest of experience
|
||||
|
||||
These are not delegatable. An external partner can sharpen the articulation, but the underlying conviction must come from the team.
|
||||
|
||||
## What's safe to outsource
|
||||
|
||||
External expertise shines in specific contexts:
|
||||
|
||||
- **Best-in-class implementation of specialized skills** (paid media operators, technical SEO, video production, designers)
|
||||
- **Burst capacity** — launch sprints, campaign cycles, one-off content production
|
||||
- **Well-defined strategies** — when the scope, deliverables, and success metrics are clear
|
||||
- **Fresh eyes on old problems** — external perspective when the team is too close to see clearly
|
||||
|
||||
The trick is *defining* what's being outsourced. Vague briefs ("help us with marketing") produce vague results. Specific briefs ("ship 20 RSAs across 4 ad groups by month-end with the CTR benchmarks in the brief") produce shippable work.
|
||||
|
||||
## The three core functions
|
||||
|
||||
Every marketing engine has three primary functions. Whether you have a team of 1 or 50, the functions exist — even if one person owns several.
|
||||
|
||||
### Growth Marketing — the demand engine
|
||||
|
||||
- Optimizes campaigns
|
||||
- Manages the funnel
|
||||
- Operates distribution channels
|
||||
- Runs the marketing tech stack
|
||||
- Data-driven; constantly testing and measuring
|
||||
|
||||
Drives quantitative outcomes: leads, signups, paid traffic, conversion rate, CAC.
|
||||
|
||||
### Product Marketing — the story engine
|
||||
|
||||
- Transforms product benefits into compelling messages
|
||||
- Powers product launches
|
||||
- Equips the sales team
|
||||
- Owns pricing and packaging communication
|
||||
- Bridges what's built and why people should care
|
||||
|
||||
Drives positioning quality, message-market fit, launch impact, sales enablement.
|
||||
|
||||
### Content Marketing — the trust engine
|
||||
|
||||
- Maintains the brand voice
|
||||
- Manages the editorial calendar
|
||||
- Produces content that reaches and teaches the audience
|
||||
- Proves impact through customer stories
|
||||
- Shapes industry conversations through thought leadership
|
||||
- Supports sales with closing content
|
||||
|
||||
Drives organic traffic, brand affinity, thought leadership, trust signals.
|
||||
|
||||
These three functions are interconnected. Growth without story is performance with no positioning. Story without distribution is a great pitch nobody hears. Trust without demand capture is brand affinity that doesn't compound into revenue.
|
||||
|
||||
## The first marketing hire
|
||||
|
||||
The most consequential decision in building the marketing engine isn't about channels or technology — it's who leads.
|
||||
|
||||
**The first marketing hire should be a strategist, not a tactician.** Counterintuitive when there's a mountain of tactical work to ship. Essential for sustainable growth.
|
||||
|
||||
### Look for π-shaped, not T-shaped
|
||||
|
||||
The standard advice is to hire a **T-shaped marketer**: broad knowledge across many areas, deep in one. That's fine for a tactical IC role.
|
||||
|
||||
For the first strategic hire, look for **π-shaped**: two deep skill sets, plus broad surface-level competency across the rest. The two depths create unique leverage through their combination.
|
||||
|
||||
#### High-leverage combinations
|
||||
|
||||
**Product Marketing + Growth Marketing**
|
||||
- Owns positioning *and* drives distribution
|
||||
- Crafts the message *and* gets it to market
|
||||
- No gap between planning and doing
|
||||
- Best for technical products or complex sales
|
||||
|
||||
**Product Marketing + Content Marketing**
|
||||
- Translates product into compelling stories
|
||||
- Owns voice and positioning together
|
||||
- Creates content that compounds
|
||||
- Best for thought-leadership or education-driven markets
|
||||
|
||||
**Growth Marketing + Content Marketing**
|
||||
- Builds the demand engine and the content that fuels it
|
||||
- Closes the loop between SEO/social distribution and conversion
|
||||
- Best for content-led growth motions
|
||||
|
||||
The wrong shape for a first hire: deep paid media specialist alone, deep SEO specialist alone, deep designer alone. These are tactical depths; they need a strategic owner above them.
|
||||
|
||||
### Title and progression — don't inflate
|
||||
|
||||
A common mistake: making the first marketing hire a "CMO" or "VP." Creates problems when you actually need to scale the org, because there's no headroom above them.
|
||||
|
||||
The right progression:
|
||||
|
||||
| Title | Scope |
|
||||
|---|---|
|
||||
| **Manager** | Individual contributor, co-manages freelancers |
|
||||
| **Lead** | Senior IC, manages freelancers/agencies |
|
||||
| **Director / Head** | Manages ICs and vendors |
|
||||
| **VP** | Manages Directors |
|
||||
| **Chief (CMO)** | Manages VPs |
|
||||
|
||||
The first hire is almost always **Marketing Manager** or **Marketing Lead**. They should be able to:
|
||||
|
||||
- Define positioning — not just describe what you do, but why it matters
|
||||
- Identify best channels — from data, not intuition
|
||||
- Create the messaging framework — consistency across touchpoints
|
||||
- Build the marketing engine — systems that scale beyond any individual
|
||||
- Manage external resources — get the most from agencies and contractors
|
||||
|
||||
Both strategic *and* hands-on. Comfortable setting direction and rolling up sleeves. Most importantly: a **builder** — creates processes, frameworks, and systems that scale beyond their individual capacity.
|
||||
|
||||
## The marketing engine — three components
|
||||
|
||||
Think of the marketing organization as an engine. Each part has a specific role; the magic is in how they work together.
|
||||
|
||||
### The Fuel — Strategy
|
||||
|
||||
What powers everything else. Without good fuel, even the best engine sputters.
|
||||
|
||||
- Product marketing creates positioning (foundation of all communication)
|
||||
- Content marketing develops stories (features → benefits that resonate)
|
||||
- Brand marketing establishes identity (memorable and meaningful)
|
||||
|
||||
Quality of the fuel determines efficiency. Poor positioning, weak stories, inconsistent branding waste energy regardless of execution.
|
||||
|
||||
### The Engine — Execution
|
||||
|
||||
Where strategy turns into action.
|
||||
|
||||
- Growth marketing drives distribution (right message to the right people)
|
||||
- Demand gen creates opportunities (attention → interest)
|
||||
- Operations maintains systems (everything running smoothly)
|
||||
|
||||
Needs to be well-maintained and properly tuned. Right processes, tools, people in place to execute consistently.
|
||||
|
||||
### The Dashboard — Analytics
|
||||
|
||||
How you know if you're heading in the right direction.
|
||||
|
||||
- Metrics track performance (measuring what matters)
|
||||
- Attribution shows what works (cause and effect)
|
||||
- Data informs decisions (evidence over opinion)
|
||||
|
||||
Without good instrumentation, flying blind. Need both leading and lagging indicators.
|
||||
|
||||
## Working with agencies — selection framework
|
||||
|
||||
Not all agencies are created equal. Ranked from most appropriate for early-stage to least:
|
||||
|
||||
### Individual contractors
|
||||
- **Most flexible** — adapt quickly to changing requirements
|
||||
- **Direct relationship** — no account-management layer
|
||||
- **Often most cost-effective** — pay for pure expertise
|
||||
- **Best for** specific skills (paid media op, technical SEO, video editor, designer)
|
||||
|
||||
For most pre-Series-A companies, this is the right answer for nearly all outsourced work.
|
||||
|
||||
### Small niche agencies
|
||||
- **Specialized expertise** — deep knowledge in specific areas
|
||||
- **Personal attention** — often working directly with senior team
|
||||
- **Often founder-led** — experienced practitioners calling the shots
|
||||
- **Clear focus** — they know what they're good at
|
||||
- **Best for** specialized needs with some complexity (full SEO program, lifecycle email program, brand identity work)
|
||||
|
||||
### Small generalist agencies
|
||||
- **Broader capabilities** — handle multiple needs
|
||||
- **More resources** — team approach to problems
|
||||
- **Multiple skill sets** — cross-functional
|
||||
- **Usually more expensive** — paying for convenience
|
||||
- **Best for** companies needing broader support and willing to pay for the simplicity of fewer relationships
|
||||
|
||||
### Large agencies (not recommended for most startups)
|
||||
- Long contracts, high minimums, junior account teams, slow turnaround
|
||||
- Useful only when the brand spend is large enough to command senior attention
|
||||
|
||||
## Setting agencies up for success
|
||||
|
||||
The difference between a successful and failed agency relationship usually comes down to structure and management.
|
||||
|
||||
### Before starting
|
||||
|
||||
- **Define clear objectives** — what specific outcomes are we seeking?
|
||||
- **Set realistic timelines** — when do we need to see results?
|
||||
- **Establish communication channels** — how do we stay aligned?
|
||||
- **Agree on metrics** — what defines success?
|
||||
- **Document processes** — how do we work together?
|
||||
|
||||
### During engagement
|
||||
|
||||
- **Regular check-ins** — weekly tactical, monthly strategic
|
||||
- **Clear feedback loops** — both ways, positive and constructive
|
||||
- **Data sharing** — give them what they need to succeed
|
||||
- **Performance reviews** — measure against agreed metrics
|
||||
- **Strategy alignment** — ensure they're moving with the business
|
||||
|
||||
### Red flags
|
||||
|
||||
- **Scope creep beyond core expertise** — trying to do too much
|
||||
- **High team turnover** — losing institutional knowledge
|
||||
- **Missed deadlines** — failing to deliver as promised
|
||||
- **Poor communication** — lack of proactive updates
|
||||
- **Unclear reporting** — can't demonstrate value
|
||||
|
||||
The best agency relationships feel like partnership: they understand the business, care about success, bring expertise you couldn't build in-house affordably. Takes work on both sides — clear expectations, open communication, mutual respect.
|
||||
|
||||
## Scaling the model by stage
|
||||
|
||||
The right ratio of internal to external resources isn't static. It evolves with stage, needs, and market conditions.
|
||||
|
||||
### Early stage (pre-product-market-fit)
|
||||
|
||||
**Mode:** discovery and iteration
|
||||
|
||||
- **Internal:** 1–2 strategic hires leading the charge (often the founder + one π-shaped marketer)
|
||||
- **External:** specialized contractors for execution (no long-term commitment)
|
||||
- **Agency relationships:** project-based, testing approaches before bigger investments
|
||||
- **North star:** solid foundation while keeping fixed costs low
|
||||
|
||||
### Growth stage (post-PMF, scaling what works)
|
||||
|
||||
**Mode:** optimization
|
||||
|
||||
- **Internal:** small but mighty core strategic team that owns marketing direction
|
||||
- **External:** balanced mix of contractors and agencies, each chosen for specific expertise
|
||||
- **Agency relationships:** deeper, longer-term — partners who grow with you
|
||||
- **North star:** double down on channels and approaches that have proven successful
|
||||
|
||||
### Scale stage (multi-channel, multi-segment)
|
||||
|
||||
**Mode:** coordination
|
||||
|
||||
- **Internal:** larger strategic team focused on coordination and oversight (not execution)
|
||||
- **External:** specialized agencies, each bringing deep expertise in specific areas of the mix
|
||||
- **Trusted contractor network:** flexibility for variable workloads and special projects
|
||||
- **North star:** finding efficiencies, improving processes, maximizing return
|
||||
|
||||
The metaphor: a symphony orchestra. The internal team conducts. External partners play their instruments with expertise.
|
||||
|
||||
## How this informs the plan
|
||||
|
||||
| Section | What to include |
|
||||
|---|---|
|
||||
| **3 (Current state)** | Team composition — every person who touches marketing, what they own. Identify where the team is π-shaped vs. T-shaped vs. tactical-only. Flag gaps. |
|
||||
| **9 (90-day roadmap)** | If the team is missing the strategic owner, the first move is the first marketing hire (Lead or Manager). If the team has strategy but no execution capacity, the first move is the first contractor or specialized agency. |
|
||||
| **10 (12-month outlook)** | Map team evolution against funding-stage capability unlocks (see `funding-stage-unlocks.md`). When does the second hire come in? When does an agency relationship deepen? |
|
||||
| **11 (Marketing operations stack)** | RACI is more honest with this model: "owned by" = internal strategic role; "executed by" = internal IC, contractor, or agency. The plan should make it explicit who does what. |
|
||||
| **13 (Open decisions)** | If "first marketing hire" is open, name it as a top-three decision. If "in-house vs agency" for a specific function is open, frame the tradeoff using this doc's heuristics. |
|
||||
|
||||
## Operational guardrails
|
||||
|
||||
- **Don't title-inflate the first hire.** It paints the org into a corner.
|
||||
- **Don't outsource positioning.** Even the best agency can articulate it back to you, but only if the conviction came from the team.
|
||||
- **Don't full-time hire for a six-month sprint.** Use a contractor. The hidden cost of full-time is the months of ramp + the awkwardness of letting them go if the work doesn't compound.
|
||||
- **Don't agency-hire to delay a strategy conversation.** Agencies execute; they don't replace strategic owners. If the internal team can't tell the agency what to do, the agency can't help.
|
||||
- **Don't measure team size as a success metric.** Measure output, not headcount. A 4-person team with the right π-shaped leader and great external partners out-performs a 15-person team without strategic clarity.
|
||||
@@ -0,0 +1,256 @@
|
||||
---
|
||||
name: prospecting
|
||||
description: When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or local small businesses. Also use when the user mentions "prospecting," "build a prospect list," "find prospects," "find leads," "lead gen list," "find SaaS companies that," "find B2B companies," "find local businesses," "ICP-fit accounts," "who should we go after," "outbound list," "target account list," "find clients near me," "businesses without websites," "prospect research," or "qualified leads." Use this for the list-building and qualification phase. For writing the outbound copy after the list is built, see cold-email. For deep competitive research on specific accounts, see competitor-profiling.
|
||||
metadata:
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# Prospecting
|
||||
|
||||
You are an expert at building qualified prospect lists across three motions: B2B SaaS, general B2B, and local small businesses. Your goal is to turn an ICP definition into a verified, scored, ready-to-outreach lead sheet — using the right data sources, qualification signals, and compliance posture for each motion.
|
||||
|
||||
## Before Starting
|
||||
|
||||
**Check for product marketing context first:**
|
||||
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
||||
|
||||
## Pick the Branch
|
||||
|
||||
Prospecting motions differ enough that the workflow forks at intake. Pick **one** branch based on who the user is selling to:
|
||||
|
||||
| Branch | Sell to | What "qualified" looks like | Primary sources |
|
||||
|--------|---------|----------------------------|----------------|
|
||||
| **SaaS** | Other SaaS companies / digital businesses | ICP fit + tech stack match + growth signals (funding, hiring, product velocity) | LinkedIn, BuiltWith, Crunchbase, Apollo, Clay, Clearbit, ProductHunt |
|
||||
| **B2B** | Non-SaaS B2B (services, manufacturers, enterprises, mid-market) | Industry + size + geographic fit + buying signals (trigger events, vendor changes) | Apollo, ZoomInfo, Clay, Clearbit, LinkedIn Sales Nav, industry directories |
|
||||
| **Local SMB** | Local small businesses (shops, gyms, restaurants, clinics, salons, services) | Active business + website status + proximity + decision-maker access | Google Maps, Yelp, local directories, Facebook, business websites |
|
||||
|
||||
If the user describes a hybrid motion (e.g., "SMBs that are also SaaS"), pick the dominant branch and pull in qualification signals from the other.
|
||||
|
||||
For the branch-specific deep dives:
|
||||
- **SaaS** → see [references/saas-prospecting.md](references/saas-prospecting.md)
|
||||
- **B2B** → see [references/b2b-prospecting.md](references/b2b-prospecting.md)
|
||||
- **Local SMB** → see [references/local-prospecting.md](references/local-prospecting.md)
|
||||
|
||||
---
|
||||
|
||||
## Shared Framework (all branches)
|
||||
|
||||
Every prospecting engagement follows the same five phases. Tools and qualification signals change per branch; the phases don't.
|
||||
|
||||
### Phase 1 — Define the ICP
|
||||
|
||||
Pull from `product-marketing.md` if available. Otherwise, gather:
|
||||
|
||||
1. **Firmographic fit** — industry, company size, revenue band, geography, business model
|
||||
2. **Technographic fit** (SaaS branch) — what tools they already use, what they're missing
|
||||
3. **Buying signal** — why now? (trigger event, funding, hiring, new initiative, dissatisfaction with current vendor, recent move/expansion)
|
||||
4. **Decision-maker profile** — role, seniority, what they care about
|
||||
5. **Disqualifiers** — what makes a prospect a clear "skip"
|
||||
|
||||
Output the ICP as a one-paragraph statement plus a checklist of pass/fail criteria. Don't move to discovery without this.
|
||||
|
||||
### Phase 2 — Build the candidate list (discovery)
|
||||
|
||||
Source 2–3× more candidates than the user wants in the final list — qualification will cull aggressively.
|
||||
|
||||
- **SaaS / B2B**: combine 2–3 sources for cross-verification. Apollo or ZoomInfo for firmographics; Clearbit or Clay for enrichment; LinkedIn Sales Nav for decision-maker mapping.
|
||||
- **Local SMB**: browser-assisted research starting with Google Maps for the target category in the target area; cross-check with Yelp, the business website, social pages, and public directories.
|
||||
|
||||
If the user's list quality bar is high, smaller is better. 25 verified leads beats 250 mostly-junk ones.
|
||||
|
||||
### Phase 3 — Qualify each candidate
|
||||
|
||||
Score every candidate against the ICP checklist. Add **evidence** (a source URL or two) for each qualification — never assert without backing.
|
||||
|
||||
**Confidence levels** (used across all branches):
|
||||
- **High**: confirmed by at least two independent sources or official business page
|
||||
- **Medium**: one credible source plus consistent search evidence
|
||||
- **Low**: incomplete or ambiguous evidence — flag what remains uncertain
|
||||
|
||||
For email contacts (B2B / SaaS branches), **always verify deliverability before adding to the final list** — see Truelist integration in [references/data-sources.md](references/data-sources.md). Don't ship leads with invalid or risky emails.
|
||||
|
||||
### Phase 4 — Score and prioritize
|
||||
|
||||
Apply this rubric across all branches:
|
||||
|
||||
| Score | Definition |
|
||||
|-------|------------|
|
||||
| **Hot** | Strong ICP fit + clear buying signal + decision-maker accessible + verified contact |
|
||||
| **Warm** | ICP fit + softer or older signal + contact verifiable |
|
||||
| **Cold** | Loose ICP fit OR no clear signal OR contact unverified |
|
||||
| **Skip** | Disqualifier hit (out of ICP, closed business, duplicate, irrelevant, low confidence) |
|
||||
|
||||
Branch-specific signals refine the scoring — see each reference file. Default ratio target: ~20% Hot, ~30% Warm, rest Cold/Skip.
|
||||
|
||||
### Phase 5 — Output the lead sheet
|
||||
|
||||
Default to a markdown table in chat. Switch to CSV when the list is >25 rows or the user explicitly asks for a file.
|
||||
|
||||
After the table, always add **"Top outreach targets"** — the top 3–5 hot leads with one sentence each on why this lead should be reached out to first.
|
||||
|
||||
Columns vary by branch (see reference files), but every lead sheet includes:
|
||||
- score, business/company name, contact (where applicable), why-it's-a-prospect, source(s), confidence, last verified date
|
||||
|
||||
---
|
||||
|
||||
## Compliance Guardrails
|
||||
|
||||
These apply to every branch. **Read first, every engagement.**
|
||||
|
||||
1. **No bulk scraping** of LinkedIn, Google Maps, paywalled sites, or rate-limited APIs. Browser is an assisted research tool, not a scraper.
|
||||
2. **No CAPTCHA, login wall, or bot protection bypass.** If a site requires it, work with what's publicly visible.
|
||||
3. **Public business contact channels only.** Use info@, hello@, contact@, and named-role emails (founder, owner) where they're published on the business's own site. Personal/private emails require a lawful basis (existing relationship, opt-in, etc.).
|
||||
4. **GDPR / CAN-SPAM / CASL aware.** Capture and retain the source URL and date for every contact you add to a list — required for downstream outreach compliance.
|
||||
5. **No reselling extracted data** from Google Maps, LinkedIn, or any platform whose terms prohibit it. List building for the user's own outreach is fine; productizing the list to sell is not.
|
||||
6. **Rate limit yourself.** Even on public sources, space requests. Don't fingerprint as a bot.
|
||||
|
||||
For the full compliance reference (GDPR, CAN-SPAM, CASL, LinkedIn ToS, Google Maps ToS, Clay/Apollo/ZoomInfo use restrictions): see [references/compliance.md](references/compliance.md).
|
||||
|
||||
---
|
||||
|
||||
## Inputs to Collect
|
||||
|
||||
If missing, ask once, then infer reasonable defaults and continue:
|
||||
|
||||
- **Branch** (SaaS / B2B / Local SMB) — usually inferable from context
|
||||
- **ICP description** — pull from `product-marketing.md` if present
|
||||
- **Target count** — default 25 for SaaS / B2B, 15 for Local SMB
|
||||
- **Geography** (essential for Local SMB; useful for B2B; less critical for SaaS)
|
||||
- **Tools the user has access to** — Apollo? Clay? ZoomInfo? Hunter? Truelist? Defaults to what's free + browser
|
||||
- **Output format** — chat table (default) or CSV
|
||||
- **Buying signal preference** — what triggers should they prioritize? (funding rounds, hiring, recent move, etc.)
|
||||
|
||||
---
|
||||
|
||||
## Tool Selection Quick Picks
|
||||
|
||||
Full breakdown in [references/data-sources.md](references/data-sources.md). Quick picks:
|
||||
|
||||
| If the user has access to... | Use it for |
|
||||
|------------------------------|------------|
|
||||
| **Apollo** | B2B / SaaS firmographic + contact discovery |
|
||||
| **Clay** | Multi-source enrichment, waterfall lookups, custom scoring |
|
||||
| **Clearbit** | Email-to-company and company enrichment |
|
||||
| **ZoomInfo** | Enterprise B2B contact + intent data |
|
||||
| **Hunter or Snov** | Email pattern guessing and verification |
|
||||
| **Truelist** | Email deliverability validation (before adding to outreach list) |
|
||||
| **LinkedIn Sales Navigator** | Decision-maker mapping (manual, no scraping) |
|
||||
| **BuiltWith / Wappalyzer** | Tech stack qualification (SaaS branch) |
|
||||
| **Crunchbase** | Funding signals (SaaS branch) |
|
||||
| **GitHub** | Stargazers / forks of competitor or adjacent repos (dev-tool SaaS branch) |
|
||||
| **Google Maps + browser** | Local SMB discovery |
|
||||
| **Firecrawl / Browserbase** | Programmatic extraction from individual prospect websites — never from platforms |
|
||||
|
||||
**If the user has no enrichment tools**: lean on browser-assisted research with public sources — company website, About page, LinkedIn company page, news mentions. Slower but works.
|
||||
|
||||
---
|
||||
|
||||
## Output Formats
|
||||
|
||||
### Default — chat table
|
||||
|
||||
For SaaS / B2B (≤25 rows):
|
||||
|
||||
```
|
||||
| Score | Company | Industry | Size | Signal | Contact | Email status | Source | Confidence |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
```
|
||||
|
||||
For Local SMB (≤15 rows) — port from the local-prospector reference:
|
||||
|
||||
```
|
||||
| Score | Business | Category | Area | Website status | Website/Social | Phone | Why it's a prospect | Confidence |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
```
|
||||
|
||||
### CSV — when >25 rows or user requests a file
|
||||
|
||||
SaaS / B2B columns:
|
||||
|
||||
```csv
|
||||
score,company,domain,industry,size_band,country,signal,contact_name,contact_title,contact_email,email_status,linkedin,source_urls,why_prospect,confidence,verified_date,notes
|
||||
```
|
||||
|
||||
Local SMB columns:
|
||||
|
||||
```csv
|
||||
score,business,category,area,distance_km,website_status,website_url,social_urls,phone,email,source_urls,why_prospect,confidence,verified_date,notes
|
||||
```
|
||||
|
||||
### Always include after the table
|
||||
|
||||
- **Top outreach targets**: top 3–5 hot leads with one-sentence outreach rationale each
|
||||
- **Search parameters**: branch, ICP, location/radius, target count, date generated
|
||||
- **Open questions**: anything you couldn't verify and the user should look at
|
||||
|
||||
---
|
||||
|
||||
## Quality Checks (before finalizing)
|
||||
|
||||
- [ ] Remove duplicates (by domain for SaaS/B2B, by business + address for Local SMB)
|
||||
- [ ] Every "Hot" lead has a verified contact + at least one source URL
|
||||
- [ ] No lead has an email that failed Truelist (or your validator) verification — move to a separate "invalid" bucket and flag for the user
|
||||
- [ ] No lead labeled "Hot" lacks a clear buying signal
|
||||
- [ ] Confidence levels honest — "High" requires 2 independent sources, not just two of your own searches
|
||||
- [ ] No leads sourced from prohibited scraping (LinkedIn at scale, Google Maps bulk extract, etc.)
|
||||
- [ ] Source URL + date captured for every contact (GDPR / CAN-SPAM lineage)
|
||||
- [ ] Final count matches user's request, or you've explained why it's smaller (quality bar)
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
1. **Starting discovery without an ICP**. Build candidates against vague criteria and you'll qualify the wrong things.
|
||||
2. **Treating data sources as authoritative without cross-checks**. Apollo and ZoomInfo are out of date often; verify before scoring as "Hot."
|
||||
3. **Adding contacts without email verification**. Cold email reputation tanks fast with bounces — always validate.
|
||||
4. **Bulk scraping LinkedIn or Google Maps**. Real risk: account suspension + ToS violation. Browser as an assisted tool only.
|
||||
5. **Mixing branches**. Don't apply Local SMB scoring (website status) to a B2B SaaS prospect, or vice versa.
|
||||
6. **"Hot" labels without buying signals**. ICP fit alone is not enough — the signal is what makes the timing right.
|
||||
7. **No source URLs**. Every claim should be traceable to a public source. Future outreach depends on this lineage.
|
||||
8. **Ignoring quiet hours / time zone** when scheduling the downstream outreach (handoff to cold-email).
|
||||
9. **Forgetting to retain consent / lineage records**. Required for GDPR DSARs and CAN-SPAM audits.
|
||||
|
||||
---
|
||||
|
||||
## Task-Specific Questions
|
||||
|
||||
1. Which branch — SaaS, B2B, or Local SMB?
|
||||
2. What's your ICP? (Or: should I pull from your product-marketing context?)
|
||||
3. How many qualified leads do you want?
|
||||
4. What tools do you have access to (Apollo / Clay / ZoomInfo / Hunter / Truelist / browser only)?
|
||||
5. What's the triggering buying signal you care most about?
|
||||
6. Geography or radius (Local SMB / B2B)?
|
||||
7. Chat table or CSV?
|
||||
|
||||
---
|
||||
|
||||
## Tool Integrations
|
||||
|
||||
For implementation, see the [tools registry](../../tools/REGISTRY.md). Key prospecting tools:
|
||||
|
||||
| Tool | Best For | MCP | Guide |
|
||||
|------|----------|:---:|-------|
|
||||
| **Apollo** | B2B / SaaS firmographic + contact discovery | - | [apollo.md](../../tools/integrations/apollo.md) |
|
||||
| **Clay** | Multi-source enrichment + waterfall | ✓ | [clay.md](../../tools/integrations/clay.md) |
|
||||
| **Clearbit** | Email-to-company enrichment | - | [clearbit.md](../../tools/integrations/clearbit.md) |
|
||||
| **ZoomInfo** | Enterprise B2B contact + intent | ✓ | [zoominfo.md](../../tools/integrations/zoominfo.md) |
|
||||
| **Hunter** | Email pattern + verification | - | [hunter.md](../../tools/integrations/hunter.md) |
|
||||
| **Snov** | Email finder + verifier | - | [snov.md](../../tools/integrations/snov.md) |
|
||||
| **Truelist** | Email deliverability validation | - | [truelist.md](../../tools/integrations/truelist.md) |
|
||||
| **Outreach** | Sales engagement (post-list) | ✓ | [outreach.md](../../tools/integrations/outreach.md) |
|
||||
| **RB2B** | Visitor identification (warm intent) | - | [rb2b.md](../../tools/integrations/rb2b.md) |
|
||||
| **GitHub** | Stargazers/forks/watchers as developer-intent signal | - | [github.md](../../tools/integrations/github.md) |
|
||||
| **Firecrawl** | Single-target site extraction (prospect's own website) | ✓ | [firecrawl.md](../../tools/integrations/firecrawl.md) |
|
||||
| **Browserbase** | Real-browser site research when rendering or interaction needed | ✓ | [browserbase.md](../../tools/integrations/browserbase.md) |
|
||||
|
||||
---
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **cold-email**: For writing outbound sequences against the qualified list (the natural next step after prospecting)
|
||||
- **customer-research**: For understanding why current customers buy — informs the ICP definition
|
||||
- **competitor-profiling**: For deeper research on individual accounts (different from list-building qualification)
|
||||
- **revops**: For lead routing, lifecycle, and CRM handoff after prospecting
|
||||
- **sales-enablement**: For battle cards and one-pagers used in the outreach
|
||||
- **directory-submissions**: For inbound discovery surfaces (the prospects might find you back)
|
||||
- **product-marketing**: For the ICP definition that anchors every prospecting engagement
|
||||
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"skill_name": "prospecting",
|
||||
"evals": [
|
||||
{
|
||||
"id": 1,
|
||||
"prompt": "We're a B2B SaaS selling RevOps tooling at $30K ACV. Build me a list of 25 prospects.",
|
||||
"expected_output": "Should check for product-marketing.md first. Should identify this as the SaaS branch. Should run Phase 1 ICP definition pulling from product-marketing context or asking targeted questions (target industry, headcount range, tech stack signals, funding stage). Should propose discovery sources appropriate for SaaS at $30K ACV: Apollo for breadth, Clay for waterfall enrichment, Crunchbase for funding signals, BuiltWith/Wappalyzer for tech stack, LinkedIn Sales Nav for decision-mapping (manual). Should ask about user's tool access before assuming. Should source 50-75 candidates (2-3x target) before qualifying. Should flag that email validation via Truelist or similar is non-negotiable before final list. Should output SaaS-branch chat table columns (Score | Company | Industry | Size | Signal | Contact | Email status | Confidence) followed by top 3-5 hot leads with one-sentence rationale each. Should reference references/saas-prospecting.md.",
|
||||
"assertions": [
|
||||
"Checks for product-marketing.md",
|
||||
"Identifies SaaS branch",
|
||||
"Runs Phase 1 ICP definition",
|
||||
"Recommends multi-source discovery (Apollo, Clay, Crunchbase, BuiltWith)",
|
||||
"Asks about user's tool access",
|
||||
"Sources 2-3x candidates before qualifying",
|
||||
"Requires email validation before final list",
|
||||
"Outputs SaaS-branch chat table columns",
|
||||
"Includes top 3-5 outreach targets with rationale",
|
||||
"References saas-prospecting.md"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"prompt": "Find me 25 SaaS companies that just raised a Series B in the last 60 days and use HubSpot.",
|
||||
"expected_output": "Should recognize this as a SaaS branch prospecting task with very specific signals. Should identify the trigger event (Series B in last 60 days) and the technographic filter (uses HubSpot). Should recommend a workflow: (1) Crunchbase or Pitchbook for funding signal filter (Series B + date), (2) BuiltWith or Clay's waterfall for tech stack verification (uses HubSpot), (3) cross-check via business websites and LinkedIn. Should note this is a tight ICP that should yield high-confidence matches if data sources are current. Should flag freshness concerns: Crunchbase data depends on self-reporting, BuiltWith refresh cycles aren't real-time. Should recommend cross-source verification for the funding date specifically. Should output a SaaS-branch chat table with the funding round + date in the Signal column. Should include verified email validation before delivering.",
|
||||
"assertions": [
|
||||
"Identifies as SaaS branch",
|
||||
"Identifies funding signal + tech stack filter",
|
||||
"Recommends Crunchbase or Pitchbook for funding",
|
||||
"Recommends BuiltWith or Clay for HubSpot verification",
|
||||
"Notes data freshness concerns",
|
||||
"Recommends cross-source verification",
|
||||
"Outputs signal column showing round + date",
|
||||
"Requires email validation"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"prompt": "I run a marketing agency. Find me 25 mid-market manufacturers in the Midwest US who recently hired a new CMO.",
|
||||
"expected_output": "Should identify this as the B2B branch (manufacturers, not SaaS). Should run Phase 1 ICP definition: industry (manufacturing, with NAICS code if precision matters), size (mid-market = typically 200-2000 employees), geography (Midwest US states), trigger event (CMO hire in last 90-180 days). Should propose discovery: Apollo or ZoomInfo for firmographic filter, LinkedIn Sales Nav for CMO hire detection (job changes), Google Alerts on press releases for trigger events. Should warn that CMO hires aren't always in public databases — LinkedIn Sales Nav alerts on job changes is the most reliable source. Should output B2B-branch chat table with the CMO trigger as the signal. Should reference references/b2b-prospecting.md. Should mention compliance: GDPR less likely (US-only), CAN-SPAM applies, capture source URL + date for every contact.",
|
||||
"assertions": [
|
||||
"Identifies B2B branch (not SaaS)",
|
||||
"Runs Phase 1 ICP definition with NAICS or industry classification",
|
||||
"Specifies mid-market size band",
|
||||
"Specifies Midwest US geography",
|
||||
"Identifies trigger event (CMO hire)",
|
||||
"Recommends Apollo/ZoomInfo + LinkedIn Sales Nav",
|
||||
"Notes CMO hires often only on LinkedIn",
|
||||
"Outputs B2B-branch chat table",
|
||||
"Mentions CAN-SPAM and source URL capture",
|
||||
"References b2b-prospecting.md"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"prompt": "We sell to industrial distributors. Build a list of 25 prospects.",
|
||||
"expected_output": "Should identify this as the B2B branch. Should run Phase 1 ICP definition asking targeted questions: distributor size, geography, vertical specialty, buying patterns. Should propose discovery: Apollo or ZoomInfo for firmographic depth, industry-specific directories (e.g., NAW for wholesale distributors, ISA for industrial sales agencies), trade show exhibitor lists. Should note state business registries and Chamber of Commerce as verification sources. Should propose trigger events: new location, recent acquisition, leadership change, posting RFPs. Should warn that industrial distributor data is often spotty in major databases — cross-check with company website + LinkedIn for size and ownership signals. Should output B2B-branch chat table. Should note ICP fit precision matters more than initial volume for this kind of niche prospecting.",
|
||||
"assertions": [
|
||||
"Identifies B2B branch",
|
||||
"Runs Phase 1 ICP definition asking targeted questions",
|
||||
"Recommends industry-specific directories beyond Apollo/ZoomInfo",
|
||||
"Mentions trade show exhibitor lists",
|
||||
"Identifies relevant trigger events",
|
||||
"Warns about data spottiness for industrial",
|
||||
"Recommends cross-verification with business websites + LinkedIn",
|
||||
"Notes ICP fit precision over volume"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"prompt": "I build websites for local businesses. Find me 15 prospects near Austin, TX who don't have a website.",
|
||||
"expected_output": "Should identify as Local SMB branch. Should run Phase 1 ICP definition: business category (ask user — gyms, restaurants, salons, etc. matter), radius (default 20 km from Austin), target count (15). Should run the browser research workflow: search Google Maps for category + Austin, build candidate list from visible results, cross-check via business name + city web search to verify website status. Should apply the 4-tier website status classification (No site found / Social only / Weak site / Has site) — prioritize No site + Social only as Hot. Should score: Hot (no site + active + phone + within radius), Warm (weak site), Cold (has site), Skip (closed/duplicate/out of scope). Should output Local SMB chat table (Score | Business | Category | Area | Distance | Website status | Website/Social | Phone | Why prospect | Confidence). Should add 'Best first outreach targets' top 3 with reasoning. Should reference references/local-prospecting.md. Should warn against bulk-scraping Google Maps (ToS violation) — browser-assisted research only.",
|
||||
"assertions": [
|
||||
"Identifies Local SMB branch",
|
||||
"Asks about business category if not specified",
|
||||
"Defaults radius to 20km",
|
||||
"Runs browser research workflow",
|
||||
"Applies 4-tier website status classification",
|
||||
"Uses Hot/Warm/Cold/Skip scoring",
|
||||
"Outputs Local SMB chat table columns",
|
||||
"Adds top 3 outreach targets",
|
||||
"References local-prospecting.md",
|
||||
"Warns against bulk-scraping Google Maps"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"prompt": "I have a list of 200 prospect emails from Apollo. How do I know which ones are deliverable before I start outreach?",
|
||||
"expected_output": "Should explain the deliverability validation step in Phase 3. Should recommend Truelist (the integration in this pack) for bulk validation. Should explain the email_state classification output: ok (deliverable), email_invalid (bounces, exclude), risky (deliverable with risk like role or disposable, include cautiously), unknown (couldn't determine, skip or re-verify), accept_all (catch-all domain, include cautiously). Should warn that Apollo data accuracy is typically 60-80% — sending without validation will tank sender reputation (bounce rate >2% triggers ISP throttling and reputation damage). Should recommend the workflow: bulk POST to /api/v1/verify or CSV upload → keep ok, include risky/accept_all cautiously, exclude email_invalid, re-verify unknown → hand off to outreach. Should note Truelist also has an official MCP server for agent-driven validation. Should note cold email reputation is hard to recover once damaged — validation is non-negotiable, not optional. Should mention Hunter and Snov as alternatives with built-in verification. Should reference truelist.md integration guide.",
|
||||
"assertions": [
|
||||
"Recommends Truelist for bulk validation",
|
||||
"Explains email_state values (ok, email_invalid, risky, unknown, accept_all)",
|
||||
"Warns Apollo accuracy is 60-80%",
|
||||
"Cites 2% bounce rate threshold for reputation damage",
|
||||
"Recommends workflow: validate, keep ok, exclude email_invalid",
|
||||
"Mentions Truelist MCP server for agent workflows",
|
||||
"Mentions cold email reputation is hard to recover",
|
||||
"References truelist.md or data-sources.md"
|
||||
],
|
||||
"files": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
# B2B Prospecting Reference
|
||||
|
||||
For when the user sells to non-SaaS B2B — services, agencies, manufacturers, mid-market and enterprise companies, professional services firms.
|
||||
|
||||
---
|
||||
|
||||
## ICP Signals That Matter (B2B branch)
|
||||
|
||||
### Firmographic signals
|
||||
|
||||
- **Industry / vertical** — NAICS or SIC codes if precision matters
|
||||
- **Company size** — headcount band, revenue band, location count
|
||||
- **Geography** — relevant for time zones, regulations, on-site requirements
|
||||
- **Business model** — service vs product vs distribution; B2B vs B2B2C
|
||||
- **Ownership** — independent, PE-backed, public, family-owned — affects buying motion
|
||||
|
||||
### Buying signals
|
||||
|
||||
- **Trigger events**: new C-level hire, recent acquisition or divestiture, IPO/funding, opening a new location, recent rebrand, expansion announcement
|
||||
- **Vendor signals**: posting RFPs publicly, switching costs in last quarterly report, contract renewal windows
|
||||
- **Operational signals**: recent layoffs (cost pressure) or rapid hiring (capacity pressure)
|
||||
- **News mentions**: launching new initiative, entering new market, regulatory change forcing action
|
||||
- **PR / press**: anything that signals "this company is changing right now"
|
||||
|
||||
### Decay signals
|
||||
|
||||
- Multiple bankruptcies or PE-stripped operations
|
||||
- Negative growth + cost-cutting headlines
|
||||
- Ownership stagnation (small family-owned, no growth incentive)
|
||||
- Buyer turnover (3+ Marketing Directors in 2 years)
|
||||
|
||||
---
|
||||
|
||||
## Discovery Sources (B2B branch)
|
||||
|
||||
### Tier 1 — primary discovery
|
||||
|
||||
- **Apollo**: best general B2B firmographic + contact discovery
|
||||
- **ZoomInfo**: enterprise B2B + intent signals (mid-market+)
|
||||
- **LinkedIn Sales Navigator**: industry + role + signal search; the gold standard for decision-maker mapping (manual)
|
||||
- **Clay**: when you need custom waterfall lookups (e.g., enrich Apollo records with Hunter + Clearbit)
|
||||
|
||||
### Tier 2 — industry-specific directories
|
||||
|
||||
- **Crunchbase / Pitchbook**: funded businesses
|
||||
- **D&B Hoovers**: large traditional B2B firmographics
|
||||
- **State / national business registries**: for verified incorporation data
|
||||
- **Industry association membership rosters**: trade groups often publish member lists
|
||||
- **Trade show exhibitor lists**: signals active participation in a vertical
|
||||
- **Procurement databases** (Procore for construction, e.g.): vertical-specific signals
|
||||
|
||||
### Tier 3 — trigger event monitoring
|
||||
|
||||
- **Google Alerts / Feedly**: trigger keywords ("acquired," "hires," "expansion," "raises," "announces")
|
||||
- **PR Newswire / Business Wire**: company-controlled announcements
|
||||
- **SEC filings** (public companies): material change disclosures
|
||||
- **State filings**: new entity formation, dissolution
|
||||
|
||||
---
|
||||
|
||||
## Qualification Checklist (B2B branch)
|
||||
|
||||
- [ ] Industry / vertical matches ICP (use a recognized classification if possible)
|
||||
- [ ] Company size within range (employees or revenue)
|
||||
- [ ] Geography fits
|
||||
- [ ] At least one trigger event in last 90–180 days
|
||||
- [ ] Decision-maker role exists (CEO, COO, VP Operations, Director of X — match buyer profile)
|
||||
- [ ] Email contact verifiable (named role > info@ catchall)
|
||||
- [ ] Source URLs captured for firmographic claims
|
||||
- [ ] No disqualifiers (closed, acquired-paused, multi-bankrupt, off-ICP)
|
||||
|
||||
---
|
||||
|
||||
## Output Columns (B2B branch)
|
||||
|
||||
Recommended CSV columns:
|
||||
|
||||
```csv
|
||||
score,company,domain,industry,naics_code,size_band,revenue_band,country,city,trigger_event,trigger_date,contact_name,contact_title,contact_email,email_status,linkedin_url,source_urls,why_prospect,confidence,verified_date,notes
|
||||
```
|
||||
|
||||
For chat table, condense to: Score | Company | Industry | Size | Trigger | Contact | Email status | Confidence.
|
||||
|
||||
---
|
||||
|
||||
## Top Outreach Targets Selection (B2B)
|
||||
|
||||
Prioritize for the top 3–5 hot leads:
|
||||
|
||||
1. **Trigger event recency** — 30 days beats 6 months
|
||||
2. **Trigger event specificity** — new CMO hire in your buyer's role beats "company in the news"
|
||||
3. **Decision-maker access** — named contact with verified email + LinkedIn beats role-only
|
||||
4. **Vertical fit precision** — exact NAICS match beats "adjacent industry"
|
||||
|
||||
Each top target rationale names the trigger and decision-maker: "Hired new VP of Marketing 14 days ago; verified email; mid-market manufacturer matching ICP."
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes (B2B)
|
||||
|
||||
1. **Treating B2B like SaaS** — funding rounds matter less; PE ownership and acquisition activity matter more.
|
||||
2. **Trying to verify private company revenue precisely** — most public databases approximate. Use size bands, not point estimates.
|
||||
3. **Ignoring procurement complexity** at enterprise scale — your prospect contact list may not include the actual approver.
|
||||
4. **Cold-emailing executive assistants** — they're not the buyer and they will flag your outreach as spam.
|
||||
5. **Source URL hygiene** — without source lineage, you can't defend a contact under GDPR DSAR or CAN-SPAM challenge.
|
||||
6. **Stopping at one source** — Apollo can be 60% accurate on small businesses. Cross-verify with LinkedIn or the business website.
|
||||
@@ -0,0 +1,123 @@
|
||||
# Prospecting Compliance Reference
|
||||
|
||||
The legal and platform-ToS constraints that apply to prospect list building. Read first, every engagement.
|
||||
|
||||
> Operational guidance, not legal advice. For high-volume programs or programs touching EU/UK residents, run your setup past a privacy attorney.
|
||||
|
||||
---
|
||||
|
||||
## United States — CAN-SPAM (downstream)
|
||||
|
||||
CAN-SPAM regulates the cold email **send**, not the list build. But the list build matters because:
|
||||
|
||||
- You must be able to identify the source of every email address you contact (required if challenged)
|
||||
- The "from" line and email content rules apply at send time — but you can't lie about how you got the contact
|
||||
- Opt-out requests must be honored within 10 business days and tracked
|
||||
|
||||
**For prospecting specifically**: capture and retain the source URL + date for every contact you add to a list. CAN-SPAM doesn't require it explicitly, but defending your sender practices does.
|
||||
|
||||
---
|
||||
|
||||
## EU / UK — GDPR
|
||||
|
||||
The strictest applicable framework. Triggers when:
|
||||
|
||||
- Your prospect resides in EU/UK
|
||||
- You're processing personal data (any identifiable info, including business emails tied to a named person)
|
||||
|
||||
### Lawful bases for cold B2B outreach
|
||||
|
||||
You have three credible options:
|
||||
|
||||
1. **Legitimate interest** (most common for B2B). Requires:
|
||||
- The contact is in a business role likely to be interested in your offer
|
||||
- The data was collected from a public, business-context source
|
||||
- You provide a clear opt-out
|
||||
- You can articulate the legitimate interest test in writing
|
||||
|
||||
2. **Consent** — typically not feasible for cold outreach (you don't have consent before first contact)
|
||||
|
||||
3. **Existing customer relationship** — only applies to current customers, not prospects
|
||||
|
||||
### What you must do
|
||||
|
||||
- Capture **source + date + lawful basis** for every contact
|
||||
- Honor data subject access requests (DSARs) — you must be able to disclose, correct, or delete on request
|
||||
- Include a privacy notice / opt-out in the first outreach
|
||||
- Don't store personal data longer than necessary for the legitimate interest
|
||||
|
||||
### What disqualifies a list
|
||||
|
||||
- Bulk-scraped LinkedIn data — explicit ToS violation + GDPR risk
|
||||
- Email addresses purchased from a list broker without source provenance
|
||||
- "Anyone @ this domain" guessed emails sent without verification (multiplies risk + bounces)
|
||||
|
||||
---
|
||||
|
||||
## Canada — CASL
|
||||
|
||||
Stricter than CAN-SPAM. Cold B2B outreach requires:
|
||||
|
||||
- **Express consent** (explicit opt-in) — typically not present for cold prospecting
|
||||
- **OR implied consent** — existing business relationship within 24 months, OR business address publicly published on the company's own site for the purpose of receiving such communications
|
||||
|
||||
**Practical implication for Canadian prospects**: relying on the publicly-published-address exception is the most defensible cold prospecting basis in Canada. You must include sender identification, mailing address, and an unsubscribe mechanism in every message.
|
||||
|
||||
---
|
||||
|
||||
## Platform Terms of Service
|
||||
|
||||
### LinkedIn
|
||||
|
||||
- **Sales Navigator** as a research tool: fine
|
||||
- **Scraping LinkedIn at any scale**: explicit ToS violation. Banned accounts are permanent. Don't.
|
||||
- **Apollo, Clay, and ZoomInfo** claim LinkedIn-overlap data through various legitimate channels — verify their data sources before assuming compliance
|
||||
- **InMail and Connection Requests**: governed by LinkedIn's own messaging rules, not by CAN-SPAM/GDPR (because LinkedIn-internal)
|
||||
|
||||
### Google Maps
|
||||
|
||||
- ToS prohibits bulk extraction or productizing Maps data
|
||||
- Browser-assisted research as a discovery aid: acceptable
|
||||
- Storing Place IDs or large structured Maps data in your CRM: explicit ToS prohibition
|
||||
- Use Maps to **find** local businesses, then cross-source from the business's own site for the data you retain
|
||||
|
||||
### Apollo / ZoomInfo / Clearbit
|
||||
|
||||
- All have their own ToS limiting reselling, downstream sharing, and use cases
|
||||
- Read your contract — typically you can use the data for your own outreach but not productize it
|
||||
- Don't share extracts publicly (e.g., on a leaderboard, in a public report)
|
||||
|
||||
### Crunchbase
|
||||
|
||||
- Free tier is read-only for personal use
|
||||
- Paid tier permits broader use within contractual scope
|
||||
- API access requires paid Pro+ tier
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns (Don't Do These)
|
||||
|
||||
1. **Bulk-scraping LinkedIn / Google Maps / Yelp**. Browser-assisted research is OK; automated scrapers pointed at these platforms are not. **Firecrawl and Browserbase are fine for an individual prospect's own website** (the URL you found through manual discovery) — not for the platforms hosting prospects.
|
||||
2. **Buying lists from random vendors** without source provenance. You inherit their legal exposure.
|
||||
3. **Guessing emails and sending unverified**. Bounce rates over 2% destroy sender reputation; legally, you can't claim a "legitimate interest" basis for an email you fabricated.
|
||||
4. **Harvesting personal email addresses** (Gmail, personal Outlook, etc.) from public profiles. Personal addresses raise GDPR risk significantly.
|
||||
5. **Storing data you don't need**. Minimize retention. Don't keep prospect lists forever — GDPR right to deletion applies.
|
||||
6. **Skipping the lawful basis documentation**. If challenged, you need to show your work. Capture source URL + collection date for every contact.
|
||||
7. **Reselling prospect lists**. You may not have the right to share them downstream. Read your data provider contracts.
|
||||
8. **CAPTCHA bypass / login wall bypass**. Even if technically possible, this signals bot behavior and violates virtually every ToS.
|
||||
|
||||
---
|
||||
|
||||
## Quick Audit Checklist
|
||||
|
||||
Before shipping a list to the user (or downstream to cold-email):
|
||||
|
||||
- [ ] Every contact has a source URL + collection date
|
||||
- [ ] No contacts sourced from scraped LinkedIn data
|
||||
- [ ] No Google Maps Place IDs or large Maps-structured data retained
|
||||
- [ ] Lawful basis documented (legitimate interest test for B2B, or relevant alternative)
|
||||
- [ ] Email addresses validated (deliverability check before outreach)
|
||||
- [ ] Personal addresses (Gmail, etc.) flagged or excluded
|
||||
- [ ] Source provider contracts permit the intended use case
|
||||
- [ ] Retention plan documented (when to delete)
|
||||
- [ ] First outreach will include unsubscribe + privacy notice (downstream concern for cold-email skill, but mention it now)
|
||||
@@ -0,0 +1,287 @@
|
||||
# Prospecting Data Sources
|
||||
|
||||
Tool selection guide for prospecting across all three branches.
|
||||
|
||||
---
|
||||
|
||||
## Tool selection by goal
|
||||
|
||||
| Goal | Primary tools | Notes |
|
||||
|------|--------------|-------|
|
||||
| **Build initial firmographic list (B2B / SaaS)** | Apollo, ZoomInfo, Clay | Apollo for breadth, ZoomInfo for enterprise + intent, Clay for custom workflows |
|
||||
| **Decision-maker mapping** | LinkedIn Sales Navigator (manual), Apollo, ZoomInfo | Sales Nav is the gold standard. Never bulk scrape it. |
|
||||
| **Tech stack qualification (SaaS)** | BuiltWith, Wappalyzer | BuiltWith has wider coverage + paid plans for bulk; Wappalyzer is lighter + free for small use |
|
||||
| **Funding signals (SaaS)** | Crunchbase, Pitchbook | Crunchbase free tier sufficient for early signals; Pitchbook for deeper investor data |
|
||||
| **Email pattern discovery** | Hunter, Snov, Apollo | Pattern guessing — followed by verification |
|
||||
| **Email deliverability verification** | Truelist, Hunter, NeverBounce, ZeroBounce | Always verify before adding to outreach lists |
|
||||
| **Visitor identification (warm intent)** | RB2B, Clearbit Reveal | Anonymous traffic → company identification |
|
||||
| **Intent data** | ZoomInfo Intent, 6sense, Bombora | Pre-warmed signals; mid-market+ pricing |
|
||||
| **Trigger event monitoring** | Google Alerts, Feedly, LinkedIn Sales Nav alerts | Free options are sufficient for most |
|
||||
| **Local business discovery** | Google Maps (manual), Yelp, Facebook Pages | Browser-assisted, not bulk-extracted |
|
||||
|
||||
---
|
||||
|
||||
## Apollo
|
||||
|
||||
**Use for**: General B2B / SaaS firmographic + contact data. Best starting point if you don't already have a list.
|
||||
|
||||
**Strengths**:
|
||||
- Large database (>200M contacts, >60M companies)
|
||||
- Strong filtering UI (industry, size, technologies, signals)
|
||||
- Integrated email + LinkedIn finder
|
||||
- Pay-as-you-go and tiered plans
|
||||
|
||||
**Watch out for**:
|
||||
- Data freshness varies — re-verify before scoring as "Hot"
|
||||
- Email accuracy ~60–80% — always validate
|
||||
- Bulk export limits apply
|
||||
|
||||
**Integration**: see [apollo.md](../../../tools/integrations/apollo.md)
|
||||
|
||||
---
|
||||
|
||||
## Clay
|
||||
|
||||
**Use for**: Multi-source enrichment, waterfall lookups, custom scoring logic. When list quality matters more than list size.
|
||||
|
||||
**Strengths**:
|
||||
- Waterfall logic: try Apollo first → fallback to ZoomInfo → fallback to Clearbit
|
||||
- 100+ data provider integrations
|
||||
- AI-powered enrichment (LLM-driven extraction from URLs)
|
||||
- Custom columns + scoring formulas
|
||||
- Native MCP server
|
||||
|
||||
**Watch out for**:
|
||||
- Per-credit pricing can spike on large lists
|
||||
- Complexity overhead — easy to over-engineer workflows
|
||||
|
||||
**Integration**: see [clay.md](../../../tools/integrations/clay.md)
|
||||
|
||||
---
|
||||
|
||||
## ZoomInfo
|
||||
|
||||
**Use for**: Enterprise B2B + intent data. Mid-market+ buyer profiles.
|
||||
|
||||
**Strengths**:
|
||||
- Enterprise-grade firmographic depth
|
||||
- Intent signals (companies searching topics relevant to your offer)
|
||||
- Best-in-class for >$50K ACV B2B sales
|
||||
- Native MCP server
|
||||
|
||||
**Watch out for**:
|
||||
- Expensive ($15K+/yr starter)
|
||||
- Overkill for SMB prospecting
|
||||
- Locked into multi-year contracts typically
|
||||
|
||||
**Integration**: see [zoominfo.md](../../../tools/integrations/zoominfo.md)
|
||||
|
||||
---
|
||||
|
||||
## Clearbit
|
||||
|
||||
**Use for**: Email → company enrichment, anonymous visitor identification (Clearbit Reveal).
|
||||
|
||||
**Strengths**:
|
||||
- Strong company enrichment (industry, size, funding, tech stack)
|
||||
- Email lookup by domain
|
||||
- Reveal: identify anonymous site visitors at company level
|
||||
- API-first
|
||||
|
||||
**Watch out for**:
|
||||
- HubSpot acquisition (2023) — bundled into HubSpot Breeze Intelligence now
|
||||
- Standalone API still available but pricing/access depends on tier
|
||||
|
||||
**Integration**: see [clearbit.md](../../../tools/integrations/clearbit.md)
|
||||
|
||||
---
|
||||
|
||||
## Hunter / Snov
|
||||
|
||||
**Use for**: Email pattern discovery + lightweight verification on small lists.
|
||||
|
||||
**Hunter strengths**:
|
||||
- Domain-based email discovery
|
||||
- Built-in deliverability verification
|
||||
- Free tier reasonable for occasional use
|
||||
|
||||
**Snov strengths**:
|
||||
- Email finder + drip campaigns (overlap with outreach tooling)
|
||||
- Bulk verification
|
||||
- Cheaper than Hunter at scale
|
||||
|
||||
**Watch out for**:
|
||||
- Both are pattern-guessing tools — accuracy depends on the target company's email pattern being inferable
|
||||
- Always run results through a dedicated validator (Truelist or similar) before outreach
|
||||
|
||||
**Integrations**: see [hunter.md](../../../tools/integrations/hunter.md), [snov.md](../../../tools/integrations/snov.md)
|
||||
|
||||
---
|
||||
|
||||
## Truelist
|
||||
|
||||
**Use for**: Email deliverability validation before adding contacts to outreach lists. Critical safety step.
|
||||
|
||||
**Strengths**:
|
||||
- Single-email sync verification (`/api/v1/verify_inline`) + bulk async (`/api/v1/verify`)
|
||||
- Returns `email_state` (ok / email_invalid / risky / unknown / accept_all) + `email_sub_state` (email_ok / is_disposable / is_role / unknown_error / failed_smtp_check) + did-you-mean typo suggestions
|
||||
- Catches catch-all domains, role accounts, spam traps, disposable providers
|
||||
- Official MCP server for agent-driven workflows (Claude, Cursor, VS Code)
|
||||
- Official SDKs in 7 languages + framework integrations (Django, Laravel, Next.js, Rails, React, Svelte, Vue, WordPress)
|
||||
- Native integrations with Mailchimp, Klaviyo, HubSpot, Zapier, Make, n8n, Clay, Salesforce, more
|
||||
- Pay-per-email pricing
|
||||
|
||||
**Why this matters**: Cold email reputation craters when bounce rates exceed 2%. Validating before sending is non-negotiable. Apollo/ZoomInfo/Hunter data is often 60–80% accurate — Truelist catches the rest.
|
||||
|
||||
**Integration**: see [truelist.md](../../../tools/integrations/truelist.md)
|
||||
|
||||
---
|
||||
|
||||
## LinkedIn Sales Navigator
|
||||
|
||||
**Use for**: Manual decision-maker discovery. The gold standard for B2B / SaaS prospecting but only when used as a research tool.
|
||||
|
||||
**Strengths**:
|
||||
- Most accurate decision-maker data in the industry
|
||||
- Real-time job changes, posts, signals
|
||||
- Lead lists, alerts, saved searches
|
||||
- Inmail credits (separate channel from cold email)
|
||||
|
||||
**Hard rules**:
|
||||
- **Never bulk scrape**. LinkedIn aggressively bans scrapers. Account ban risk is real and permanent.
|
||||
- Use Sales Nav as a research interface — open profiles, read, take notes, capture key data manually.
|
||||
- Apollo and other tools claim LinkedIn data via partnerships / public mirroring — verify the source legitimacy before assuming compliance.
|
||||
|
||||
**Integration**: no MCP or API access at consumer level. Manual research only.
|
||||
|
||||
---
|
||||
|
||||
## BuiltWith / Wappalyzer
|
||||
|
||||
**Use for**: Tech stack qualification (SaaS branch).
|
||||
|
||||
**BuiltWith**:
|
||||
- ~50K+ technologies tracked
|
||||
- API + bulk lookups (paid)
|
||||
- Historical data (when stack changed)
|
||||
|
||||
**Wappalyzer**:
|
||||
- Free browser extension; paid API
|
||||
- Lighter coverage than BuiltWith
|
||||
- Faster for one-off lookups
|
||||
|
||||
Cross-reference both for high-confidence tech stack signals.
|
||||
|
||||
---
|
||||
|
||||
## Crunchbase
|
||||
|
||||
**Use for**: Funding signals (SaaS branch).
|
||||
|
||||
**Strengths**:
|
||||
- Free tier shows recent funding events
|
||||
- Paid (Pro / Enterprise) unlocks alerts and deep history
|
||||
- API access for paid users
|
||||
|
||||
**Watch out for**:
|
||||
- Coverage is best for VC-backed companies; bootstrapped + small businesses underrepresented
|
||||
- Self-reported data — verify funding amounts independently
|
||||
|
||||
---
|
||||
|
||||
## GitHub (stargazers / forks / watchers)
|
||||
|
||||
**Use for**: Developer-intent prospecting. Especially powerful for dev-tool SaaS — stargazers of competitor or category-defining repos are in-market signal.
|
||||
|
||||
**Strengths**:
|
||||
- Public API, no scraping concerns
|
||||
- High signal quality (a starred repo = explicit interest)
|
||||
- Forks are an even stronger signal (intent to modify, not just bookmark)
|
||||
- Bundled `github-prospects.js` CLI handles pagination + enrichment + CSV output
|
||||
- Free with 5,000 req/hr authenticated rate limit
|
||||
|
||||
**Watch out for**:
|
||||
- Only ~5–20% of users publish email — pair with Apollo/Clay/Hunter for enrichment
|
||||
- Very-popular repos (100K+ stars) are mostly noise; smaller targeted repos (5K–25K) give better signal density
|
||||
- Most prospects are individuals, not company contacts directly — need to figure out their company from `company` field or LinkedIn
|
||||
|
||||
**Integration**: see [github.md](../../../tools/integrations/github.md)
|
||||
|
||||
---
|
||||
|
||||
## Firecrawl / Browserbase (single-target site research)
|
||||
|
||||
**Use for**: Programmatically extracting content from a **prospect's own website** that you already found via discovery on platforms like Google Maps, Yelp, or LinkedIn. Not for scraping those platforms themselves.
|
||||
|
||||
### Firecrawl
|
||||
|
||||
- **Best for**: "Just give me the page as markdown" — Local SMB website status checks, B2B company about/team page extraction, structured field extraction
|
||||
- **Strengths**: Low overhead, returns clean LLM-ready markdown, handles most JS-rendered sites, has an MCP server
|
||||
- **API + MCP + SDKs**: Node, Python, Go, Rust
|
||||
|
||||
### Browserbase
|
||||
|
||||
- **Best for**: When you need real Chromium — JS-heavy pages, cookie consent dialogs, form submission to reach a contact page, session state
|
||||
- **Strengths**: Full browser control via Playwright/Puppeteer; Stagehand provides AI-friendly natural-language extraction; session recordings for debugging
|
||||
- **API + MCP (Stagehand) + SDKs**: Node, Python
|
||||
|
||||
### Critical compliance line
|
||||
|
||||
Both tools can technically point at any URL. The hard rule:
|
||||
|
||||
- ✓ **OK**: extracting content from a single business's own website (`joescoffeeshop.com`) that you found through manual discovery
|
||||
- ✗ **NOT OK**: pointing them at `google.com/maps`, LinkedIn search results, Yelp listings, or any platform whose ToS prohibits bulk extraction
|
||||
|
||||
Discovery happens on platforms (manual browser-assisted research). Extraction happens on individual public business sites.
|
||||
|
||||
**Integrations**: see [firecrawl.md](../../../tools/integrations/firecrawl.md), [browserbase.md](../../../tools/integrations/browserbase.md)
|
||||
|
||||
---
|
||||
|
||||
## RB2B / Clearbit Reveal
|
||||
|
||||
**Use for**: Identifying anonymous site visitors as warm intent signals.
|
||||
|
||||
**Strengths**:
|
||||
- Pixel-based visitor → company identification
|
||||
- High-intent: they came to your site, they're already in research mode
|
||||
- Slack / email alerts on key visits
|
||||
|
||||
**Watch out for**:
|
||||
- Privacy/GDPR considerations — verify your privacy policy disclosures
|
||||
- Person-level identification raises higher concerns than company-level
|
||||
|
||||
**Integration**: see [rb2b.md](../../../tools/integrations/rb2b.md)
|
||||
|
||||
---
|
||||
|
||||
## Free / browser-only fallbacks
|
||||
|
||||
When the user has no paid tools, lean on:
|
||||
|
||||
- **Google Search** — exact business name + city + role searches
|
||||
- **LinkedIn** (manual, no scraping) — company pages, employee lookups
|
||||
- **Crunchbase free tier** — funding events
|
||||
- **Wappalyzer browser extension** — tech stack at a glance
|
||||
- **Hunter.io free tier** — 25 lookups/month
|
||||
- **Google Maps** — for Local SMB discovery
|
||||
- **Business websites + About pages** — primary source for any claim
|
||||
- **News sites + press releases** — trigger event monitoring via Google Alerts
|
||||
|
||||
Slower than tooled-up workflows, but produces high-quality smaller lists if the user is willing to do the work.
|
||||
|
||||
---
|
||||
|
||||
## Sequencing recommendations
|
||||
|
||||
A typical full-stack prospecting workflow:
|
||||
|
||||
1. **Define ICP** from product-marketing context (no tools needed)
|
||||
2. **Initial list** from Apollo or ZoomInfo (firmographic filter)
|
||||
3. **Enrich** with Clay (waterfall: tech stack, funding, trigger events)
|
||||
4. **Decision-maker mapping** in LinkedIn Sales Nav (manual)
|
||||
5. **Email pattern discovery** with Hunter or Apollo's built-in
|
||||
6. **Email validation** with Truelist before final list
|
||||
7. **Hand off** to cold-email skill for outreach copy
|
||||
|
||||
Adapt this sequence based on which tools the user actually has.
|
||||
@@ -0,0 +1,165 @@
|
||||
# Local SMB Prospecting Reference
|
||||
|
||||
For when the user sells to local small businesses — shops, gyms, restaurants, salons, clinics, professional services, contractors, real estate, fitness studios, dental practices.
|
||||
|
||||
Adapted from and generalized beyond the local-client-prospector pattern (browser-assisted discovery + website status classification + proximity scoring).
|
||||
|
||||
---
|
||||
|
||||
## ICP Signals That Matter (Local SMB branch)
|
||||
|
||||
### Operational signals
|
||||
|
||||
- **Active business** — Google Business Profile updated, recent reviews, recent hours updates
|
||||
- **Recent activity** — open right now, regular hours posted, recent photos uploaded by owner
|
||||
- **Customer engagement** — owner responding to reviews, posts on social, active calendar (for service businesses)
|
||||
|
||||
### Online presence signals (the core SMB qualification axis)
|
||||
|
||||
The reference local-client-prospector skill uses **website status** as the primary qualification — port this directly. Four classifications:
|
||||
|
||||
| Status | Definition | Typical outcome |
|
||||
|--------|-----------|-----------------|
|
||||
| **No site found** | No credible standalone website after cross-checked search | **Hot prospect** for web/marketing service |
|
||||
| **Social only** | Facebook, Instagram, WhatsApp, Linktree, booking portal, marketplace page only — no standalone site | **Hot prospect** for web/marketing service |
|
||||
| **Weak site** | Standalone site exists but outdated, broken, very thin, non-mobile-friendly, or missing clear contact/conversion flow | **Warm prospect** for refresh / rebuild service |
|
||||
| **Has site** | Credible, modern standalone site exists | **Low prospect** unless other signals apply (e.g., poor SEO, weak conversion design) |
|
||||
|
||||
### Proximity signals
|
||||
|
||||
- **Distance** from the user's location or service area
|
||||
- **Density** — clusters of similar businesses in one area = neighborhood targeting opportunity
|
||||
- **Travel time** — useful when in-person discovery, install, or service delivery is required
|
||||
|
||||
### Decay signals
|
||||
|
||||
- Closed permanently (Google Maps banner)
|
||||
- Reviews paused or business listing reported as closed
|
||||
- Last activity (review, post) >12 months ago
|
||||
|
||||
---
|
||||
|
||||
## Discovery Sources (Local SMB branch)
|
||||
|
||||
### Primary
|
||||
|
||||
- **Google Maps** (browser, manual) — search "category near [location]" and walk the visible results. Cross-check details. Don't bulk-extract.
|
||||
- **Yelp** — secondary verification; complementary categories
|
||||
- **Bing Local / Apple Maps** — different coverage on smaller businesses
|
||||
- **Facebook Pages search** — many SMBs are Facebook-only
|
||||
|
||||
### Cross-verification
|
||||
|
||||
- **Business's own website** (if any)
|
||||
- **Industry directories** (e.g., Healthgrades for medical, OpenTable for restaurants, Avvo for legal)
|
||||
- **Local Chamber of Commerce listings**
|
||||
- **State business registries** for incorporation status
|
||||
- **Search results for "[business name] [city]"** to discover non-Maps presence
|
||||
|
||||
---
|
||||
|
||||
## Browser Research Workflow
|
||||
|
||||
1. Open a browser and search Google Maps for the category near `base_location`
|
||||
2. Build a candidate list from visible local results, search results, and public directories
|
||||
3. For each candidate, inspect public sources to fill required fields
|
||||
4. Search the exact business name plus city/town to check whether a standalone website exists
|
||||
5. Classify website status per the table above
|
||||
6. Mark confidence: High (2+ sources), Medium (1 source + consistent evidence), Low (incomplete/ambiguous)
|
||||
|
||||
When the user explicitly asks for subagents AND subagents are available, split candidates into non-overlapping batches and ask each subagent to verify only website/social/contact status. Don't use subagents for the primary search if it slows progress.
|
||||
|
||||
### Optional: programmatic verification with Firecrawl or Browserbase
|
||||
|
||||
Once you have a candidate's website URL (found via manual Maps/Yelp discovery), you can speed up website-status classification by hitting the URL programmatically:
|
||||
|
||||
- **Firecrawl** for simple "is this site live, modern, mobile-friendly, conversion-flow-equipped" reads — returns clean markdown you can inspect
|
||||
- **Browserbase** when the candidate site requires JS rendering, has a cookie consent dialog, or you need session state
|
||||
|
||||
**Strict line**: use these on the individual business's URL. **Don't** point them at Google Maps, Yelp, or any platform whose ToS prohibits bulk extraction — discovery stays manual.
|
||||
|
||||
See [data-sources.md](data-sources.md) for setup details.
|
||||
|
||||
---
|
||||
|
||||
## Qualification Checklist (Local SMB branch)
|
||||
|
||||
- [ ] Business is active (recent reviews or activity in last 6 months)
|
||||
- [ ] Category matches user's service offering
|
||||
- [ ] Distance / proximity within target radius
|
||||
- [ ] Website status classified
|
||||
- [ ] Phone or contact channel verified
|
||||
- [ ] At least one cross-source confirms business operates at the listed address
|
||||
- [ ] Not a duplicate / chain location / out-of-scope category
|
||||
- [ ] Not closed permanently
|
||||
|
||||
---
|
||||
|
||||
## Lead Scoring (Local SMB)
|
||||
|
||||
Use this simple rubric (matches local-client-prospector pattern):
|
||||
|
||||
| Score | Criteria |
|
||||
|-------|----------|
|
||||
| **Hot** | No site found OR social-only + phone present + active business + within target radius |
|
||||
| **Warm** | Weak site, poor online presentation, or marketplace/booking-page only |
|
||||
| **Cold** | Good website already present OR low confidence |
|
||||
| **Skip** | Closed, duplicate, outside radius, irrelevant category, or not a business prospect |
|
||||
|
||||
---
|
||||
|
||||
## Output Columns (Local SMB branch)
|
||||
|
||||
Chat table (≤15 rows):
|
||||
|
||||
```
|
||||
| Score | Business | Category | Area | Distance | Website status | Website/Social | Phone | Why it's a prospect | Confidence |
|
||||
```
|
||||
|
||||
CSV:
|
||||
|
||||
```csv
|
||||
score,business,category,area,distance_km,website_status,website_url,social_urls,phone,email,source_urls,why_prospect,confidence,verified_date,notes
|
||||
```
|
||||
|
||||
Rules:
|
||||
- Keep "Why it's a prospect" short and actionable
|
||||
- Use `Not found` instead of leaving blank fields
|
||||
- Include source links sparingly, not all of them
|
||||
- After the table, add **Best first outreach targets** with the top 3 leads and one practical reason each
|
||||
- If confidence is low, state exactly what remains uncertain
|
||||
|
||||
---
|
||||
|
||||
## Top Outreach Targets Selection (Local SMB)
|
||||
|
||||
Prioritize for the top 3 hot leads:
|
||||
|
||||
1. **No site / social only + phone present** = clearest service opportunity
|
||||
2. **High review count** = active, established business with real customers
|
||||
3. **Owner-responded reviews** = engaged owner = more likely to evaluate a vendor
|
||||
4. **Industry alignment with your service specialty** beats generic category match
|
||||
|
||||
Each top target rationale should be one sentence naming the gap and the signal: "No standalone website (cross-checked); 80+ Google reviews with owner replies; 2 km from target area."
|
||||
|
||||
---
|
||||
|
||||
## Compliance Notes (Local SMB-specific)
|
||||
|
||||
The local branch is the most scraping-sensitive of the three motions. Specifically:
|
||||
|
||||
- **Google Maps Terms of Service** prohibit bulk extraction. Treat browser visits as research, not as data acquisition.
|
||||
- **Don't store full Google Maps Place IDs in your CRM** — the ToS limits storage of Maps data.
|
||||
- **Public business contact channels only**: published phone, contact form, info@ email. Don't reach individual employees through their personal channels.
|
||||
- **Owner/operator name when published on the business's own site** is OK to use. If you only got it from LinkedIn, mark the source.
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes (Local SMB)
|
||||
|
||||
1. **Bulk-scraping Google Maps** — fastest way to violate ToS and lose the research channel.
|
||||
2. **Treating Google Maps data as truth** — listings go stale. Cross-check hours, status, and reviews.
|
||||
3. **Skipping the website status cross-check** — finding "no site" on Maps doesn't mean no site exists; do an exact-name web search before classifying.
|
||||
4. **Targeting only the largest businesses** — they're already covered by other providers. The 2–5 employee SMBs are the under-served opportunity.
|
||||
5. **Generic outreach to all hot leads** — local SMBs respond better to outreach that names their specific gap ("I noticed your menu isn't visible on mobile") than generic pitches.
|
||||
6. **Ignoring chains and franchises** as Skip — sometimes the franchisee is the buyer and they have local marketing authority. Verify before skipping.
|
||||
@@ -0,0 +1,123 @@
|
||||
# SaaS Prospecting Reference
|
||||
|
||||
For when the user sells SaaS or digital services to other SaaS companies / digital businesses.
|
||||
|
||||
---
|
||||
|
||||
## ICP Signals That Matter (SaaS branch)
|
||||
|
||||
Beyond standard firmographics (industry, size, geography), SaaS prospects are qualified by:
|
||||
|
||||
### Technographic signals
|
||||
|
||||
- **Tech stack** — do they use complementary tools (your integration target) or competing tools (a switch opportunity)?
|
||||
- **Recent stack changes** — adding/removing tools signals active vendor evaluation
|
||||
- **Custom-built vs off-the-shelf** — DIY tooling often means a buyer who'd benefit from your product
|
||||
- **Free/freemium plan signals** — using a free competitor means they may be ready to upgrade
|
||||
|
||||
### Growth signals
|
||||
|
||||
- **Funding round** — Series A / B / C in last 6 months = budget + new hires + tool needs
|
||||
- **Headcount growth** — 10%+ growth in last quarter signals scaling pressure
|
||||
- **Hiring signals** — specific role openings (e.g., "Head of RevOps" → ICP for revops tooling)
|
||||
- **Product velocity** — frequent shipping, new features, blog posts = healthy growth motion
|
||||
- **Open positions for your buyer's role** — if you sell to Marketing Ops and they're hiring one, that's a signal
|
||||
|
||||
### Decay signals (downgrade scoring)
|
||||
|
||||
- Layoffs in target department
|
||||
- Funding round >2 years ago with no follow-up
|
||||
- Product hasn't shipped in 6+ months
|
||||
- Team page shows founders only (very early — may not have budget)
|
||||
|
||||
---
|
||||
|
||||
## Discovery Sources (SaaS branch)
|
||||
|
||||
Combine 2+ sources for cross-verification.
|
||||
|
||||
### Tier 1 — primary discovery
|
||||
|
||||
- **Apollo**: firmographic + technographic + contact data. Good for building large initial lists.
|
||||
- **Clay**: waterfall enrichment, custom scoring, multi-source merges. Best for high-quality smaller lists.
|
||||
- **ZoomInfo**: enterprise-grade firmographic + intent signals. Expensive; mid-market+.
|
||||
- **LinkedIn Sales Navigator**: decision-maker mapping. Use manually, never bulk scrape.
|
||||
|
||||
### Tier 2 — technographic / growth signals
|
||||
|
||||
- **BuiltWith**: tech stack lookups, find sites using specific tools
|
||||
- **Wappalyzer**: free browser extension + API; lighter tech stack signal
|
||||
- **Crunchbase**: funding rounds, headcount, founders
|
||||
- **Pitchbook**: deeper investor data (enterprise/paid)
|
||||
- **ProductHunt**: recent launches, builder audience
|
||||
- **Hacker News / Show HN**: technical builders launching products
|
||||
|
||||
### Tier 3 — buying signals
|
||||
|
||||
- **Job boards** (LinkedIn Jobs, Indeed, AngelList): role openings as signals
|
||||
- **RB2B / Clearbit Reveal**: visitor identification (warm anonymous traffic)
|
||||
- **GitHub stars/forks of competitor or adjacent repos**: developer-level intent signal (see `tools/integrations/github.md` and the `github-prospects.js` CLI). Especially strong for dev-tool SaaS — a developer who starred `vercel/next.js` last week is in-market for adjacent Next.js infrastructure.
|
||||
- **Recent blog posts / changelog**: product direction signals
|
||||
- **G2 reviews mentioning competitor switches**: explicit dissatisfaction signal
|
||||
|
||||
#### GitHub prospecting pattern (when audience is developers)
|
||||
|
||||
For dev-tool SaaS, GitHub is one of the highest-quality discovery channels:
|
||||
|
||||
1. Identify 3–5 "anchor" repos: your direct competitors, your category leader, complementary tools your buyer uses
|
||||
2. Pull stargazers (or forks for stronger intent) via `node tools/clis/github-prospects.js stargazers <owner/repo> --enrich --with-company --format csv`
|
||||
3. Filter to users with `company` set — these are the easiest to enrich downstream
|
||||
4. Pair with Apollo/Clay/Hunter to lookup email by name + company
|
||||
5. Validate with Truelist before adding to outreach list
|
||||
|
||||
Tradeoffs: GitHub yields email for only ~5–20% of users directly. The strength is the signal quality — a stargazer of a niche dev tool is genuinely in-market in a way Apollo firmographics alone can't tell you.
|
||||
|
||||
---
|
||||
|
||||
## Qualification Checklist (SaaS branch)
|
||||
|
||||
For each candidate, verify:
|
||||
|
||||
- [ ] Industry vertical matches ICP
|
||||
- [ ] Company size (headcount) within range
|
||||
- [ ] Tech stack includes (or notably excludes) a target technology
|
||||
- [ ] Funding stage matches buyer maturity
|
||||
- [ ] At least one growth signal in last 90 days (funding, hiring, product velocity)
|
||||
- [ ] Decision-maker role exists at the company (named or inferable from job listings)
|
||||
- [ ] Email contact verifiable
|
||||
- [ ] No disqualifiers (closed, acquired-and-paused, layoffs, ICP miss)
|
||||
|
||||
---
|
||||
|
||||
## Output Columns (SaaS branch)
|
||||
|
||||
Recommended CSV columns:
|
||||
|
||||
```csv
|
||||
score,company,domain,industry,size_band,country,funding_stage,last_round_date,tech_stack_match,signal,signal_date,contact_name,contact_title,contact_email,email_status,linkedin_url,source_urls,why_prospect,confidence,verified_date,notes
|
||||
```
|
||||
|
||||
For chat table, condense to: Score | Company | Industry | Size | Signal | Contact | Email status | Confidence.
|
||||
|
||||
---
|
||||
|
||||
## Top Outreach Targets Selection (SaaS)
|
||||
|
||||
Prioritize for the top 3–5 hot leads:
|
||||
|
||||
1. **Strongest signal recency** — funding 30 days ago beats funding 9 months ago
|
||||
2. **Tech stack match strength** — known integration partner beats inferred fit
|
||||
3. **Decision-maker named with verified email** — beats role-pattern-guessed email
|
||||
4. **Multi-source confidence** — both Apollo + Crunchbase agree beats one source
|
||||
|
||||
Each top target gets a one-sentence outreach rationale that names the specific signal: "Raised Series B 30 days ago; hiring Head of RevOps; verified VP of Ops email."
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes (SaaS)
|
||||
|
||||
1. **Buying lists from Apollo wholesale** without re-verifying email and re-checking firmographics. Stale data is the norm.
|
||||
2. **Treating tech stack data as 100% accurate**. BuiltWith and Wappalyzer miss things; Clay's waterfalls miss things. Cross-check.
|
||||
3. **Targeting Series C+ for early-stage SaaS sellers**. The buyer profile is wrong — too many procurement hoops, too much red tape.
|
||||
4. **Targeting Series Pre-Seed seed** for products requiring meaningful budget. They have neither budget nor evaluator bandwidth.
|
||||
5. **Ignoring intent data when it exists** (ZoomInfo Intent, 6sense, etc.) — pre-warm signals beat cold every time.
|
||||
@@ -0,0 +1,338 @@
|
||||
---
|
||||
name: sms
|
||||
description: When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends, or transactional/auth SMS. Also use when the user mentions "SMS marketing," "text message campaigns," "SMS sequence," "SMS automation," "abandoned cart text," "post-purchase SMS," "Klaviyo SMS," "Postscript," "Attentive," "Twilio," "A2P 10DLC," "TCPA," "SMS compliance," "short code," "toll-free SMS," "MMS campaign," "should I do SMS," or "SMS vs email." For email sequences, see emails. For SMS copy framing, see copywriting. For opt-in popups that capture phone numbers, see popups.
|
||||
metadata:
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# SMS Marketing
|
||||
|
||||
You are an expert in SMS and MMS marketing for direct-to-consumer brands, mobile apps, and SaaS products with high-engagement use cases. Your goal is to help plan, build, and optimize SMS programs that drive measurable revenue or activation while staying fully compliant with TCPA and carrier rules.
|
||||
|
||||
## Before Starting
|
||||
|
||||
**Check for product marketing context first:**
|
||||
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
||||
|
||||
Gather this context (ask if not provided):
|
||||
|
||||
### 1. Business Type
|
||||
- B2C ecom / DTC, B2B SaaS, mobile app, services, fintech
|
||||
- Order volume or list size (SMS economics depend on scale)
|
||||
- Geographic mix (US, EU, both — compliance differs dramatically)
|
||||
|
||||
### 2. Current State
|
||||
- Existing SMS program (platform, list size, opt-in rate, opt-out rate, revenue/send)
|
||||
- Email program (SMS works best as a layer on top, not a replacement)
|
||||
- Phone number type: short code, toll-free, long code (10DLC)
|
||||
|
||||
### 3. Compliance Posture
|
||||
- US: A2P 10DLC registration complete? (Required since 2022 — without it, your messages get filtered)
|
||||
- Opt-in mechanism in use? (Checkbox, keyword opt-in, double opt-in)
|
||||
- Privacy policy + terms include SMS disclosures?
|
||||
|
||||
### 4. Goal
|
||||
- Drive revenue (promotional, cart recovery, post-purchase)
|
||||
- Drive activation (welcome, onboarding, milestone nudges)
|
||||
- Transactional (order updates, auth codes, alerts)
|
||||
|
||||
---
|
||||
|
||||
## When SMS Beats Email
|
||||
|
||||
SMS is not "another email." Use it where the channel's properties win:
|
||||
|
||||
| Use Case | SMS or Email? | Why |
|
||||
|----------|---------------|-----|
|
||||
| Abandoned cart recovery | **SMS first** | 98% open rate within 3 min vs 20% for email in 24h |
|
||||
| Order/shipping updates | **SMS** | Customers want it now, on their phone |
|
||||
| Flash sale / limited drop | **SMS** | Urgency channel; immediate read |
|
||||
| Auth codes / 2FA | **SMS** (or app) | Latency-sensitive, must arrive in seconds |
|
||||
| Welcome series | **Email primary, SMS layer** | Email carries the long-form content |
|
||||
| Educational nurture | **Email** | Too much text for SMS, costs add up |
|
||||
| Newsletter | **Email** | Wrong channel for SMS |
|
||||
| Win-back lapsed customers | **Both** | SMS for the strong nudge, email for the offer detail |
|
||||
| Post-purchase upsell | **SMS** | High open rate, ride the purchase momentum |
|
||||
|
||||
**General rule**: SMS earns the right to interrupt because of opt-in. Use it for messages that genuinely benefit from immediacy. If it could wait 24 hours, send it via email.
|
||||
|
||||
---
|
||||
|
||||
## Compliance — Read First
|
||||
|
||||
**Compliance is the foundation, not an afterthought.** A single TCPA class-action settlement runs $5M–$40M. The basics:
|
||||
|
||||
### US — TCPA (Telephone Consumer Protection Act)
|
||||
|
||||
1. **Express written consent** required for marketing SMS. Implied consent doesn't count.
|
||||
2. **Clear disclosure at opt-in** must include: program name, frequency expectation ("up to 4 msgs/month"), STOP/HELP instructions, "Msg & data rates may apply," link to terms.
|
||||
3. **Honor STOP/UNSUBSCRIBE within seconds**, every time, no exceptions, on every keyword variant (STOP, END, CANCEL, UNSUBSCRIBE, QUIT).
|
||||
4. **Honor HELP** with a response containing brand name + STOP info + support contact.
|
||||
5. **Quiet hours**: no marketing sends before 8am or after 9pm in the recipient's local time. Carrier rules and state laws (e.g., Florida, Oklahoma, Washington) are stricter than federal — default to 9am–8pm recipient-local.
|
||||
6. **Keep written consent records** with timestamp, opt-in source, and exact disclosure text shown. Auditable.
|
||||
|
||||
### US — A2P 10DLC Registration (required since 2022)
|
||||
|
||||
Application-to-Person 10-digit long codes must be registered through The Campaign Registry (TCR) via your SMS platform. Without registration:
|
||||
- Throughput is throttled (or zero)
|
||||
- Carriers filter your messages
|
||||
- You'll see "delivered" status but recipients won't get them
|
||||
|
||||
**Registration covers**: brand identity verification, campaign use case (marketing, account notification, OTP, etc.), sample messages, opt-in mechanism, opt-out language. Sample message text from registration must match what you actually send.
|
||||
|
||||
### EU/UK — GDPR-derived consent
|
||||
|
||||
- Explicit opt-in required (no pre-checked boxes)
|
||||
- Right to withdraw consent must be as easy as giving it
|
||||
- Data subject access requests apply to SMS records
|
||||
- ePrivacy Directive layered on top of GDPR
|
||||
|
||||
### Canada — CASL
|
||||
|
||||
- Express consent + sender identification + unsubscribe in every message
|
||||
- Implied consent allowed for existing business relationships within 24 months
|
||||
- Penalties up to CAD $10M per violation
|
||||
|
||||
**For full compliance details, edge cases, opt-in copy templates, and STOP/HELP response templates**: see [references/compliance.md](references/compliance.md).
|
||||
|
||||
---
|
||||
|
||||
## Phone Number Types (US)
|
||||
|
||||
| Type | Throughput | Cost | Use Case | Trust |
|
||||
|------|-----------|------|----------|-------|
|
||||
| **Short code (5-6 digit)** | 100+ msg/sec | $500–$1,000/mo + setup | High-volume marketing | Highest (carrier-vetted) |
|
||||
| **Toll-free (1-8XX)** | ~3 msg/sec | $10–$30/mo | Mid-volume, B2C support | Medium-high (carrier-verified) |
|
||||
| **10DLC (regular long code)** | 1–250 msg/sec | $2–$10/mo | SMB, conversational, transactional | Medium (requires A2P 10DLC reg) |
|
||||
|
||||
**Rule of thumb**: list <10K = 10DLC. List 10K–100K = toll-free. List 100K+ = short code.
|
||||
|
||||
---
|
||||
|
||||
## Core Principles
|
||||
|
||||
### 1. Every send has a real cost
|
||||
SMS isn't free. At $0.0075–$0.04 per send + carrier fees, a 100K send costs $750–$4,000. This forces relevance — you can't "blast." Segment hard.
|
||||
|
||||
### 2. Opt-in is your most valuable asset
|
||||
Opt-in rate from email → SMS is typically 5–25%. A high-quality SMS list of 10K beats a low-quality list of 100K. Optimize opt-in quality, not volume.
|
||||
|
||||
### 3. Each message must justify itself
|
||||
The recipient gave you their phone number. Every send should pass: "would I be glad I got this text?" If no, don't send.
|
||||
|
||||
### 4. Brevity + clarity
|
||||
160 GSM-7 characters = 1 SMS segment. 161+ chars = 2 segments (you're billed for 2). Emojis force UCS-2 encoding (70 chars per segment). Plan for segment count.
|
||||
|
||||
### 5. One CTA, one link
|
||||
Short links are mandatory (`klvy.co`, `txt.attn.tv`, branded short domain). Track UTM params on every link.
|
||||
|
||||
### 6. Sender identity, every send
|
||||
"From [Brand]:" or branded short code at the start of every message. Even on automated flows. Recipients can't see "from" address — they need it inline.
|
||||
|
||||
---
|
||||
|
||||
## SMS Sequence Types
|
||||
|
||||
### Welcome / Opt-In Confirmation (immediate)
|
||||
|
||||
Send 1: Confirmation + reward (immediate)
|
||||
> From Acme: Thanks for joining! Here's 10% off: ACME10. Use at checkout: acme.co/sale. Reply STOP to opt out.
|
||||
|
||||
Optional Send 2 (24h later): Reminder + best-seller showcase
|
||||
|
||||
### Abandoned Cart (highest-ROI flow for ecom)
|
||||
|
||||
- Send 1 (30 min after abandon): "Forget something? Your cart's still here: [short link]"
|
||||
- Send 2 (4 hours later): Soft urgency + social proof
|
||||
- Send 3 (24 hours later, optional): Discount offer (only if margin allows)
|
||||
|
||||
**Note**: Discount on first message trains customers to abandon. Reserve discount for Send 2 or 3.
|
||||
|
||||
### Browse Abandonment
|
||||
|
||||
- Send 1 (1 hour after browse): Product + "Thinking it over?" + link
|
||||
|
||||
### Post-Purchase
|
||||
|
||||
- Send 1 (immediate): Order confirmation + delivery ETA (transactional, separate consent OK)
|
||||
- Send 2 (after delivery + 2 days): "How are you liking [product]?" + review prompt + cross-sell
|
||||
|
||||
### Win-Back (lapsed)
|
||||
|
||||
- Send 1 (60–90 days after last purchase): "We miss you" + curated picks
|
||||
- Send 2 (14 days later): Discount offer
|
||||
- Send 3 (final, 14 days later): Opt-out warning + last chance
|
||||
|
||||
### Promotional / Campaign Sends
|
||||
|
||||
- Flash sales, drops, launches, BFCM
|
||||
- 1–2 sends max per campaign
|
||||
- Stack against email send schedule to avoid same-day double-tap
|
||||
|
||||
### Transactional (separate compliance bucket)
|
||||
|
||||
- Order updates, shipping, delivery, auth codes, account alerts
|
||||
- Generally OK without separate marketing consent if directly related to a transaction the user initiated
|
||||
- Still subject to A2P 10DLC registration in US
|
||||
|
||||
**For full sequence templates with copy and timing**: see [references/sequence-templates.md](references/sequence-templates.md).
|
||||
|
||||
---
|
||||
|
||||
## SMS Copy Guidelines
|
||||
|
||||
### Structure
|
||||
1. **Sender ID** ("From Acme:" or brand short code) — required
|
||||
2. **Hook** — first 5 words decide if they read on
|
||||
3. **Value** — what's in it for them, specifically
|
||||
4. **CTA + short link** — single action, single URL
|
||||
5. **Compliance footer** — "Reply STOP to opt out" (required on opt-in confirmation and at least quarterly thereafter; carrier-recommended on every promotional message)
|
||||
|
||||
### Length
|
||||
|
||||
- **160 chars (GSM-7)** = 1 segment. Aim here.
|
||||
- **70 chars (UCS-2)** if you use emojis, accented characters, or curly quotes — you'll pay for more segments.
|
||||
- **161–306 chars** = 2 segments (concatenated SMS). Acceptable for richer messages, but you're paying double per send.
|
||||
- **MMS** (image + up to 1,600 chars) = 3–5× the SMS cost. Use sparingly for high-impact moments.
|
||||
|
||||
### Voice
|
||||
|
||||
- Conversational, not corporate. SMS feels personal — write like you're texting a friend.
|
||||
- No subject line, no formatting, no marketing-speak.
|
||||
- Emojis are fine in moderation (one per message, situationally).
|
||||
- ALL CAPS reads as shouting. Avoid except for explicit codes (e.g., "Use ACME10").
|
||||
|
||||
### Personalization
|
||||
|
||||
- First name token if available (boosts CTR ~20%)
|
||||
- Recent product/category browse-based
|
||||
- Location-based offers (where applicable)
|
||||
- Don't fake intimacy ("Hey friend!") — it backfires
|
||||
|
||||
**For complete copy patterns by sequence type with character counts**: see [references/sequence-templates.md](references/sequence-templates.md).
|
||||
|
||||
---
|
||||
|
||||
## Platform Selection
|
||||
|
||||
| Platform | Best For | Native MCP | Cost Tier |
|
||||
|----------|----------|:---:|-----------|
|
||||
| **Klaviyo SMS** | DTC ecom already on Klaviyo email | ✓ | $$ |
|
||||
| **Postscript** | DTC Shopify ecom, deep integration | - | $$ |
|
||||
| **Attentive** | Mid-market+ ecom, full-service | - | $$$ |
|
||||
| **Twilio** | Custom builds, transactional, devs | - | $ (raw API) |
|
||||
| **Brevo SMS** | EU-focused, email + SMS combo | ✓ | $ |
|
||||
| **SimpleTexting** | SMB, simple needs, ease of use | - | $ |
|
||||
| **Customer.io** | Behavior-based automation + SMS | - | $$ |
|
||||
|
||||
**Quick picks**:
|
||||
- Already on Klaviyo for email + DTC/ecom → **Klaviyo SMS** (no second platform to learn)
|
||||
- Shopify ecom, want deeper SMS-specific features → **Postscript**
|
||||
- Building custom SMS into a product → **Twilio**
|
||||
- B2B SaaS doing transactional/auth → **Twilio** or **Customer.io**
|
||||
|
||||
**For platform deep-dives (features, pricing, integration paths, A2P registration)**: see [references/platforms.md](references/platforms.md).
|
||||
|
||||
---
|
||||
|
||||
## Measurement
|
||||
|
||||
### Key Metrics
|
||||
|
||||
| Metric | What it tells you | Healthy range (ecom DTC) |
|
||||
|--------|-------------------|--------------------------|
|
||||
| **Opt-in rate** | Top of funnel health | 5–25% of email subscribers |
|
||||
| **CTR** | Message relevance | 8–15% (vs ~3% email) |
|
||||
| **Conversion rate (per send)** | Revenue impact | 1–5% per promotional send |
|
||||
| **Revenue per send (RPS)** | Channel economics | $0.20–$2.00 |
|
||||
| **Opt-out rate per send** | Audience fatigue | <2% per send, <0.5% for promotional |
|
||||
| **Cost per send** | Channel cost discipline | $0.0075–$0.04 |
|
||||
| **List growth rate** | Audience momentum | 5–15%/month early, 1–3% steady-state |
|
||||
|
||||
### What to track in analytics
|
||||
|
||||
- UTM tag every link: `utm_source=sms&utm_medium=sms&utm_campaign=[campaign-name]`
|
||||
- Conversion attribution: SMS-driven sessions, last-click revenue, assisted conversions
|
||||
- LTV impact: SMS subscribers vs email-only subscribers (typically 1.5–3× LTV for SMS opt-ins)
|
||||
|
||||
### What to A/B test
|
||||
|
||||
- Send time (afternoon vs evening, local time)
|
||||
- Copy length (short SMS vs MMS with image)
|
||||
- Discount amount and trigger (immediate vs delayed)
|
||||
- Personalization tokens (with first name vs without)
|
||||
- CTA copy ("Shop now" vs "See it" vs "Last chance")
|
||||
|
||||
Cross-reference **ab-testing** skill for proper test design and **analytics** for attribution setup.
|
||||
|
||||
---
|
||||
|
||||
## Output Format
|
||||
|
||||
When the user asks for an SMS plan, return:
|
||||
|
||||
1. **Compliance check**: Are they registered for A2P 10DLC (if US)? Is the opt-in mechanism compliant? Flag blockers first.
|
||||
2. **Strategy**: Which SMS flows to build first, ranked by ROI for their business model.
|
||||
3. **Sequence designs**: For each priority flow, specify trigger, delay, copy with character counts, CTA, segmentation.
|
||||
4. **Platform recommendation**: Based on stack, list size, and complexity.
|
||||
5. **Measurement plan**: KPIs, benchmarks, A/B test queue.
|
||||
6. **Compliance footer**: Required disclosures, STOP/HELP response templates.
|
||||
|
||||
Keep recommendations specific. Don't say "send an SMS at the right time" — say "send 30 min after cart abandon, 4 hours later if no purchase, 24 hours later with discount."
|
||||
|
||||
---
|
||||
|
||||
## Task-Specific Questions
|
||||
|
||||
1. Are you US, EU, or both? (Changes compliance approach entirely.)
|
||||
2. Is A2P 10DLC registration complete (US)?
|
||||
3. What platform are you on or considering?
|
||||
4. Email list size and SMS opt-in rate (if any)?
|
||||
5. What sequences do you already have running?
|
||||
6. Are you DTC ecom, mobile app, B2B SaaS, services?
|
||||
7. What's the primary goal: revenue, activation, retention, or transactional?
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
1. **Skipping A2P 10DLC registration** — your messages get filtered into oblivion. Register first, send second.
|
||||
2. **Treating SMS like email** — sending daily promotional blasts. Opt-out rates spike, list dies.
|
||||
3. **Discount on first abandoned cart message** — trains customers to always abandon. Reserve for second or third send.
|
||||
4. **Generic "From: [shortcode]"** — recipients need brand name in the message itself.
|
||||
5. **Forgetting quiet hours** — sending at 6 AM local time gets opt-outs and TCPA complaints.
|
||||
6. **No STOP/HELP handling** — non-negotiable. Every platform handles this; verify yours does.
|
||||
7. **Emojis everywhere** — pushes you into UCS-2 encoding, halves segment size, doubles cost.
|
||||
8. **Mismatching A2P sample messages and actual sends** — carriers flag and block.
|
||||
9. **Not tracking conversions** — you can't justify channel ROI without attribution.
|
||||
10. **No throttling on bulk sends** — burst sends trigger carrier filtering. Use platform throttling.
|
||||
|
||||
---
|
||||
|
||||
## Tool Integrations
|
||||
|
||||
For implementation, see the [tools registry](../../tools/REGISTRY.md). Key SMS tools:
|
||||
|
||||
| Tool | Best For | MCP | Guide |
|
||||
|------|----------|:---:|-------|
|
||||
| **Klaviyo** | E-commerce email + SMS combined | ✓ | [klaviyo.md](../../tools/integrations/klaviyo.md) |
|
||||
| **Postscript** | Shopify DTC SMS, deepest Shopify integration | - | [postscript.md](../../tools/integrations/postscript.md) |
|
||||
| **Attentive** | Mid-market+ DTC SMS, full-service | - | [attentive.md](../../tools/integrations/attentive.md) |
|
||||
| **Twilio** | Raw API for custom builds, transactional, dev-first | - | [twilio.md](../../tools/integrations/twilio.md) |
|
||||
| **Plivo** | Twilio alternative, lower per-send cost | - | [plivo.md](../../tools/integrations/plivo.md) |
|
||||
| **AudienceTap** | AI-forward DTC, on-pack QR opt-in | - | [audiencetap.md](../../tools/integrations/audiencetap.md) |
|
||||
| **Brevo** | EU email + SMS, SMB-friendly | ✓ | [brevo.md](../../tools/integrations/brevo.md) |
|
||||
| **Customer.io** | Behavior-based SMS automation | - | [customer-io.md](../../tools/integrations/customer-io.md) |
|
||||
|
||||
---
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **emails**: Sister channel — almost always run together. Email carries the long-form content; SMS carries the urgent nudges.
|
||||
- **copywriting**: For SMS copy at scale and the longer-form pages/emails that SMS links to.
|
||||
- **popups**: For phone number capture popups on-site.
|
||||
- **churn-prevention**: For win-back flows that combine SMS + email.
|
||||
- **onboarding**: For post-signup SMS milestone nudges.
|
||||
- **analytics**: For attribution and RPS measurement.
|
||||
- **ab-testing**: For SMS-specific test design.
|
||||
- **lead-magnets**: For incentivizing opt-in (the "10% off for joining" offer).
|
||||
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"skill_name": "sms",
|
||||
"evals": [
|
||||
{
|
||||
"id": 1,
|
||||
"prompt": "We're a Shopify DTC brand doing $5M/year in skincare. We have 80K email subscribers but no SMS program yet. Where do we start?",
|
||||
"expected_output": "Should check for product-marketing.md first. Should run Phase 0 compliance check: are they US-based, is A2P 10DLC registration started, is the opt-in mechanism planned. Should recommend Klaviyo SMS or Postscript given Shopify + DTC ecom (Klaviyo if already on Klaviyo email, Postscript for SMS-first depth). Should rank flows by ROI for skincare: (1) abandoned cart sequence first (highest-ROI flow), (2) post-purchase + replenishment (skincare has predictable cycles), (3) welcome opt-in flow with capture incentive, (4) win-back at 60-90 days. Should warn about treating SMS like email (frequency cap, relevance bar, real per-send cost ~$0.0075-$0.04). Should reference compliance.md for opt-in disclosure language and quiet hours.",
|
||||
"assertions": [
|
||||
"Checks for product-marketing.md",
|
||||
"Runs compliance/A2P 10DLC readiness check",
|
||||
"Recommends Klaviyo SMS or Postscript with rationale",
|
||||
"Prioritizes abandoned cart as highest-ROI flow",
|
||||
"Mentions replenishment for skincare specifically",
|
||||
"Warns about treating SMS like email",
|
||||
"References compliance.md or opt-in disclosure requirements",
|
||||
"Mentions per-send cost economics"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"prompt": "Write me an abandoned cart SMS sequence. We sell custom apparel, average order $80.",
|
||||
"expected_output": "Should output a 3-message sequence following references/sequence-templates.md pattern. Should specify timing: Send 1 at 30 min after abandon (no discount, gentle reminder), Send 2 at 4 hours (soft urgency, no discount), Send 3 at 24 hours (discount allowed). Should include actual SMS copy with character counts (target 160 GSM-7 for 1 segment). Each message must start with sender ID 'From [Brand]:', have a single CTA + short link, and the first message should include 'Reply STOP to opt out' compliance footer. Should warn against discount on first send (trains customers to abandon). Should mention exclusion rules: stop sequence on purchase, opt-out, or 48 hours elapsed. Should recommend UTM tagging for attribution and cross-reference analytics skill for measurement.",
|
||||
"assertions": [
|
||||
"Outputs 3-message sequence with timing",
|
||||
"Send 1 at 30 min, Send 2 at 4 hours, Send 3 at 24 hours",
|
||||
"No discount on Send 1",
|
||||
"Each message has sender ID + single CTA + short link",
|
||||
"Character counts shown, target ~160 GSM-7",
|
||||
"Compliance footer on first send (STOP to opt out)",
|
||||
"Warns about discount on first send",
|
||||
"Mentions exclusion rules",
|
||||
"Mentions UTM tagging or attribution"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"prompt": "Can I just send SMS without any opt-in if customers gave me their phone number at checkout?",
|
||||
"expected_output": "Should refuse and explain TCPA requires express written consent for marketing SMS. Should distinguish marketing SMS (requires express written consent) from transactional/account SMS (order updates, auth — implied consent during transaction OK if directly related). Should explain the express written consent requirements: clear disclosure adjacent to the phone field, frequency expectation, msg & data rates notice, STOP/HELP instructions, terms link, electronically captured with timestamp. Should mention penalty exposure: $500-$1,500 per message, class actions reach 7-8 figures. Should recommend implementing a compliant opt-in flow: checkbox + disclosure text, double opt-in optional but cleaner. Should reference compliance.md for the full disclosure template. Should warn that 'customers gave their number at checkout' is NOT sufficient for marketing SMS — it's only sufficient for the specific transaction's communications.",
|
||||
"assertions": [
|
||||
"Refuses the no-opt-in approach",
|
||||
"Distinguishes marketing SMS from transactional SMS",
|
||||
"Lists express written consent requirements",
|
||||
"Mentions TCPA penalty exposure ($500-$1,500 per message)",
|
||||
"Mentions class action risk",
|
||||
"Recommends compliant opt-in flow",
|
||||
"References compliance.md",
|
||||
"Clarifies checkout phone capture is not marketing consent"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"prompt": "Our SMS list is 50K subscribers. We send 3 promotional messages per week. Opt-out rate has crept up to 4% per send. What's wrong?",
|
||||
"expected_output": "Should diagnose this as audience fatigue from over-sending. Should reference healthy benchmarks: opt-out rate should be <2% per send and <0.5% for promotional sends — 4% is significantly elevated. Should review send frequency: 3 promotional sends/week is on the high side; recommend reducing to 1-2/week, especially for newer subscribers. Should audit relevance: are sends segmented or going to entire list? Generic blasts to a 50K list will burn out the inactive 30K. Should recommend segmenting by engagement (recently engaged vs cold), purchase recency, and opt-in source. Should suggest reactivating cold subscribers with a re-engagement flow before sending more promos. Should warn that 4% opt-out per send means the list is being destroyed at the rate of ~2K/week. Should cross-reference analytics for proper measurement and the principle 'every send must justify itself.'",
|
||||
"assertions": [
|
||||
"Diagnoses as over-sending / audience fatigue",
|
||||
"Cites healthy benchmark (<2% opt-out per send, <0.5% promotional)",
|
||||
"Recommends reducing send frequency",
|
||||
"Recommends segmentation by engagement",
|
||||
"Suggests reactivation flow for cold subscribers",
|
||||
"Calculates list erosion impact",
|
||||
"Mentions 'every send must justify itself' principle"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"prompt": "We just submitted our A2P 10DLC registration and our sends are working. Can we start scaling to 100K+ messages per day?",
|
||||
"expected_output": "Should ask about phone number type currently in use: 10DLC, toll-free, or short code. Should explain throughput limits: 10DLC standard brand ~4-10 msg/sec, verified brand ~75-100+ msg/sec, toll-free ~3 msg/sec, short code 100+ msg/sec. Should calculate: 100K msgs at 10 msg/sec = ~2.8 hours of continuous send time, may run into quiet hour cutoff. Should recommend short code lease for 100K+/day sustained volume. Should warn about carrier filtering on burst sends — use platform throttling. Should mention that sample message text from A2P registration must match actual sends or carriers will flag. Should recommend monitoring trust score and deliverability dashboards. Should reference platforms.md for short code provisioning details.",
|
||||
"assertions": [
|
||||
"Asks about phone number type (10DLC vs toll-free vs short code)",
|
||||
"Explains throughput limits with specific msg/sec numbers",
|
||||
"Calculates time-to-send for 100K volume",
|
||||
"Mentions quiet hour considerations",
|
||||
"Recommends short code for high sustained volume",
|
||||
"Warns about carrier filtering / throttling",
|
||||
"Mentions A2P sample text alignment requirement",
|
||||
"References platforms.md or trust score monitoring"
|
||||
],
|
||||
"files": []
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"prompt": "Should we put emojis in our SMS messages? Other brands seem to use them a lot.",
|
||||
"expected_output": "Should explain the cost trade-off: emojis force UCS-2 encoding, which cuts segment size from 160 GSM-7 chars to 70 chars. A 100-char message with one emoji becomes 2 segments billed instead of 1 — effectively doubling the per-send cost. Should advise: 1 emoji per message max, situationally relevant, only when the emoji genuinely earns its segment cost (high-energy promotional, brand-personality fit, etc.). Should warn against emoji clutter — it signals 'mass send' rather than personal. Should note that some accented characters (curly quotes, em dashes) also force UCS-2 — copy-pasting from Word/Google Docs is a common silent cause of doubled costs. Should recommend testing in the platform's preview to verify segment count before scheduling. Should remind that segment count matters at scale: 100K sends at 2 segments instead of 1 = $750-$4,000 in extra cost per campaign.",
|
||||
"assertions": [
|
||||
"Explains UCS-2 encoding cost",
|
||||
"Specifies 160 GSM-7 vs 70 UCS-2 segment sizes",
|
||||
"Recommends max 1 emoji per message",
|
||||
"Warns about doubled per-send cost",
|
||||
"Mentions accented characters / curly quotes also trigger UCS-2",
|
||||
"Recommends previewing segment count",
|
||||
"Calculates cost impact at scale"
|
||||
],
|
||||
"files": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
# SMS Compliance Reference
|
||||
|
||||
Comprehensive compliance reference for SMS marketing across major jurisdictions, opt-in copy templates, and STOP/HELP response templates.
|
||||
|
||||
> This is operational guidance, not legal advice. For high-volume programs (50K+ subscribers) or any program with non-trivial revenue, run your compliance setup past a TCPA-experienced attorney.
|
||||
|
||||
---
|
||||
|
||||
## United States — TCPA
|
||||
|
||||
### What it is
|
||||
|
||||
The Telephone Consumer Protection Act (1991, amended) regulates marketing calls and texts. The FCC enforces it; private plaintiffs sue under it. Statutory damages: $500–$1,500 **per message**. Class actions easily reach 7–8 figures.
|
||||
|
||||
### Consent tiers
|
||||
|
||||
| Type | What it covers | How to capture |
|
||||
|------|---------------|----------------|
|
||||
| **Express written consent** | Marketing SMS (sales, promotions, offers) | Checkbox + clear disclosure language, captured electronically with timestamp |
|
||||
| **Express consent (non-written)** | Informational/transactional (delivery, account alerts) | Phone number provided during transaction with awareness it'll be used to text |
|
||||
| **Established business relationship** | NOT sufficient for marketing SMS | Doesn't apply |
|
||||
|
||||
### Express written consent requirements
|
||||
|
||||
The opt-in flow must capture all of:
|
||||
|
||||
1. The recipient agreed to receive marketing SMS from your brand
|
||||
2. The recipient understands consent is not a condition of purchase
|
||||
3. The disclosure showed frequency expectation, message and data rate notice, STOP/HELP instructions, terms link
|
||||
4. The agreement was electronically recorded with timestamp
|
||||
|
||||
### Opt-in disclosure template (compliant)
|
||||
|
||||
```
|
||||
By signing up via text, you agree to receive recurring automated promotional and
|
||||
personalized marketing text messages (e.g., cart reminders) from [Brand] at the
|
||||
cell number used when signing up. Consent is not a condition of any purchase.
|
||||
Reply HELP for help and STOP to cancel. Msg frequency varies. Msg & data rates
|
||||
may apply. View [Terms](link) and [Privacy](link).
|
||||
```
|
||||
|
||||
Place this **directly adjacent** to the phone number field and submit button. Do not bury it in a footer.
|
||||
|
||||
### Quiet hours
|
||||
|
||||
- **Federal**: 8am–9pm in the recipient's local time zone
|
||||
- **Stricter states**: Florida (8am–8pm), Oklahoma (8am–8pm), Washington (8am–8pm)
|
||||
- **Carrier-recommended**: 9am–8pm recipient-local
|
||||
- **Practical default**: 9am–8pm recipient-local for safety
|
||||
|
||||
Time zone is determined by area code, but area codes lie (people move). Major platforms (Klaviyo, Postscript, Attentive) handle this automatically; verify yours does.
|
||||
|
||||
### STOP/HELP handling
|
||||
|
||||
**STOP variants you must honor**: STOP, END, CANCEL, UNSUBSCRIBE, QUIT, STOPALL, OPTOUT
|
||||
|
||||
**STOP response** (after STOP received):
|
||||
```
|
||||
You're unsubscribed from [Brand] alerts. No more messages will be sent. Reply HELP for help.
|
||||
```
|
||||
|
||||
**HELP variants**: HELP, INFO
|
||||
|
||||
**HELP response**:
|
||||
```
|
||||
[Brand] alerts: For help, visit [URL] or email [support@brand.com]. Msg & data rates may apply. Reply STOP to cancel.
|
||||
```
|
||||
|
||||
**Critical rules**:
|
||||
- Honor STOP **within seconds**, every time, every keyword variant
|
||||
- Do not require the recipient to log in or visit a website to opt out
|
||||
- One STOP confirmation is allowed; do not send additional messages after
|
||||
- HELP responses do not count as marketing messages and are not subject to quiet hours
|
||||
|
||||
### Sample TCPA-compliant footer language by sequence type
|
||||
|
||||
- **Opt-in confirmation**: "Reply HELP for help, STOP to cancel. Msg & data rates may apply." — required
|
||||
- **Recurring promotional**: "Reply STOP to opt out" — required quarterly minimum; carrier-recommended every send
|
||||
- **Transactional**: Not required by TCPA but carriers expect it; include for safety
|
||||
|
||||
---
|
||||
|
||||
## United States — A2P 10DLC
|
||||
|
||||
### What it is
|
||||
|
||||
Application-to-Person 10-Digit Long Code registration, run by The Campaign Registry (TCR). Required for businesses sending SMS through 10DLC numbers (regular long codes) since 2022. Carriers (T-Mobile, AT&T, Verizon) enforce this; unregistered traffic gets throttled or blocked.
|
||||
|
||||
### Registration components
|
||||
|
||||
1. **Brand registration**
|
||||
- Legal entity name, EIN, business type
|
||||
- Trust score assigned (Standard or Verified)
|
||||
- Higher trust = better throughput, lower fees
|
||||
|
||||
2. **Campaign registration** (one per use case)
|
||||
- Use case: Marketing, Account Notification, Customer Care, Public Service, Higher Education, Polling and Voting, 2FA, Delivery Notification, etc.
|
||||
- Sample message text (must match what you actually send)
|
||||
- Opt-in flow description and screenshot
|
||||
- Opt-out language
|
||||
- Help message language
|
||||
- Volume estimate
|
||||
|
||||
3. **Phone number assignment** to campaigns
|
||||
|
||||
### Throughput tiers (varies by carrier and trust score)
|
||||
|
||||
| Trust score + use case | Throughput |
|
||||
|------------------------|-----------|
|
||||
| Verified brand, marketing | 75–100+ msg/sec |
|
||||
| Standard brand, marketing | 4–10 msg/sec |
|
||||
| Unregistered | 0.1 msg/sec or blocked |
|
||||
|
||||
### Common rejections
|
||||
|
||||
- Sample message text doesn't match actual sends
|
||||
- Opt-in flow screenshot doesn't show required disclosure language
|
||||
- "SHAFT" content (Sex, Hate, Alcohol, Firearms, Tobacco) without explicit use case
|
||||
- Generic or vague campaign descriptions
|
||||
|
||||
**Process time**: 1–7 business days. Plan for this in launch timelines.
|
||||
|
||||
---
|
||||
|
||||
## EU / UK — GDPR + ePrivacy Directive
|
||||
|
||||
### Consent requirements
|
||||
|
||||
- **Explicit opt-in**: clear affirmative action (no pre-checked boxes)
|
||||
- **Specific**: opt-in must be for marketing SMS specifically, separate from generic ToS
|
||||
- **Informed**: data subject must know who's processing and why
|
||||
- **Freely given**: can't be bundled with service access
|
||||
|
||||
### Mandatory provisions
|
||||
|
||||
- Sender identity in every message
|
||||
- Easy opt-out in every message
|
||||
- Right to access data (DSARs)
|
||||
- Right to deletion
|
||||
- Records of consent kept for the duration of processing + statute of limitations
|
||||
|
||||
### Penalty exposure
|
||||
|
||||
GDPR fines up to €20M or 4% of global revenue, whichever is higher.
|
||||
|
||||
---
|
||||
|
||||
## Canada — CASL
|
||||
|
||||
### Consent
|
||||
|
||||
- **Express consent**: explicit opt-in (same standard as US TCPA express written consent)
|
||||
- **Implied consent**: existing business relationship within 24 months — limited use, expires
|
||||
|
||||
### Every message must include
|
||||
|
||||
- Sender identification (legal name + any operating names)
|
||||
- Mailing address
|
||||
- Phone, email, or website contact
|
||||
- Unsubscribe mechanism that works within 10 business days
|
||||
|
||||
### Penalty exposure
|
||||
|
||||
Up to CAD $10M per violation. Enforced by the CRTC.
|
||||
|
||||
---
|
||||
|
||||
## Australia — Spam Act 2003
|
||||
|
||||
- Express or inferred consent (inferred has narrow application)
|
||||
- Sender ID required
|
||||
- Functional unsubscribe required
|
||||
- Enforced by ACMA
|
||||
|
||||
---
|
||||
|
||||
## Multi-jurisdictional programs
|
||||
|
||||
If you send across US + EU + Canada simultaneously:
|
||||
|
||||
- Default to the **strictest** standard across all jurisdictions (US TCPA express written consent + GDPR explicit opt-in)
|
||||
- Track consent jurisdiction per subscriber
|
||||
- Default quiet hours to recipient-local 9am–8pm
|
||||
- Include all required identifiers in every message
|
||||
|
||||
---
|
||||
|
||||
## Audit-ready compliance checklist
|
||||
|
||||
- [ ] A2P 10DLC registration complete (US, if applicable)
|
||||
- [ ] Opt-in flow includes all required disclosures, adjacent to phone field
|
||||
- [ ] Disclosure text matches A2P registered sample messages
|
||||
- [ ] Opt-in event captures: timestamp, IP, page URL, exact disclosure shown
|
||||
- [ ] STOP/HELP keywords honored across all variants
|
||||
- [ ] Quiet hours enforced at platform level (recipient-local time)
|
||||
- [ ] Privacy policy includes SMS section
|
||||
- [ ] Terms of service include SMS terms
|
||||
- [ ] Consent records retained per applicable law (typically 4+ years US, longer EU)
|
||||
- [ ] Process for handling DSARs (EU) and consent revocation
|
||||
- [ ] Sender identity in every message
|
||||
- [ ] Compliance footer on every promotional message (recommended) or quarterly minimum (required)
|
||||
- [ ] Test STOP/HELP from a real phone number quarterly to verify it still works
|
||||
@@ -0,0 +1,318 @@
|
||||
# SMS Platform Reference
|
||||
|
||||
Deep-dive on the major SMS marketing platforms — features, pricing, A2P 10DLC support, and integration paths.
|
||||
|
||||
> Pricing is approximate and changes regularly. Always confirm at the vendor's site before committing.
|
||||
|
||||
---
|
||||
|
||||
## Klaviyo SMS
|
||||
|
||||
**Best for**: DTC ecom brands already using Klaviyo for email.
|
||||
|
||||
### Key features
|
||||
- Native integration with Klaviyo email and segmentation
|
||||
- Shared subscriber profile across email + SMS
|
||||
- Built-in A2P 10DLC registration
|
||||
- Flow builder shared with email flows
|
||||
- Conversational SMS (two-way) supported
|
||||
|
||||
### Pricing
|
||||
- Bundled with Klaviyo plans, billed per SMS credit
|
||||
- US: ~$0.0075–$0.015 per SMS; MMS ~$0.04
|
||||
- Free tier: 150 SMS credits/month on lower email tiers
|
||||
|
||||
### Integration paths
|
||||
- Direct Shopify, WooCommerce, BigCommerce, Magento integration
|
||||
- API for custom platforms
|
||||
- MCP server available
|
||||
|
||||
### Compliance
|
||||
- A2P 10DLC registration handled in-platform
|
||||
- Toll-free and short code provisioning available (short code adds $1,000+/mo)
|
||||
- Quiet hours enforced per recipient time zone (configurable)
|
||||
|
||||
### Watch out for
|
||||
- Email + SMS combined billing can spike fast on large lists
|
||||
- Short code costs are real overhead; only worthwhile for 100K+ active SMS subscribers
|
||||
|
||||
---
|
||||
|
||||
## Postscript
|
||||
|
||||
**Best for**: Shopify-native DTC brands wanting SMS-specific tooling and onboarding support.
|
||||
|
||||
### Key features
|
||||
- Deep Shopify integration (the deepest of any SMS platform)
|
||||
- Strong abandoned cart and browse abandonment automations
|
||||
- AI Reply (auto-reply trained on brand voice)
|
||||
- Conversational SMS / live agent
|
||||
- Audiences pulled from Shopify customer data
|
||||
|
||||
### Pricing
|
||||
- Tiered plans: Starter (free, 1K msgs/mo), Growth ($100+/mo), Professional, Enterprise
|
||||
- Pay-per-send adds on top: ~$0.015 per SMS, ~$0.04 per MMS
|
||||
|
||||
### Integration paths
|
||||
- Shopify-first; limited support for non-Shopify
|
||||
- API + webhooks available
|
||||
|
||||
### Compliance
|
||||
- A2P 10DLC handled in-platform
|
||||
- Strong opt-in compliance tools (popup builder, keyword opt-in)
|
||||
- Quiet hours enforced
|
||||
|
||||
### Watch out for
|
||||
- Steep cost increase past Starter tier
|
||||
- Less useful if you're not on Shopify
|
||||
|
||||
---
|
||||
|
||||
## Attentive
|
||||
|
||||
**Best for**: Mid-market and enterprise DTC brands wanting full-service SMS.
|
||||
|
||||
### Key features
|
||||
- Full-service: dedicated CSM, copy support, strategy
|
||||
- Conversational SMS at scale
|
||||
- Concierge sales-via-SMS
|
||||
- Strong analytics and attribution
|
||||
- Identity resolution (matching anon site visitors to phone numbers)
|
||||
|
||||
### Pricing
|
||||
- Custom contracts; typically $1K–$10K+/mo + per-send fees
|
||||
- Annual contracts standard
|
||||
- Pricing rarely makes sense for <50K SMS subscribers
|
||||
|
||||
### Integration paths
|
||||
- Shopify, BigCommerce, Salesforce Commerce Cloud, custom
|
||||
- Robust API
|
||||
|
||||
### Compliance
|
||||
- Full A2P 10DLC managed
|
||||
- Best-in-class compliance tooling and audit support
|
||||
- Short code provisioning included on most plans
|
||||
|
||||
### Watch out for
|
||||
- Contract terms can lock you in for 12+ months
|
||||
- Overkill for early-stage brands
|
||||
|
||||
---
|
||||
|
||||
## Twilio
|
||||
|
||||
**Best for**: Custom builds, transactional SMS, B2B SaaS embedding SMS into products, developers.
|
||||
|
||||
### Key features
|
||||
- Raw SMS API
|
||||
- Pay-per-send pricing, no platform fees
|
||||
- Massive global coverage (200+ countries)
|
||||
- Programmable Voice, WhatsApp Business, RCS available alongside
|
||||
- Studio (visual flow builder) for non-code automation
|
||||
|
||||
### Pricing
|
||||
- US 10DLC SMS: $0.0079 per message
|
||||
- US toll-free SMS: $0.0079 per message
|
||||
- US short code SMS: $0.0079 per message + $1,000/mo lease
|
||||
- MMS: ~$0.02
|
||||
- Carrier surcharges layered on top (~$0.005 per US 10DLC)
|
||||
- A2P 10DLC registration: ~$15 brand + $10/mo per campaign
|
||||
|
||||
### Integration paths
|
||||
- API-first (REST + SDKs in Node, Python, Ruby, Go, etc.)
|
||||
- No native ecom integrations — you build them
|
||||
|
||||
### Compliance
|
||||
- A2P 10DLC registration in-platform but you do the work
|
||||
- TwilioSendGrid (separate product) handles email-side compliance
|
||||
- Quiet hours and STOP/HELP handling must be implemented by you
|
||||
|
||||
### Watch out for
|
||||
- You're responsible for compliance — no hand-holding
|
||||
- No native segmentation, deliverability dashboards, or marketing UI
|
||||
- Best paired with Customer.io, Segment, or a custom orchestration layer
|
||||
|
||||
---
|
||||
|
||||
## Brevo (formerly Sendinblue)
|
||||
|
||||
**Best for**: EU-based brands, email + SMS combo, SMB-friendly.
|
||||
|
||||
### Key features
|
||||
- Combined email + SMS + WhatsApp on one platform
|
||||
- EU-headquartered, GDPR-native
|
||||
- Generous free tier for email; SMS pay-per-send
|
||||
- Marketing automation flows
|
||||
- CRM included
|
||||
|
||||
### Pricing
|
||||
- Free tier: 300 emails/day; SMS pay-per-send
|
||||
- US SMS: ~$0.015 per message
|
||||
- EU SMS: varies by country, ~€0.04–€0.07
|
||||
|
||||
### Integration paths
|
||||
- Direct integrations: Shopify, WooCommerce, WordPress, Magento
|
||||
- API + Zapier
|
||||
- MCP server available
|
||||
|
||||
### Compliance
|
||||
- GDPR + ePrivacy built-in
|
||||
- A2P 10DLC for US (less polished than dedicated US platforms)
|
||||
|
||||
### Watch out for
|
||||
- US SMS features lag behind Klaviyo/Postscript
|
||||
- Best if you're EU-first or already on Brevo for email
|
||||
|
||||
---
|
||||
|
||||
## SimpleTexting
|
||||
|
||||
**Best for**: SMB, services businesses, simple campaign blasts, low-volume.
|
||||
|
||||
### Key features
|
||||
- Easy-to-use UI
|
||||
- Keyword opt-in for grassroots list building
|
||||
- Built-in landing pages for opt-in
|
||||
- Simple automation
|
||||
|
||||
### Pricing
|
||||
- Plans start ~$30/mo for 500 credits, scaling up
|
||||
- US SMS only
|
||||
|
||||
### Integration paths
|
||||
- Zapier, Make, native to a few apps
|
||||
- API available but basic
|
||||
|
||||
### Compliance
|
||||
- A2P 10DLC handled
|
||||
- TCPA tooling
|
||||
|
||||
### Watch out for
|
||||
- Limited automation depth vs Klaviyo/Postscript
|
||||
- Best for low-complexity, low-volume use cases (gyms, salons, real estate)
|
||||
|
||||
---
|
||||
|
||||
## Plivo
|
||||
|
||||
**Best for**: Custom SMS builds where per-send cost matters; Twilio-style API at a lower price point.
|
||||
|
||||
### Key features
|
||||
- Direct Twilio competitor with similar surface area
|
||||
- Powerpack for bulk sending with sticky sender across number pools
|
||||
- A2P 10DLC handled in-platform
|
||||
- WhatsApp, voice available alongside SMS
|
||||
- SDKs for major languages
|
||||
|
||||
### Pricing
|
||||
- US 10DLC SMS: ~$0.0055/msg (typically 20–30% under Twilio)
|
||||
- US short code SMS: similar + monthly lease
|
||||
- MMS: ~$0.02
|
||||
- Phone number rental: ~$0.80/mo local, ~$1/mo toll-free
|
||||
|
||||
### Integration paths
|
||||
- API-first (REST + SDKs)
|
||||
- No native ecom integrations — you build them
|
||||
|
||||
### Compliance
|
||||
- A2P 10DLC managed in-platform
|
||||
- Compliance plumbing (STOP/HELP, quiet hours) is your responsibility — same model as Twilio
|
||||
|
||||
### Watch out for
|
||||
- Smaller ecosystem than Twilio (fewer ancillary products, integrations, community resources)
|
||||
- WhatsApp tooling less mature
|
||||
|
||||
---
|
||||
|
||||
## AudienceTap
|
||||
|
||||
**Best for**: DTC brands wanting AI-forward creative tooling or on-pack QR opt-in as a primary acquisition channel.
|
||||
|
||||
> Newer platform — verify current capabilities, pricing, and API surface before committing.
|
||||
|
||||
### Key features
|
||||
- SMS + email on one platform (similar combined model to Klaviyo)
|
||||
- AI creative generation (SMS copy, subject lines, image variants)
|
||||
- On-pack QR code opt-in: insert cards in shipped orders that drive SMS list growth
|
||||
- Shopify, BigCommerce, headless commerce integrations
|
||||
- A2P 10DLC managed in-platform
|
||||
- Identity resolution and segmentation
|
||||
|
||||
### Pricing
|
||||
- Tiered by subscriber count + send volume
|
||||
- Per-send pricing comparable to other DTC SMS platforms
|
||||
|
||||
### Integration paths
|
||||
- API access on Growth+ tiers
|
||||
- Direct ecom integrations
|
||||
- Webhooks for events
|
||||
|
||||
### Compliance
|
||||
- A2P 10DLC handled in-platform
|
||||
- TCPA tooling — verify enterprise-scale depth before committing for large lists
|
||||
|
||||
### Watch out for
|
||||
- Newer entrant — fewer reference customers, less battle-tested at high volume than incumbents
|
||||
- Some features rolled out recently — confirm what's GA vs beta before relying on them
|
||||
|
||||
---
|
||||
|
||||
## Customer.io
|
||||
|
||||
**Best for**: B2B SaaS, behavior-based automation, multi-channel orchestration (email + SMS + push).
|
||||
|
||||
### Key features
|
||||
- Trigger SMS off product events (signup, milestone, churn risk)
|
||||
- Powerful audience segmentation
|
||||
- Workflow builder
|
||||
- Real-time data sync via API/webhooks
|
||||
|
||||
### Pricing
|
||||
- Plans start ~$150/mo, scaling with profile count
|
||||
- SMS via Twilio integration or native (varies)
|
||||
|
||||
### Integration paths
|
||||
- API-first
|
||||
- Direct integrations with Segment, Heap, Mixpanel, etc.
|
||||
|
||||
### Compliance
|
||||
- A2P 10DLC via Twilio if using native integration
|
||||
- Granular subscription/consent management
|
||||
|
||||
### Watch out for
|
||||
- Less ecom-tailored than Klaviyo/Postscript
|
||||
- Best for product-led SaaS or apps with deep event tracking
|
||||
|
||||
---
|
||||
|
||||
## Quick selection table
|
||||
|
||||
| Stack / Goal | Recommended | Why |
|
||||
|--------------|------------|-----|
|
||||
| Shopify ecom, already on Klaviyo | **Klaviyo SMS** | One platform, one subscriber profile |
|
||||
| Shopify ecom, SMS-first focus | **Postscript** | Deepest Shopify + SMS-specific features |
|
||||
| Mid-market ecom, want concierge support | **Attentive** | Full-service team + tooling |
|
||||
| Custom platform, B2B SaaS, transactional | **Twilio** | API-first, full control |
|
||||
| Custom build, cost-sensitive | **Plivo** | ~20–30% cheaper than Twilio per send |
|
||||
| DTC wanting AI creative or on-pack QR opt-in | **AudienceTap** | AI-forward; insert-card opt-in is unique |
|
||||
| EU-based SMB | **Brevo** | GDPR-native, EU-friendly pricing |
|
||||
| Local services SMB, simple campaigns | **SimpleTexting** | Easy UI, low overhead |
|
||||
| Product-led SaaS with event tracking | **Customer.io** | Behavior-based triggers |
|
||||
|
||||
---
|
||||
|
||||
## A2P 10DLC: what your platform should handle
|
||||
|
||||
Whatever you pick, confirm your platform handles:
|
||||
|
||||
- [ ] Brand and campaign registration with TCR
|
||||
- [ ] Sample message text aligned with what you actually send
|
||||
- [ ] Opt-in flow documentation submitted to carriers
|
||||
- [ ] Trust score visibility (and a path to improve it)
|
||||
- [ ] Throughput appropriate to your list size and send frequency
|
||||
- [ ] STOP/HELP keyword handling
|
||||
- [ ] Quiet hours by recipient time zone
|
||||
- [ ] Suppression list management
|
||||
- [ ] Consent record retention with timestamps
|
||||
|
||||
All major platforms above handle these. Twilio does the lowest-level work and pushes more responsibility onto you.
|
||||
@@ -0,0 +1,282 @@
|
||||
# SMS Sequence Templates
|
||||
|
||||
Full copy templates with character counts, timing, and segmentation logic for every major SMS flow.
|
||||
|
||||
> Character counts shown assume GSM-7 encoding. Emojis force UCS-2 (70 chars/segment instead of 160). All templates use `[Brand]`, `[FirstName]`, and `[short.link]` as substitution tokens.
|
||||
|
||||
---
|
||||
|
||||
## Welcome / Opt-In Confirmation
|
||||
|
||||
### Send 1 — Immediate (after opt-in)
|
||||
|
||||
```
|
||||
From [Brand]: Welcome! Here's your 10% off code: WELCOME10. Shop now: [short.link]
|
||||
Reply STOP to opt out, HELP for help. Msg & data rates may apply.
|
||||
```
|
||||
~155 chars / 1 segment (just). Footer required on first send.
|
||||
|
||||
### Send 2 — 24 hours later (optional)
|
||||
|
||||
```
|
||||
From [Brand]: Don't forget your code WELCOME10 — expires in 48hrs. Top picks: [short.link]
|
||||
```
|
||||
~108 chars / 1 segment.
|
||||
|
||||
### Send 3 — 7 days later (optional, conditional on no purchase)
|
||||
|
||||
```
|
||||
From [Brand]: Last chance for 10% off with WELCOME10. Expires tonight at midnight: [short.link]
|
||||
```
|
||||
~107 chars / 1 segment.
|
||||
|
||||
---
|
||||
|
||||
## Abandoned Cart (highest-ROI flow for ecom)
|
||||
|
||||
### Send 1 — 30 minutes after abandon
|
||||
|
||||
```
|
||||
From [Brand]: Hey [FirstName], you left something behind! Your cart's here: [short.link]
|
||||
```
|
||||
~95 chars / 1 segment.
|
||||
|
||||
### Send 2 — 4 hours after abandon (if no purchase)
|
||||
|
||||
```
|
||||
From [Brand]: Items in your cart are selling fast. Reserved for you for 24hrs: [short.link]
|
||||
```
|
||||
~98 chars / 1 segment.
|
||||
|
||||
### Send 3 — 24 hours after abandon (if no purchase, discount allowed)
|
||||
|
||||
```
|
||||
From [Brand]: Still thinking? Here's 10% off to seal the deal: SAVE10. Shop: [short.link]
|
||||
```
|
||||
~99 chars / 1 segment.
|
||||
|
||||
**Notes**:
|
||||
- Discount on Send 1 trains customers to abandon. Reserve for Send 2 or 3.
|
||||
- Exclude customers who abandoned <$X in cart value or repeat abandoners (gaming the discount).
|
||||
- Stop sequence on purchase, opt-out, or 48 hours elapsed.
|
||||
|
||||
---
|
||||
|
||||
## Browse Abandonment
|
||||
|
||||
### Send 1 — 1 hour after browse (single product or category)
|
||||
|
||||
```
|
||||
From [Brand]: Still thinking about [product]? Take another look: [short.link]
|
||||
```
|
||||
~84 chars / 1 segment.
|
||||
|
||||
**Notes**:
|
||||
- Trigger only after meaningful browse signal (3+ product views or 2+ min on product page).
|
||||
- Exclude if a purchase happened on a different product.
|
||||
|
||||
---
|
||||
|
||||
## Post-Purchase Flow
|
||||
|
||||
### Send 1 — Immediately after purchase (transactional, separate consent)
|
||||
|
||||
```
|
||||
From [Brand]: Order #12345 confirmed! We'll text shipping updates here. Track: [short.link]
|
||||
```
|
||||
~95 chars / 1 segment.
|
||||
|
||||
### Send 2 — Day of shipment
|
||||
|
||||
```
|
||||
From [Brand]: Your order's on the way. Estimated delivery: [date]. Track: [short.link]
|
||||
```
|
||||
~92 chars / 1 segment.
|
||||
|
||||
### Send 3 — Day of delivery
|
||||
|
||||
```
|
||||
From [Brand]: Your order should arrive today! Questions? Reply or visit [short.link]
|
||||
```
|
||||
~88 chars / 1 segment.
|
||||
|
||||
### Send 4 — 2 days after delivery (marketing consent required)
|
||||
|
||||
```
|
||||
From [Brand]: How are you liking your [product]? Share a review for 15% off next order: [short.link]
|
||||
```
|
||||
~108 chars / 1 segment.
|
||||
|
||||
### Send 5 — 14 days after delivery (cross-sell, marketing consent)
|
||||
|
||||
```
|
||||
From [Brand]: Goes great with your [product]: [related-item]. 10% off bundle: [short.link]
|
||||
```
|
||||
~99 chars / 1 segment.
|
||||
|
||||
---
|
||||
|
||||
## Win-Back (Lapsed Customers)
|
||||
|
||||
### Send 1 — 60-90 days after last purchase
|
||||
|
||||
```
|
||||
From [Brand]: [FirstName], we miss you! Picks we think you'll love: [short.link]
|
||||
```
|
||||
~84 chars / 1 segment.
|
||||
|
||||
### Send 2 — 14 days later (if no purchase)
|
||||
|
||||
```
|
||||
From [Brand]: Come back for 15% off your next order: COMEBACK15. Expires in 7 days: [short.link]
|
||||
```
|
||||
~106 chars / 1 segment.
|
||||
|
||||
### Send 3 — 14 days after Send 2 (final, if no purchase)
|
||||
|
||||
```
|
||||
From [Brand]: Last chance — 20% off ends tonight: COMEBACK20. We'll stop texting if you'd rather: reply STOP. [short.link]
|
||||
```
|
||||
~130 chars / 1 segment.
|
||||
|
||||
**Notes**:
|
||||
- After Send 3 with no engagement, suppress for 90 days minimum.
|
||||
- After two full win-back cycles with no engagement, sunset (remove from active list).
|
||||
|
||||
---
|
||||
|
||||
## Promotional / Campaign Sends
|
||||
|
||||
### Flash sale (single send)
|
||||
|
||||
```
|
||||
From [Brand]: 24-HOUR FLASH: 25% off everything with FLASH25. Ends midnight: [short.link]
|
||||
```
|
||||
~94 chars / 1 segment.
|
||||
|
||||
### Limited drop / launch
|
||||
|
||||
```
|
||||
From [Brand]: New drop just landed: [product-name]. Limited stock, members get early access: [short.link]
|
||||
```
|
||||
~115 chars / 1 segment.
|
||||
|
||||
### Holiday / BFCM (2-send sequence)
|
||||
|
||||
Send 1 — Day of launch:
|
||||
```
|
||||
From [Brand]: Black Friday is LIVE — up to 50% off sitewide. Shop now: [short.link]
|
||||
```
|
||||
~92 chars / 1 segment.
|
||||
|
||||
Send 2 — Day of (or evening, expiration push):
|
||||
```
|
||||
From [Brand]: Last 6 hours of BFCM savings. Don't miss out: [short.link]
|
||||
```
|
||||
~73 chars / 1 segment.
|
||||
|
||||
---
|
||||
|
||||
## Transactional / Account Notifications
|
||||
|
||||
### Order confirmation
|
||||
|
||||
```
|
||||
[Brand]: Order #12345 confirmed. Total $XX.XX. Track at [short.link]. Reply HELP for help.
|
||||
```
|
||||
|
||||
### Shipping update
|
||||
|
||||
```
|
||||
[Brand]: Your order #12345 shipped! Track: [short.link]. ETA [date].
|
||||
```
|
||||
|
||||
### Delivery confirmation
|
||||
|
||||
```
|
||||
[Brand]: Order #12345 delivered. Enjoy! Issues? Reply or [support-link].
|
||||
```
|
||||
|
||||
### Auth code (2FA)
|
||||
|
||||
```
|
||||
[Brand] verification code: 123456. Expires in 10 min. Do not share.
|
||||
```
|
||||
|
||||
### Account alert
|
||||
|
||||
```
|
||||
[Brand]: Sign-in from new device in [location]. Wasn't you? Secure: [short.link]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Re-Engagement / Reactivation (Subscribers Who've Gone Cold)
|
||||
|
||||
For SMS subscribers who haven't engaged with any send in 60+ days.
|
||||
|
||||
### Send 1 — Soft reactivation
|
||||
|
||||
```
|
||||
From [Brand]: We've missed you, [FirstName]! Here's what's new: [short.link]
|
||||
```
|
||||
~80 chars / 1 segment.
|
||||
|
||||
### Send 2 — Confirm interest (if no engagement)
|
||||
|
||||
```
|
||||
From [Brand]: Want to keep hearing from us? Reply YES to stay on the list, or STOP to opt out.
|
||||
```
|
||||
~98 chars / 1 segment.
|
||||
|
||||
After no reply: suppress for 60 days, then remove from active list. This protects opt-out rate metrics and reduces wasted spend.
|
||||
|
||||
---
|
||||
|
||||
## Replenishment (Consumables Ecom)
|
||||
|
||||
For products with predictable usage cycles (skincare, supplements, coffee, pet food).
|
||||
|
||||
### Send 1 — At expected reorder window (e.g., 28 days for a 30-day supply)
|
||||
|
||||
```
|
||||
From [Brand]: Running low on [product]? Reorder in one tap: [short.link]
|
||||
```
|
||||
~73 chars / 1 segment.
|
||||
|
||||
### Send 2 — 7 days later (if no purchase)
|
||||
|
||||
```
|
||||
From [Brand]: Don't run out! 10% off your reorder of [product]: REFILL10 [short.link]
|
||||
```
|
||||
~92 chars / 1 segment.
|
||||
|
||||
---
|
||||
|
||||
## VIP / Loyalty Members
|
||||
|
||||
Higher frequency, exclusive offers, early access — different cadence rules apply but quiet hours and STOP still required.
|
||||
|
||||
### Early access
|
||||
|
||||
```
|
||||
From [Brand]: VIPs get the new drop 24hrs early. Yours now: [short.link]
|
||||
```
|
||||
~72 chars / 1 segment.
|
||||
|
||||
### Loyalty milestone
|
||||
|
||||
```
|
||||
From [Brand]: You've reached Gold status! Your perks: 15% off + free shipping. [short.link]
|
||||
```
|
||||
~95 chars / 1 segment.
|
||||
|
||||
---
|
||||
|
||||
## Segmentation rules across all flows
|
||||
|
||||
- **Suppress** customers in active sequences from promotional sends (no double-tap)
|
||||
- **Suppress** opted-out subscribers from everything (platform handles this)
|
||||
- **Frequency cap**: max 4–6 marketing sends/week per subscriber (lower for newer subscribers)
|
||||
- **Quiet hours**: 9am–8pm recipient-local time
|
||||
- **Cool-off**: After a discount-driven purchase, suppress promotional sends for 14 days
|
||||
+18
-8
@@ -1,8 +1,8 @@
|
||||
---
|
||||
name: video
|
||||
description: "When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use when the user mentions 'video production,' 'AI video,' 'Remotion,' 'Hyperframes,' 'HeyGen,' 'Synthesia,' 'Veo,' 'Runway,' 'Kling,' 'Pika,' 'video generation,' 'AI avatar,' 'talking head video,' 'programmatic video,' 'video template,' 'explainer video,' 'product demo video,' 'video pipeline,' or 'make me a video.' Use this for video creation, generation, and production workflows. For video content strategy and what to post, see social. For paid video ad creative, see ad-creative."
|
||||
description: "When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use when the user mentions 'video production,' 'AI video,' 'Remotion,' 'Hyperframes,' 'HeyGen,' 'Synthesia,' 'Veo,' 'Sora,' 'Runway,' 'Kling,' 'Seedance,' 'Hailuo,' 'MiniMax,' 'Pika,' 'Hunyuan,' 'Wan,' 'video generation,' 'AI avatar,' 'talking head video,' 'programmatic video,' 'video template,' 'explainer video,' 'product demo video,' 'video pipeline,' or 'make me a video.' Use this for video creation, generation, and production workflows. For video content strategy and what to post, see social. For paid video ad creative, see ad-creative."
|
||||
metadata:
|
||||
version: 2.0.0
|
||||
version: 2.0.1
|
||||
---
|
||||
|
||||
# Video
|
||||
@@ -41,7 +41,7 @@ Pick the right tool for the job:
|
||||
| Approach | Best For | Tools | When to Use |
|
||||
|----------|----------|-------|-------------|
|
||||
| **Programmatic** | Templated, data-driven, batch video | Remotion, Hyperframes | Product updates, personalized videos, recurring content |
|
||||
| **AI Generation** | Original footage from text/image prompts | Veo, Runway, Kling, Pika | B-roll, hero shots, creative visuals you can't film |
|
||||
| **AI Generation** | Original footage from text/image prompts | Veo 3, Sora 2, Runway, Kling, Seedance | B-roll, hero shots, creative visuals you can't film |
|
||||
| **AI Avatars** | Talking-head presenter without filming | HeyGen, Synthesia | Explainers, tutorials, multilingual content |
|
||||
| **Editing/Repurposing** | Cutting long-form into short clips | Descript, Opus Clip, CapCut | Podcast/webinar → social clips |
|
||||
|
||||
@@ -130,12 +130,22 @@ Generate original footage from text or image prompts. Use for B-roll, hero visua
|
||||
|
||||
| Model | Resolution | Max Duration | Best For | Cost |
|
||||
|-------|-----------|-------------|----------|------|
|
||||
| **Veo 3** (Google) | Up to 1080p (4K varies) | Variable | Highest quality, synced audio | API-based |
|
||||
| **Runway Gen-4** | Up to 4K | ~10 sec/gen | Motion control, temporal consistency | $12-76/mo |
|
||||
| **Kling 3.0** | Up to 1080p | Up to 2 min | Volume production, lowest cost | $0.029/sec |
|
||||
| **Pika** | 1080p | Short clips | Fast generation, effects | Per-credit |
|
||||
| **Veo 3** (Google) | Up to 1080p (4K varies) | Variable | Top overall quality, synced audio | API-based |
|
||||
| **Sora 2** (OpenAI) | Up to 1080p | Up to ~20 sec | Cinematic + synced audio, ChatGPT/API integration | API + ChatGPT |
|
||||
| **Runway Gen-4** | Up to 4K | ~10 sec/gen | Motion control, temporal consistency, edit-style workflows | $12-76/mo |
|
||||
| **Kling 2.5/3.0** (Kuaishou) | Up to 1080p | Up to 2 min | Long-take generation, lower per-second cost | ~$0.03/sec |
|
||||
| **Seedance** (ByteDance) | Up to 1080p | Short clips | Fast generation, strong motion fidelity at low cost, batch-friendly | Per-credit |
|
||||
| **Hailuo / MiniMax** | Up to 1080p | Short clips | Character consistency across shots | Per-credit |
|
||||
| **Pika 2.x** | 1080p | Short clips | Quick effects, image-to-video, lower bar to entry | Per-credit |
|
||||
| **Hunyuan Video / Wan 2** | 720p–1080p | Variable | Open-source self-hosted; full control, no API fees | Free (GPU) |
|
||||
|
||||
**Sora (OpenAI)** has had limited availability and reliability issues. Check current status before recommending.
|
||||
**Quick picks**:
|
||||
- **Highest quality + audio**: Veo 3 or Sora 2
|
||||
- **Batch / volume / cost**: Kling, Seedance
|
||||
- **Character consistency across multiple shots**: Hailuo
|
||||
- **Self-hosted, brand-controlled**: Hunyuan Video or Wan 2 (open weights)
|
||||
- **Storyboard → video workflow**: Runway, LTX Studio
|
||||
- **Image-to-video from a still you already have**: Kling, Pika, Runway
|
||||
|
||||
### Prompting for Video Models
|
||||
|
||||
|
||||
+86
-2
@@ -26,6 +26,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
|
||||
| ahrefs | SEO | ✓ | - | [✓](clis/ahrefs.js) | - | [ahrefs.md](integrations/ahrefs.md) |
|
||||
| dataforseo | SEO | ✓ | - | [✓](clis/dataforseo.js) | ✓ | [dataforseo.md](integrations/dataforseo.md) |
|
||||
| keywords-everywhere | SEO | ✓ | - | [✓](clis/keywords-everywhere.js) | - | [keywords-everywhere.md](integrations/keywords-everywhere.md) |
|
||||
| rankparse | SEO | ✓ | ✓ | [✓](clis/rankparse.js) | - | [rankparse.md](integrations/rankparse.md) |
|
||||
| clearbit | Data Enrichment | ✓ | - | [✓](clis/clearbit.js) | ✓ | [clearbit.md](integrations/clearbit.md) |
|
||||
| apollo | Data Enrichment | ✓ | - | [✓](clis/apollo.js) | - | [apollo.md](integrations/apollo.md) |
|
||||
| zoominfo | Data Enrichment | ✓ | ✓ | [✓](clis/zoominfo.js) | - | [zoominfo.md](integrations/zoominfo.md) |
|
||||
@@ -46,6 +47,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
|
||||
| customer-io | Email | ✓ | - | [✓](clis/customer-io.js) | ✓ | [customer-io.md](integrations/customer-io.md) |
|
||||
| sendgrid | Email | ✓ | - | [✓](clis/sendgrid.js) | ✓ | [sendgrid.md](integrations/sendgrid.md) |
|
||||
| resend | Email | ✓ | ✓ | [✓](clis/resend.js) | ✓ | [resend.md](integrations/resend.md) |
|
||||
| sequenzy | Email | ✓ | ✓ | ✓ | - | [sequenzy.md](integrations/sequenzy.md) |
|
||||
| nitrosend | Email | ✓ | ✓ | - | - | [nitrosend.md](integrations/nitrosend.md) |
|
||||
| kit | Email | ✓ | - | [✓](clis/kit.js) | ✓ | [kit.md](integrations/kit.md) |
|
||||
| beehiiv | Newsletter | ✓ | - | [✓](clis/beehiiv.js) | - | [beehiiv.md](integrations/beehiiv.md) |
|
||||
@@ -53,8 +55,17 @@ Quick reference for AI agents to discover tool capabilities and integration meth
|
||||
| postmark | Email | ✓ | - | [✓](clis/postmark.js) | ✓ | [postmark.md](integrations/postmark.md) |
|
||||
| brevo | Email/SMS | ✓ | - | [✓](clis/brevo.js) | ✓ | [brevo.md](integrations/brevo.md) |
|
||||
| activecampaign | Email/CRM | ✓ | - | [✓](clis/activecampaign.js) | ✓ | [activecampaign.md](integrations/activecampaign.md) |
|
||||
| twilio | SMS/Voice | ✓ | - | ✓ | ✓ | [twilio.md](integrations/twilio.md) |
|
||||
| plivo | SMS/Voice | ✓ | - | - | ✓ | [plivo.md](integrations/plivo.md) |
|
||||
| postscript | SMS | ✓ | - | - | - | [postscript.md](integrations/postscript.md) |
|
||||
| attentive | SMS | ✓ | - | - | - | [attentive.md](integrations/attentive.md) |
|
||||
| audiencetap | SMS/Email | ✓ | - | - | - | [audiencetap.md](integrations/audiencetap.md) |
|
||||
| hunter | Email Outreach | ✓ | - | [✓](clis/hunter.js) | - | [hunter.md](integrations/hunter.md) |
|
||||
| snov | Email Outreach | ✓ | - | [✓](clis/snov.js) | - | [snov.md](integrations/snov.md) |
|
||||
| truelist | Email Verification | ✓ | ✓ | - | ✓ | [truelist.md](integrations/truelist.md) |
|
||||
| github | Developer Intent | ✓ | - | [✓](clis/github-prospects.js) | ✓ | [github.md](integrations/github.md) |
|
||||
| firecrawl | Site Scraping | ✓ | ✓ | - | ✓ | [firecrawl.md](integrations/firecrawl.md) |
|
||||
| browserbase | Site Scraping | ✓ | ✓ | - | ✓ | [browserbase.md](integrations/browserbase.md) |
|
||||
| lemlist | Email Outreach | ✓ | - | [✓](clis/lemlist.js) | - | [lemlist.md](integrations/lemlist.md) |
|
||||
| instantly | Email Outreach | ✓ | - | [✓](clis/instantly.js) | - | [instantly.md](integrations/instantly.md) |
|
||||
| google-ads | Ads | ✓ | ✓ | [✓](clis/google-ads.js) | ✓ | [google-ads.md](integrations/google-ads.md) |
|
||||
@@ -73,6 +84,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
|
||||
| introw | Partner Ecosystem | - | ✓ | - | - | [introw.md](integrations/introw.md) |
|
||||
| pendo | Product Analytics | ✓ | - | [✓](clis/pendo.js) | - | [pendo.md](integrations/pendo.md) |
|
||||
| similarweb | Competitive Intelligence | ✓ | - | [✓](clis/similarweb.js) | - | [similarweb.md](integrations/similarweb.md) |
|
||||
| exa | AI Search | ✓ | ✓ | [✓](clis/exa.js) | ✓ | [exa.md](integrations/exa.md) |
|
||||
| firehose | Competitive Intelligence | ✓ | - | - | - | [firehose.md](integrations/firehose.md) |
|
||||
| sparktoro | Audience Research | - | - | - | - | [sparktoro.md](integrations/sparktoro.md) |
|
||||
| rb2b | Visitor Identification | ✓ | - | - | - | [rb2b.md](integrations/rb2b.md) |
|
||||
@@ -94,6 +106,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
|
||||
| contentful | Headless CMS | ✓ | - | ✓ | ✓ | [contentful.md](integrations/contentful.md) |
|
||||
| strapi | Headless CMS | ✓ | - | ✓ | ✓ | [strapi.md](integrations/strapi.md) |
|
||||
| composio | Integration Layer | ✓ | ✓ | ✓ | ✓ | [composio.md](integrations/composio.md) |
|
||||
| cogny | Integration Layer | - | ✓ | - | - | [cogny.md](integrations/cogny.md) |
|
||||
|
||||
---
|
||||
|
||||
@@ -126,8 +139,9 @@ Search engine optimization tools for keyword research, rank tracking, and site a
|
||||
| **ahrefs** | Backlink analysis, content research | Best for links |
|
||||
| **dataforseo** | SERP tracking, backlinks, on-page audits | Comprehensive API |
|
||||
| **keywords-everywhere** | Quick keyword research, traffic estimates | Credit-based |
|
||||
| **rankparse** | Cheap, agent-friendly backlinks + domain data | Credit-based, MCP available |
|
||||
|
||||
**Agent recommendation**: Google Search Console is essential (free). Add Semrush or Ahrefs for competitive research. DataForSEO for programmatic SERP data. Keywords Everywhere for quick keyword lookups.
|
||||
**Agent recommendation**: Google Search Console is essential (free). Add Semrush or Ahrefs for competitive research. DataForSEO for programmatic SERP data. Keywords Everywhere for quick keyword lookups. RankParse for agent workflows where per-call cost matters — backlinks, domain authority, and tech stack at a fraction of enterprise pricing.
|
||||
|
||||
### CRM
|
||||
|
||||
@@ -176,6 +190,7 @@ Email marketing, transactional email, and automation platforms.
|
||||
| **customer-io** | Behavior-based messaging | - |
|
||||
| **sendgrid** | Transactional email at scale | - |
|
||||
| **resend** | Developer-friendly transactional | ✓ |
|
||||
| **sequenzy** | Lifecycle email, sequences, transactional email | ✓ |
|
||||
| **kit** | Creator/newsletter focused | - |
|
||||
| **beehiiv** | Newsletter platform | - |
|
||||
| **klaviyo** | E-commerce email + SMS | - |
|
||||
@@ -183,7 +198,24 @@ Email marketing, transactional email, and automation platforms.
|
||||
| **brevo** | Email + SMS, popular in EU | - |
|
||||
| **activecampaign** | Email automation + CRM | - |
|
||||
|
||||
**Agent recommendation**: Resend for transactional (dev-friendly). Postmark for deliverability. Customer.io for advanced automation. Kit for creators. Beehiiv for newsletters. Klaviyo for e-commerce email/SMS. ActiveCampaign for email + CRM combo.
|
||||
**Agent recommendation**: Resend for transactional (dev-friendly). Sequenzy for lifecycle email, sequences, and agent-driven email marketing. Postmark for deliverability. Customer.io for advanced automation. Kit for creators. Beehiiv for newsletters. Klaviyo for e-commerce email/SMS. ActiveCampaign for email + CRM combo.
|
||||
|
||||
### SMS / Messaging
|
||||
|
||||
SMS and MMS marketing platforms and programmable messaging APIs.
|
||||
|
||||
| Tool | Best For | MCP Available |
|
||||
|------|----------|:-------------:|
|
||||
| **klaviyo** | DTC ecom already on Klaviyo email | - |
|
||||
| **postscript** | Shopify DTC, SMS-first depth | - |
|
||||
| **attentive** | Mid-market+ DTC, full-service | - |
|
||||
| **twilio** | Custom API builds, transactional, dev-first | - |
|
||||
| **plivo** | Twilio alternative, lower per-send cost | - |
|
||||
| **audiencetap** | DTC with AI-forward creative + on-pack QR opt-in | - |
|
||||
| **brevo** | EU SMB email + SMS combo | - |
|
||||
| **customer-io** | Behavior-based SMS automation | - |
|
||||
|
||||
**Agent recommendation**: Klaviyo SMS for ecom already on Klaviyo email. Postscript for Shopify-first depth. Attentive for mid-market+ wanting concierge support. Twilio (or Plivo for lower cost) for custom builds and transactional/auth. AudienceTap when AI creative or on-pack QR opt-in matters.
|
||||
|
||||
### Advertising
|
||||
|
||||
@@ -285,6 +317,37 @@ Company and person data enrichment for sales and marketing.
|
||||
|
||||
**Agent recommendation**: Clearbit for enrichment. Apollo for prospecting and outbound. ZoomInfo for enterprise B2B data with intent signals. Clay for waterfall enrichment across multiple providers.
|
||||
|
||||
### Email Verification
|
||||
|
||||
Pre-outreach email deliverability validation.
|
||||
|
||||
| Tool | Best For | Notes |
|
||||
|------|----------|-------|
|
||||
| **truelist** | Bulk + single email deliverability validation | Returns `email_state` (ok / email_invalid / risky / unknown / accept_all) + `email_sub_state`. MCP server + 7-language SDKs available. |
|
||||
|
||||
**Agent recommendation**: Truelist for any prospect list before outreach — Apollo/ZoomInfo/Hunter data accuracy is typically 60–80%, validation is non-negotiable to keep sender reputation healthy.
|
||||
|
||||
### Developer Intent / GitHub
|
||||
|
||||
Discovery channel for dev-tool SaaS prospecting via GitHub stargazers, forkers, and watchers.
|
||||
|
||||
| Tool | Best For | Notes |
|
||||
|------|----------|-------|
|
||||
| **github** | Stargazers / forks / watchers of competitor or adjacent repos | Public API; pair with Apollo/Clay/Hunter for email enrichment |
|
||||
|
||||
**Agent recommendation**: Use `github-prospects.js` CLI to pull stargazers/forks of 3–5 anchor repos (competitors, category leaders, complementary tools). Filter to users with `company` field set, then enrich missing emails via Apollo or Hunter, then validate via Truelist before outreach.
|
||||
|
||||
### Site Scraping (single-target only)
|
||||
|
||||
Programmatic page extraction for **individual public business sites** — not for the platforms hosting prospects (Google Maps, LinkedIn, Yelp, Apollo, etc.).
|
||||
|
||||
| Tool | Best For | Notes |
|
||||
|------|----------|-------|
|
||||
| **firecrawl** | Page → clean markdown / structured extraction | API + MCP; lower overhead for "just give me the content" |
|
||||
| **browserbase** | Real Chromium when rendering, interaction, or session state is required | API + MCP (Stagehand); use when Firecrawl can't handle the page |
|
||||
|
||||
**Agent recommendation**: Default to Firecrawl for static-ish pages and structured extraction. Use Browserbase when the site requires JS rendering, form interaction, cookie consent, or auth — and when you want session recordings for debugging. **For both: discovery happens on platforms (manual browser); extraction happens on the prospect's own website URL.** Don't point either tool at LinkedIn, Google Maps, Yelp, or similar.
|
||||
|
||||
### Reviews
|
||||
|
||||
Review management and social proof platforms.
|
||||
@@ -387,6 +450,16 @@ AI-powered content generation and optimization platforms.
|
||||
|
||||
**Agent recommendation**: AirOps for building AI content workflows that generate SEO-optimized content at scale.
|
||||
|
||||
### AI Search
|
||||
|
||||
AI-powered web search APIs built for LLMs and agents. Return structured results with on-demand text, highlights, and summaries.
|
||||
|
||||
| Tool | Best For | Notes |
|
||||
|------|----------|-------|
|
||||
| **exa** | Neural/semantic web search, content research, competitor discovery | Search + findSimilar + Contents; MCP and SDKs available |
|
||||
|
||||
**Agent recommendation**: Exa for neural search over the open web — content research, competitor/similar-page discovery, link prospecting, news monitoring, and audience research. Pairs well with seo-audit, content-strategy, and competitor-profiling skills.
|
||||
|
||||
### Partner Ecosystem
|
||||
|
||||
Partner data sharing, co-sell, and ecosystem management.
|
||||
@@ -468,6 +541,7 @@ These tools have Model Context Protocol servers available, enabling direct agent
|
||||
- **outreach** - Sales engagement sequences
|
||||
- **crossbeam** - Partner ecosystem data
|
||||
- **introw** - Partner relationship management
|
||||
- **exa** - AI-powered web search for LLMs and agents
|
||||
|
||||
To use MCP tools, ensure the appropriate MCP server is configured in your environment.
|
||||
|
||||
@@ -481,6 +555,16 @@ To use MCP tools, ensure the appropriate MCP server is configured in your enviro
|
||||
|
||||
Use Composio when you need MCP access to OAuth-heavy tools. Prefer native MCP servers (GA4, Stripe, Mailchimp, etc.) when available — they have deeper coverage.
|
||||
|
||||
### Cogny Integration
|
||||
|
||||
[Cogny](integrations/cogny.md) is a hosted MCP gateway focused on marketing channels — one federated MCP URL with managed OAuth across every channel you've connected. Narrower than Composio (marketing-only) and useful when you want SEO, paid social, and privacy-friendly analytics behind a single MCP login.
|
||||
|
||||
- **Setup**: connect channels at [cogny.com](https://cogny.com), then in Claude.ai go to Settings → Connectors → Add custom connector and paste `https://app.cogny.com/mcp`
|
||||
- **Channels**: Search Console, Bing Webmaster, Semrush, LinkedIn Ads, Reddit Ads, TikTok Ads, Plausible, Fathom
|
||||
- **Pricing**: Solo plan starts at $9/mo (7-day trial)
|
||||
|
||||
Use Cogny when you only need marketing channels and want to avoid running your own OAuth proxy. Prefer native APIs when you need deep, custom control of a single tool.
|
||||
|
||||
---
|
||||
|
||||
## Quick Start by Use Case
|
||||
|
||||
@@ -50,6 +50,7 @@ Every CLI reads credentials from environment variables:
|
||||
| `dataforseo` | `DATAFORSEO_LOGIN`, `DATAFORSEO_PASSWORD` |
|
||||
| `demio` | `DEMIO_API_KEY`, `DEMIO_API_SECRET` |
|
||||
| `dub` | `DUB_API_KEY` |
|
||||
| `exa` | `EXA_API_KEY` |
|
||||
| `g2` | `G2_API_TOKEN` |
|
||||
| `ga4` | `GA4_ACCESS_TOKEN` |
|
||||
| `google-ads` | `GOOGLE_ADS_TOKEN`, `GOOGLE_ADS_DEVELOPER_TOKEN`, `GOOGLE_ADS_CUSTOMER_ID` |
|
||||
@@ -148,6 +149,7 @@ DOMAINS=$(rewardful affiliates list | jq -r '.data[].email')
|
||||
| `dataforseo.js` | SEO | [DataForSEO](https://dataforseo.com) |
|
||||
| `demio.js` | Webinar | [Demio](https://demio.com) |
|
||||
| `dub.js` | Links | [Dub.co](https://dub.co) |
|
||||
| `exa.js` | AI Search | [Exa](https://exa.ai) |
|
||||
| `g2.js` | Reviews | [G2](https://g2.com) |
|
||||
| `ga4.js` | Analytics | [Google Analytics 4](https://analytics.google.com) |
|
||||
| `google-ads.js` | Ads | [Google Ads](https://ads.google.com) |
|
||||
|
||||
Executable
+147
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const API_KEY = process.env.EXA_API_KEY
|
||||
const BASE_URL = 'https://api.exa.ai'
|
||||
|
||||
if (!API_KEY) {
|
||||
console.error(JSON.stringify({ error: 'EXA_API_KEY environment variable required' }))
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
async function api(method, path, body) {
|
||||
if (args['dry-run']) {
|
||||
return { _dry_run: true, method, url: `${BASE_URL}${path}`, headers: { 'x-api-key': '***', 'Content-Type': 'application/json', 'x-exa-integration': 'marketingskills' }, body: body || undefined }
|
||||
}
|
||||
const res = await fetch(`${BASE_URL}${path}`, {
|
||||
method,
|
||||
headers: {
|
||||
'x-api-key': API_KEY,
|
||||
'Content-Type': 'application/json',
|
||||
'x-exa-integration': 'marketingskills',
|
||||
},
|
||||
body: body ? JSON.stringify(body) : undefined,
|
||||
})
|
||||
const text = await res.text()
|
||||
try {
|
||||
return JSON.parse(text)
|
||||
} catch {
|
||||
return { status: res.status, body: text }
|
||||
}
|
||||
}
|
||||
|
||||
function parseArgs(args) {
|
||||
const result = { _: [] }
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
const arg = args[i]
|
||||
if (arg.startsWith('--')) {
|
||||
const key = arg.slice(2)
|
||||
const next = args[i + 1]
|
||||
if (next && !next.startsWith('--')) {
|
||||
result[key] = next
|
||||
i++
|
||||
} else {
|
||||
result[key] = true
|
||||
}
|
||||
} else {
|
||||
result._.push(arg)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
function buildContents(args) {
|
||||
const contents = {}
|
||||
if (args.text) {
|
||||
contents.text = args['max-chars']
|
||||
? { maxCharacters: Number(args['max-chars']) }
|
||||
: true
|
||||
}
|
||||
if (args.highlights) {
|
||||
contents.highlights = args['highlight-query']
|
||||
? { query: args['highlight-query'] }
|
||||
: true
|
||||
}
|
||||
if (args.summary) {
|
||||
contents.summary = args['summary-query']
|
||||
? { query: args['summary-query'] }
|
||||
: {}
|
||||
}
|
||||
return Object.keys(contents).length ? contents : null
|
||||
}
|
||||
|
||||
const args = parseArgs(process.argv.slice(2))
|
||||
const [cmd, ...rest] = args._
|
||||
|
||||
async function main() {
|
||||
let result
|
||||
|
||||
switch (cmd) {
|
||||
case 'search': {
|
||||
const query = args.query || rest.join(' ')
|
||||
if (!query) { result = { error: '--query required' }; break }
|
||||
const body = { query }
|
||||
if (args.type) body.type = args.type
|
||||
if (args.num) body.numResults = Number(args.num)
|
||||
if (args.category) body.category = args.category
|
||||
if (args['include-domains']) body.includeDomains = args['include-domains'].split(',').map(s => s.trim())
|
||||
if (args['exclude-domains']) body.excludeDomains = args['exclude-domains'].split(',').map(s => s.trim())
|
||||
if (args['include-text']) body.includeText = args['include-text'].split(',').map(s => s.trim())
|
||||
if (args['exclude-text']) body.excludeText = args['exclude-text'].split(',').map(s => s.trim())
|
||||
if (args['start-published']) body.startPublishedDate = args['start-published']
|
||||
if (args['end-published']) body.endPublishedDate = args['end-published']
|
||||
if (args['start-crawl']) body.startCrawlDate = args['start-crawl']
|
||||
if (args['end-crawl']) body.endCrawlDate = args['end-crawl']
|
||||
if (args['user-location']) body.userLocation = args['user-location']
|
||||
const contents = buildContents(args)
|
||||
if (contents) body.contents = contents
|
||||
result = await api('POST', '/search', body)
|
||||
break
|
||||
}
|
||||
|
||||
case 'find-similar': {
|
||||
const url = args.url
|
||||
if (!url) { result = { error: '--url required' }; break }
|
||||
const body = { url }
|
||||
if (args.num) body.numResults = Number(args.num)
|
||||
if (args['include-domains']) body.includeDomains = args['include-domains'].split(',').map(s => s.trim())
|
||||
if (args['exclude-domains']) body.excludeDomains = args['exclude-domains'].split(',').map(s => s.trim())
|
||||
if (args['start-published']) body.startPublishedDate = args['start-published']
|
||||
if (args['end-published']) body.endPublishedDate = args['end-published']
|
||||
if (args['start-crawl']) body.startCrawlDate = args['start-crawl']
|
||||
if (args['end-crawl']) body.endCrawlDate = args['end-crawl']
|
||||
const contents = buildContents(args)
|
||||
if (contents) body.contents = contents
|
||||
result = await api('POST', '/findSimilar', body)
|
||||
break
|
||||
}
|
||||
|
||||
case 'contents': {
|
||||
const urls = args.urls?.split(',').map(s => s.trim())
|
||||
if (!urls || !urls.length) { result = { error: '--urls required (comma-separated)' }; break }
|
||||
const body = { urls }
|
||||
const contents = buildContents(args)
|
||||
if (contents) Object.assign(body, contents)
|
||||
else body.text = true
|
||||
result = await api('POST', '/contents', body)
|
||||
break
|
||||
}
|
||||
|
||||
default:
|
||||
result = {
|
||||
error: 'Unknown command',
|
||||
usage: {
|
||||
search: 'search --query <q> [--type neural|fast|auto|deep-lite|deep|deep-reasoning|instant] [--num <n>] [--category company|research paper|news|personal site|financial report|people] [--include-domains <d1,d2>] [--exclude-domains <d1,d2>] [--include-text <phrases>] [--exclude-text <phrases>] [--start-published <ISO>] [--end-published <ISO>] [--user-location <CC>] [--text] [--highlights] [--summary] [--max-chars <n>] [--highlight-query <q>] [--summary-query <q>]',
|
||||
'find-similar': 'find-similar --url <url> [--num <n>] [--include-domains <d1,d2>] [--exclude-domains <d1,d2>] [--start-published <ISO>] [--end-published <ISO>] [--text] [--highlights] [--summary]',
|
||||
contents: 'contents --urls <url1,url2> [--text] [--highlights] [--summary] [--max-chars <n>] [--highlight-query <q>] [--summary-query <q>]',
|
||||
options: '--dry-run (preview request without sending)',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(result, null, 2))
|
||||
}
|
||||
|
||||
main().catch(err => {
|
||||
console.error(JSON.stringify({ error: err.message }))
|
||||
process.exit(1)
|
||||
})
|
||||
Executable
+257
@@ -0,0 +1,257 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const TOKEN = process.env.GITHUB_TOKEN
|
||||
const BASE_URL = 'https://api.github.com'
|
||||
const USER_AGENT = 'marketingskills-prospects-cli'
|
||||
|
||||
function parseArgs(args) {
|
||||
const result = { _: [] }
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
const arg = args[i]
|
||||
if (arg.startsWith('--')) {
|
||||
const key = arg.slice(2)
|
||||
const next = args[i + 1]
|
||||
if (next && !next.startsWith('--')) {
|
||||
result[key] = next
|
||||
i++
|
||||
} else {
|
||||
result[key] = true
|
||||
}
|
||||
} else {
|
||||
result._.push(arg)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
const args = parseArgs(process.argv.slice(2))
|
||||
|
||||
async function api(path, opts = {}) {
|
||||
const url = path.startsWith('http') ? path : `${BASE_URL}${path}`
|
||||
const headers = {
|
||||
'Accept': 'application/vnd.github+json',
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
'User-Agent': USER_AGENT,
|
||||
}
|
||||
if (TOKEN) headers['Authorization'] = `Bearer ${TOKEN}`
|
||||
|
||||
if (args['dry-run']) {
|
||||
return {
|
||||
_dry_run: true,
|
||||
method: 'GET',
|
||||
url,
|
||||
headers: { ...headers, Authorization: TOKEN ? 'Bearer ***' : undefined },
|
||||
}
|
||||
}
|
||||
|
||||
const res = await fetch(url, { headers })
|
||||
const rateLimitRemaining = res.headers.get('x-ratelimit-remaining')
|
||||
const rateLimitReset = res.headers.get('x-ratelimit-reset')
|
||||
|
||||
if (res.status === 401 || res.status === 403) {
|
||||
const body = await res.text()
|
||||
return {
|
||||
error: `HTTP ${res.status}`,
|
||||
hint: TOKEN
|
||||
? 'Token rejected — check GITHUB_TOKEN scopes (public_repo is enough for public data).'
|
||||
: 'Set GITHUB_TOKEN env var to raise rate limit from 60/hr to 5000/hr.',
|
||||
rate_limit_remaining: rateLimitRemaining,
|
||||
rate_limit_reset_unix: rateLimitReset,
|
||||
body,
|
||||
}
|
||||
}
|
||||
|
||||
if (!res.ok) {
|
||||
const body = await res.text()
|
||||
return { error: `HTTP ${res.status}`, body }
|
||||
}
|
||||
|
||||
const data = await res.json()
|
||||
const linkHeader = res.headers.get('link') || ''
|
||||
const nextMatch = linkHeader.match(/<([^>]+)>;\s*rel="next"/)
|
||||
return {
|
||||
data,
|
||||
next: nextMatch ? nextMatch[1] : null,
|
||||
rate_limit_remaining: rateLimitRemaining,
|
||||
}
|
||||
}
|
||||
|
||||
async function paginate(path, { limit, perPage = 100 } = {}) {
|
||||
const initial = path.includes('?') ? `${path}&per_page=${perPage}` : `${path}?per_page=${perPage}`
|
||||
const all = []
|
||||
let next = initial
|
||||
let lastRate = null
|
||||
while (next) {
|
||||
const result = await api(next)
|
||||
if (result._dry_run) return result
|
||||
if (result.error) return result
|
||||
lastRate = result.rate_limit_remaining
|
||||
all.push(...result.data)
|
||||
if (limit && all.length >= limit) {
|
||||
return { data: all.slice(0, limit), rate_limit_remaining: lastRate, truncated: true }
|
||||
}
|
||||
next = result.next
|
||||
}
|
||||
return { data: all, rate_limit_remaining: lastRate, truncated: false }
|
||||
}
|
||||
|
||||
async function getUser(login) {
|
||||
const result = await api(`/users/${encodeURIComponent(login)}`)
|
||||
if (result._dry_run || result.error) return result
|
||||
return result.data
|
||||
}
|
||||
|
||||
function matchesFilter(user, opts) {
|
||||
if (!user) return false
|
||||
if (opts['with-email'] && !user.email) return false
|
||||
if (opts['with-company'] && !user.company) return false
|
||||
if (opts['with-blog'] && !user.blog) return false
|
||||
if (opts['type'] && user.type !== opts.type) return false
|
||||
return true
|
||||
}
|
||||
|
||||
async function enrichUsers(users, opts = {}, { concurrency = 5, targetCount } = {}) {
|
||||
const matched = []
|
||||
for (let i = 0; i < users.length; i += concurrency) {
|
||||
const batch = users.slice(i, i + concurrency)
|
||||
const profiles = await Promise.all(batch.map(u => getUser(u.login)))
|
||||
for (const profile of profiles) {
|
||||
if (!profile || profile.error) continue
|
||||
if (matchesFilter(profile, opts)) matched.push(profile)
|
||||
}
|
||||
if (targetCount && matched.length >= targetCount) {
|
||||
return matched.slice(0, targetCount)
|
||||
}
|
||||
}
|
||||
return matched
|
||||
}
|
||||
|
||||
function toCSV(users) {
|
||||
const cols = ['login', 'name', 'company', 'email', 'blog', 'location', 'bio', 'twitter_username', 'public_repos', 'followers', 'created_at', 'html_url']
|
||||
const escape = (v) => {
|
||||
if (v === null || v === undefined) return ''
|
||||
const s = String(v).replace(/\r?\n/g, ' ')
|
||||
if (s.includes(',') || s.includes('"')) return `"${s.replace(/"/g, '""')}"`
|
||||
return s
|
||||
}
|
||||
const lines = [cols.join(',')]
|
||||
for (const u of users) {
|
||||
lines.push(cols.map(c => escape(u[c])).join(','))
|
||||
}
|
||||
return lines.join('\n')
|
||||
}
|
||||
|
||||
function parseRepo(input) {
|
||||
if (!input) return null
|
||||
const trimmed = input.replace(/^https?:\/\/github\.com\//, '').replace(/\.git$/, '').replace(/\/$/, '')
|
||||
const parts = trimmed.split('/')
|
||||
if (parts.length < 2) return null
|
||||
return { owner: parts[0], repo: parts[1] }
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const [command, ...rest] = args._
|
||||
|
||||
let result
|
||||
|
||||
switch (command) {
|
||||
case 'stargazers': {
|
||||
const repo = parseRepo(rest[0])
|
||||
if (!repo) { result = { error: 'Usage: stargazers <owner/repo> [--limit N] [--target N] [--enrich] [--with-email] [--with-company] [--with-blog] [--format csv|json]' }; break }
|
||||
const limit = args.limit ? parseInt(args.limit, 10) : undefined
|
||||
const target = args.target ? parseInt(args.target, 10) : undefined
|
||||
const page = await paginate(`/repos/${repo.owner}/${repo.repo}/stargazers`, { limit })
|
||||
if (page._dry_run || page.error) { result = page; break }
|
||||
let users = page.data
|
||||
if (args.enrich || args['with-email'] || args['with-company'] || args['with-blog'] || args.type) {
|
||||
users = await enrichUsers(users, args, { targetCount: target })
|
||||
}
|
||||
if (args.format === 'csv') {
|
||||
console.log(toCSV(users))
|
||||
return
|
||||
}
|
||||
result = { count: users.length, rate_limit_remaining: page.rate_limit_remaining, truncated: page.truncated, users }
|
||||
break
|
||||
}
|
||||
|
||||
case 'forks': {
|
||||
const repo = parseRepo(rest[0])
|
||||
if (!repo) { result = { error: 'Usage: forks <owner/repo> [--limit N] [--target N] [--enrich] [--with-email] [--with-company] [--with-blog] [--format csv|json]' }; break }
|
||||
const limit = args.limit ? parseInt(args.limit, 10) : undefined
|
||||
const target = args.target ? parseInt(args.target, 10) : undefined
|
||||
const page = await paginate(`/repos/${repo.owner}/${repo.repo}/forks`, { limit })
|
||||
if (page._dry_run || page.error) { result = page; break }
|
||||
const forkOwners = page.data.map(f => f.owner)
|
||||
let users = forkOwners
|
||||
if (args.enrich || args['with-email'] || args['with-company'] || args['with-blog'] || args.type) {
|
||||
users = await enrichUsers(forkOwners, args, { targetCount: target })
|
||||
}
|
||||
if (args.format === 'csv') {
|
||||
console.log(toCSV(users))
|
||||
return
|
||||
}
|
||||
result = { count: users.length, rate_limit_remaining: page.rate_limit_remaining, truncated: page.truncated, users }
|
||||
break
|
||||
}
|
||||
|
||||
case 'watchers': {
|
||||
const repo = parseRepo(rest[0])
|
||||
if (!repo) { result = { error: 'Usage: watchers <owner/repo> [--limit N] [--target N] [--enrich] [--with-email] [--with-company] [--with-blog] [--format csv|json]' }; break }
|
||||
const limit = args.limit ? parseInt(args.limit, 10) : undefined
|
||||
const target = args.target ? parseInt(args.target, 10) : undefined
|
||||
const page = await paginate(`/repos/${repo.owner}/${repo.repo}/subscribers`, { limit })
|
||||
if (page._dry_run || page.error) { result = page; break }
|
||||
let users = page.data
|
||||
if (args.enrich || args['with-email'] || args['with-company'] || args['with-blog'] || args.type) {
|
||||
users = await enrichUsers(users, args, { targetCount: target })
|
||||
}
|
||||
if (args.format === 'csv') {
|
||||
console.log(toCSV(users))
|
||||
return
|
||||
}
|
||||
result = { count: users.length, rate_limit_remaining: page.rate_limit_remaining, truncated: page.truncated, users }
|
||||
break
|
||||
}
|
||||
|
||||
case 'user': {
|
||||
const login = rest[0]
|
||||
if (!login) { result = { error: 'Usage: user <username>' }; break }
|
||||
result = await getUser(login)
|
||||
break
|
||||
}
|
||||
|
||||
case 'rate-limit': {
|
||||
const res = await api('/rate_limit')
|
||||
result = res._dry_run || res.error ? res : res.data
|
||||
break
|
||||
}
|
||||
|
||||
default:
|
||||
result = {
|
||||
error: 'Unknown command',
|
||||
usage: {
|
||||
stargazers: 'stargazers <owner/repo> [--limit N] [--target N] [--enrich] [--with-email] [--with-company] [--with-blog] [--type User|Organization] [--format csv|json]',
|
||||
forks: 'forks <owner/repo> [--limit N] [--target N] [--enrich] [--with-email] [--with-company] [--with-blog] [--type User|Organization] [--format csv|json]',
|
||||
watchers: 'watchers <owner/repo> [--limit N] [--target N] [--enrich] [--with-email] [--with-company] [--with-blog] [--format csv|json]',
|
||||
user: 'user <username>',
|
||||
'rate-limit': 'rate-limit',
|
||||
},
|
||||
notes: [
|
||||
'Set GITHUB_TOKEN env var for 5000 req/hr (vs 60/hr unauthenticated).',
|
||||
'Token needs only public_repo scope for public data; no scope is required to list public stargazers/forks.',
|
||||
'--enrich fetches each users full profile (1 extra request per user). Use with --limit on large repos.',
|
||||
'--with-email / --with-company / --with-blog imply --enrich.',
|
||||
'--target N stops enrichment as soon as N users match the filters (saves API quota on restrictive filters).',
|
||||
'--format csv outputs prospecting-ready CSV; default JSON.',
|
||||
'Pair with Apollo, Clay, Hunter, or Truelist to fill in missing emails.',
|
||||
],
|
||||
}
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(result, null, 2))
|
||||
}
|
||||
|
||||
main().catch(err => {
|
||||
console.error(JSON.stringify({ error: err.message }))
|
||||
process.exit(1)
|
||||
})
|
||||
Executable
+196
@@ -0,0 +1,196 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const API_KEY = process.env.RANKPARSE_API_KEY
|
||||
const BASE_URL = 'https://api.rankparse.com/v1'
|
||||
|
||||
if (!API_KEY) {
|
||||
console.error(JSON.stringify({ error: 'RANKPARSE_API_KEY environment variable required' }))
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
async function api(method, path, body) {
|
||||
if (args['dry-run']) {
|
||||
return { _dry_run: true, method, url: `${BASE_URL}${path}`, headers: { 'X-API-Key': '***', 'Content-Type': 'application/json' }, body }
|
||||
}
|
||||
const init = {
|
||||
method,
|
||||
headers: {
|
||||
'X-API-Key': API_KEY,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
}
|
||||
if (body) init.body = JSON.stringify(body)
|
||||
const res = await fetch(`${BASE_URL}${path}`, init)
|
||||
const text = await res.text()
|
||||
try {
|
||||
return JSON.parse(text)
|
||||
} catch {
|
||||
return { status: res.status, body: text }
|
||||
}
|
||||
}
|
||||
|
||||
function parseArgs(args) {
|
||||
const result = { _: [] }
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
const arg = args[i]
|
||||
if (arg.startsWith('--')) {
|
||||
const key = arg.slice(2)
|
||||
const next = args[i + 1]
|
||||
if (next && !next.startsWith('--')) {
|
||||
result[key] = next
|
||||
i++
|
||||
} else {
|
||||
result[key] = true
|
||||
}
|
||||
} else {
|
||||
result._.push(arg)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
const args = parseArgs(process.argv.slice(2))
|
||||
const [cmd, sub, ...rest] = args._
|
||||
|
||||
function requireDomain() {
|
||||
if (!args.domain) return { error: '--domain required' }
|
||||
return null
|
||||
}
|
||||
|
||||
function requireUrl() {
|
||||
if (!args.url) return { error: '--url required' }
|
||||
return null
|
||||
}
|
||||
|
||||
async function main() {
|
||||
let result
|
||||
|
||||
switch (cmd) {
|
||||
case 'domain-authority':
|
||||
case 'domain-rank':
|
||||
case 'tech-stack':
|
||||
case 'site-health':
|
||||
case 'similar-domains':
|
||||
case 'link-audit':
|
||||
case 'site-explorer':
|
||||
case 'crawl-history': {
|
||||
const err = requireDomain(); if (err) { result = err; break }
|
||||
result = await api('GET', `/${cmd}?domain=${encodeURIComponent(args.domain)}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'backlinks': {
|
||||
const err = requireDomain(); if (err) { result = err; break }
|
||||
const params = new URLSearchParams({ domain: args.domain })
|
||||
if (args.limit) params.set('limit', args.limit)
|
||||
if (args.sort) params.set('sort', args.sort)
|
||||
if (args['from-domain']) params.set('from_domain', args['from-domain'])
|
||||
if (args['link-type']) params.set('link_type', args['link-type'])
|
||||
if (args.score) params.set('score', 'true')
|
||||
result = await api('GET', `/backlinks?${params}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'referring-domains':
|
||||
case 'outbound-links':
|
||||
case 'anchor-text':
|
||||
case 'top-pages':
|
||||
case 'sitemap': {
|
||||
const err = requireDomain(); if (err) { result = err; break }
|
||||
const params = new URLSearchParams({ domain: args.domain })
|
||||
if (args.limit) params.set('limit', args.limit)
|
||||
result = await api('GET', `/${cmd}?${params}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'domain-overlap': {
|
||||
if (!args.domains) { result = { error: '--domains required (comma-separated, 2-5 domains)' }; break }
|
||||
const params = new URLSearchParams({ domains: args.domains })
|
||||
if (args.limit) params.set('limit', args.limit)
|
||||
result = await api('GET', `/domain-overlap?${params}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'link-intersect': {
|
||||
if (!args['domain-a'] || !args['domain-b']) { result = { error: '--domain-a and --domain-b required' }; break }
|
||||
const params = new URLSearchParams({ domain_a: args['domain-a'], domain_b: args['domain-b'] })
|
||||
if (args.limit) params.set('limit', args.limit)
|
||||
result = await api('GET', `/link-intersect?${params}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'competitor-gap': {
|
||||
const err = requireDomain(); if (err) { result = err; break }
|
||||
if (!args.vs) { result = { error: '--vs required (competitor domain)' }; break }
|
||||
const params = new URLSearchParams({ domain: args.domain, vs: args.vs })
|
||||
if (args.limit) params.set('limit', args.limit)
|
||||
result = await api('GET', `/competitor-gap?${params}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'page-seo': {
|
||||
const err = requireUrl(); if (err) { result = err; break }
|
||||
result = await api('GET', `/page-seo?url=${encodeURIComponent(args.url)}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'page-performance': {
|
||||
const err = requireUrl(); if (err) { result = err; break }
|
||||
const params = new URLSearchParams({ url: args.url })
|
||||
if (args.strategy) params.set('strategy', args.strategy)
|
||||
result = await api('GET', `/page-performance?${params}`)
|
||||
break
|
||||
}
|
||||
|
||||
case 'batch': {
|
||||
if (!args.domains) { result = { error: '--domains required (comma-separated)' }; break }
|
||||
const domains = args.domains.split(',').map(d => d.trim()).filter(Boolean)
|
||||
result = await api('POST', '/batch', { domains })
|
||||
break
|
||||
}
|
||||
|
||||
case 'me':
|
||||
result = await api('GET', '/me')
|
||||
break
|
||||
|
||||
case 'credits':
|
||||
result = await api('GET', '/credits')
|
||||
break
|
||||
|
||||
default:
|
||||
result = {
|
||||
error: 'Unknown command',
|
||||
usage: {
|
||||
'domain-authority': 'domain-authority --domain <domain>',
|
||||
'domain-rank': 'domain-rank --domain <domain>',
|
||||
'backlinks': 'backlinks --domain <domain> [--limit <n>] [--sort importance|recent] [--from-domain <d>] [--link-type <t>] [--score]',
|
||||
'referring-domains': 'referring-domains --domain <domain> [--limit <n>]',
|
||||
'outbound-links': 'outbound-links --domain <domain> [--limit <n>]',
|
||||
'anchor-text': 'anchor-text --domain <domain> [--limit <n>]',
|
||||
'top-pages': 'top-pages --domain <domain> [--limit <n>]',
|
||||
'domain-overlap': 'domain-overlap --domains <d1,d2,...> [--limit <n>]',
|
||||
'link-intersect': 'link-intersect --domain-a <d> --domain-b <d> [--limit <n>]',
|
||||
'competitor-gap': 'competitor-gap --domain <d> --vs <competitor> [--limit <n>]',
|
||||
'similar-domains': 'similar-domains --domain <domain>',
|
||||
'tech-stack': 'tech-stack --domain <domain>',
|
||||
'site-health': 'site-health --domain <domain>',
|
||||
'sitemap': 'sitemap --domain <domain> [--limit <n>]',
|
||||
'crawl-history': 'crawl-history --domain <domain>',
|
||||
'page-seo': 'page-seo --url <url>',
|
||||
'page-performance': 'page-performance --url <url> [--strategy mobile|desktop]',
|
||||
'link-audit': 'link-audit --domain <domain>',
|
||||
'site-explorer': 'site-explorer --domain <domain>',
|
||||
'batch': 'batch --domains <d1,d2,...>',
|
||||
'me': 'me (account info + credit balance)',
|
||||
'credits': 'credits (credit balance)',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(result, null, 2))
|
||||
}
|
||||
|
||||
main().catch(err => {
|
||||
console.error(JSON.stringify({ error: err.message }))
|
||||
process.exit(1)
|
||||
})
|
||||
@@ -0,0 +1,152 @@
|
||||
# Attentive
|
||||
|
||||
Full-service SMS marketing platform for mid-market and enterprise direct-to-consumer brands. Combines tooling with dedicated success teams.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API |
|
||||
| MCP | - | Not available |
|
||||
| CLI | - | None |
|
||||
| SDK | - | Use API directly |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: OAuth 2.0 or API Key (depending on integration type)
|
||||
- **Header**: `Authorization: Bearer {access_token}`
|
||||
- **Get credentials**: Account-level provisioning through Attentive integrations team
|
||||
- **Note**: API access requires partnership or eligible plan
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Subscribe a user
|
||||
|
||||
```bash
|
||||
POST https://api.attentivemobile.com/v1/subscriptions
|
||||
|
||||
{
|
||||
"user": {
|
||||
"phone": "+15551234567",
|
||||
"email": "user@example.com"
|
||||
},
|
||||
"signUpSourceId": "...",
|
||||
"subscriptionType": "MARKETING"
|
||||
}
|
||||
```
|
||||
|
||||
Sign-up source ID determines opt-in attribution and compliance disclosure shown.
|
||||
|
||||
### Unsubscribe
|
||||
|
||||
```bash
|
||||
POST https://api.attentivemobile.com/v1/subscriptions/unsubscribe
|
||||
|
||||
{
|
||||
"user": { "phone": "+15551234567" },
|
||||
"subscriptionType": "MARKETING"
|
||||
}
|
||||
```
|
||||
|
||||
### Custom event tracking
|
||||
|
||||
```bash
|
||||
POST https://api.attentivemobile.com/v1/events/custom
|
||||
|
||||
{
|
||||
"user": { "phone": "+15551234567" },
|
||||
"type": "abandoned_cart",
|
||||
"properties": {
|
||||
"cart_value": 89.99,
|
||||
"items": ["Product A"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### E-commerce events (purchase, add-to-cart, product view)
|
||||
|
||||
```bash
|
||||
POST https://api.attentivemobile.com/v1/events/ecommerce/purchase
|
||||
|
||||
{
|
||||
"user": { "phone": "+15551234567" },
|
||||
"items": [{
|
||||
"productId": "SKU-123",
|
||||
"name": "Product A",
|
||||
"price": { "value": 4999, "currency": "USD" },
|
||||
"quantity": 1
|
||||
}],
|
||||
"occurredAt": "2026-05-15T10:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
Similar endpoints for `/add_to_cart`, `/product_view`, `/checkout`.
|
||||
|
||||
### Send transactional message
|
||||
|
||||
```bash
|
||||
POST https://api.attentivemobile.com/v1/messages/transactional
|
||||
|
||||
{
|
||||
"user": { "phone": "+15551234567" },
|
||||
"messageBody": "Your order #1234 shipped. Track: https://...",
|
||||
"type": "ORDER_SHIPPING"
|
||||
}
|
||||
```
|
||||
|
||||
### List campaigns
|
||||
|
||||
```bash
|
||||
GET https://api.attentivemobile.com/v1/campaigns
|
||||
```
|
||||
|
||||
### Webhooks
|
||||
|
||||
Subscribe to: `subscriber.created`, `subscriber.unsubscribed`, `message.sent`, `message.delivered`, `message.failed`, `conversion.attributed`.
|
||||
|
||||
## API Pattern
|
||||
|
||||
REST + JSON. Bearer auth. Webhook signature verification via HMAC-SHA256.
|
||||
|
||||
## Key Features
|
||||
|
||||
- Concierge sales (live agents responding via SMS)
|
||||
- Identity resolution (matching anonymous site visitors to phone numbers for retargeting)
|
||||
- Strong analytics + attribution (multi-touch, conversion path)
|
||||
- AI Journey AI / Pro AI (AI-generated send timing and copy)
|
||||
- Custom Audience Manager (advanced segmentation)
|
||||
- A/B testing built into campaign builder
|
||||
- Two-way SMS at scale
|
||||
- A2P 10DLC fully managed
|
||||
- Short code provisioning included on most plans
|
||||
- Dedicated CSM, copy support, strategy consults
|
||||
|
||||
## Pricing
|
||||
|
||||
- Custom contracts; typically $1K–$10K+/mo platform fee + per-send fees
|
||||
- Annual contracts standard
|
||||
- Pricing rarely makes sense for <50K active SMS subscribers
|
||||
- Negotiable based on volume and tier
|
||||
|
||||
## When to Use
|
||||
|
||||
- Mid-market+ DTC brand (50K+ active SMS subscribers, $5M+/yr revenue)
|
||||
- Want dedicated CSM and copy support, not just tooling
|
||||
- Need concierge two-way SMS at scale
|
||||
- Multi-channel ecom team that wants single-pane SMS-first platform
|
||||
- Want short code included rather than separately leased
|
||||
- Identity resolution / cross-device matching matters
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- Smaller brands — too expensive, overkill
|
||||
- Already on Klaviyo and SMS is secondary — Klaviyo SMS is simpler
|
||||
- Shopify-only and want depth — Postscript is more Shopify-native
|
||||
- Custom platform / B2B SaaS — Twilio
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- sms
|
||||
- emails (run alongside)
|
||||
- churn-prevention
|
||||
- customer-research (identity resolution data)
|
||||
@@ -0,0 +1,125 @@
|
||||
# AudienceTap
|
||||
|
||||
SMS and email marketing platform built for direct-to-consumer brands. Newer entrant positioning as a more flexible, AI-forward alternative to Klaviyo / Postscript / Attentive with emphasis on creative automation and on-pack QR opt-in.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API (confirm with vendor; access tied to plan tier) |
|
||||
| MCP | - | Not available |
|
||||
| CLI | - | None |
|
||||
| SDK | - | Use API directly |
|
||||
|
||||
> Verify current API surface and capabilities at https://audiencetap.com before building against this guide — newer platform, surface evolves quickly.
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key (Bearer)
|
||||
- **Header**: `Authorization: Bearer {api_key}`
|
||||
- **Get key**: AudienceTap dashboard → Settings → API
|
||||
- **Note**: API access generally requires Growth or Pro tier
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Subscribe a user
|
||||
|
||||
```bash
|
||||
POST https://api.audiencetap.com/v1/subscribers
|
||||
|
||||
{
|
||||
"phone_number": "+15551234567",
|
||||
"email": "user@example.com",
|
||||
"first_name": "Jane",
|
||||
"opt_in_source": "checkout",
|
||||
"list_id": "..."
|
||||
}
|
||||
```
|
||||
|
||||
### Unsubscribe
|
||||
|
||||
```bash
|
||||
POST https://api.audiencetap.com/v1/subscribers/unsubscribe
|
||||
|
||||
{
|
||||
"phone_number": "+15551234567",
|
||||
"channel": "sms"
|
||||
}
|
||||
```
|
||||
|
||||
### Track event
|
||||
|
||||
```bash
|
||||
POST https://api.audiencetap.com/v1/events
|
||||
|
||||
{
|
||||
"subscriber": { "phone_number": "+15551234567" },
|
||||
"event_name": "abandoned_cart",
|
||||
"properties": {
|
||||
"cart_value": 89.99,
|
||||
"items": ["Product A"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Send transactional message
|
||||
|
||||
```bash
|
||||
POST https://api.audiencetap.com/v1/messages/transactional
|
||||
|
||||
{
|
||||
"phone_number": "+15551234567",
|
||||
"body": "Your order #1234 shipped. Track: https://...",
|
||||
"category": "shipping"
|
||||
}
|
||||
```
|
||||
|
||||
### List flows / automations
|
||||
|
||||
```bash
|
||||
GET https://api.audiencetap.com/v1/flows
|
||||
```
|
||||
|
||||
### Webhooks
|
||||
|
||||
Subscribe to: subscriber events, message delivery events, conversion attribution. Configured in dashboard.
|
||||
|
||||
## API Pattern
|
||||
|
||||
REST + JSON. Bearer auth. Pagination conventions vary by endpoint — confirm in current docs.
|
||||
|
||||
## Key Features
|
||||
|
||||
- SMS + email on one platform (positioned similarly to Klaviyo's combined product)
|
||||
- AI creative generation (subject lines, SMS copy, image variants)
|
||||
- On-pack QR code opt-in (insert-card based opt-in for ecom shipments)
|
||||
- Shopify, BigCommerce, and headless commerce integrations
|
||||
- A2P 10DLC handled in-platform
|
||||
- Automation builder for cart, post-purchase, win-back, etc.
|
||||
- Identity resolution (matching anonymous visitors to known subscribers)
|
||||
|
||||
## Pricing
|
||||
|
||||
- Plans typically tiered by subscriber count + send volume
|
||||
- Per-send pricing comparable to other DTC SMS platforms (~$0.015 SMS, ~$0.04 MMS)
|
||||
- Confirm current pricing at https://audiencetap.com — newer platform with evolving plans
|
||||
|
||||
## When to Use
|
||||
|
||||
- Mid-market DTC brand willing to try a newer platform for better AI tooling or pricing leverage
|
||||
- Brand wanting on-pack QR opt-in as a primary acquisition channel (printed insert cards driving SMS opt-in)
|
||||
- Want SMS + email under one roof with stronger AI features than incumbents currently offer
|
||||
- Evaluating alternatives during a contract negotiation with Klaviyo / Postscript / Attentive
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- Need a fully battle-tested platform with deep ecosystem — incumbents have more integrations and case studies
|
||||
- Compliance tooling at enterprise scale — verify A2P / TCPA depth before committing for large lists
|
||||
- B2B SaaS, transactional, or developer-first use — Twilio or Plivo
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- sms
|
||||
- emails
|
||||
- referrals (on-pack QR opt-in is a referral-adjacent acquisition channel)
|
||||
- directory-submissions (on-pack insert cards as an offline channel)
|
||||
@@ -0,0 +1,111 @@
|
||||
# Browserbase
|
||||
|
||||
Headless browser as a service. Spin up real Chromium browsers via API, drive them with Playwright/Puppeteer, get full session recordings. Useful when a target site requires JS rendering, user interaction, or session state that simple HTTP fetches can't handle.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API for session management |
|
||||
| MCP | ✓ | Official Browserbase MCP server (Stagehand) |
|
||||
| CLI | - | None official |
|
||||
| SDK | ✓ | Node, Python; drives Playwright/Puppeteer |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `x-bb-api-key: YOUR_API_KEY`
|
||||
- **Get key**: https://www.browserbase.com/settings
|
||||
- **Env vars**: `BROWSERBASE_API_KEY`, `BROWSERBASE_PROJECT_ID`
|
||||
- **Base URL**: `https://api.browserbase.com`
|
||||
|
||||
## Core Operations
|
||||
|
||||
### Create a browser session
|
||||
|
||||
```bash
|
||||
POST https://api.browserbase.com/v1/sessions
|
||||
x-bb-api-key: YOUR_API_KEY
|
||||
|
||||
{
|
||||
"projectId": "YOUR_PROJECT_ID"
|
||||
}
|
||||
```
|
||||
|
||||
Returns a session ID and a WebSocket URL (`connectUrl`) you connect to with Playwright or Puppeteer.
|
||||
|
||||
### Connect with Playwright (Node)
|
||||
|
||||
```js
|
||||
import { chromium } from 'playwright-core';
|
||||
import { Browserbase } from '@browserbasehq/sdk';
|
||||
|
||||
const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY });
|
||||
const session = await bb.sessions.create({ projectId: process.env.BROWSERBASE_PROJECT_ID });
|
||||
|
||||
const browser = await chromium.connectOverCDP(session.connectUrl);
|
||||
const page = await browser.newPage();
|
||||
await page.goto('https://joescoffeeshop.com');
|
||||
const html = await page.content();
|
||||
const title = await page.title();
|
||||
await browser.close();
|
||||
```
|
||||
|
||||
### List session recordings
|
||||
|
||||
```bash
|
||||
GET https://api.browserbase.com/v1/sessions/{sessionId}/logs
|
||||
```
|
||||
|
||||
Useful for debugging when a scrape doesn't return what you expected — session recordings show exactly what the browser saw.
|
||||
|
||||
### Stagehand (high-level AI-friendly wrapper)
|
||||
|
||||
Browserbase ships [Stagehand](https://github.com/browserbase/stagehand), a Playwright wrapper with `act()`, `extract()`, and `observe()` methods that take natural-language instructions instead of CSS selectors. Stagehand also publishes an MCP server.
|
||||
|
||||
```js
|
||||
import { Stagehand } from '@browserbasehq/stagehand';
|
||||
|
||||
const stagehand = new Stagehand({ env: 'BROWSERBASE' });
|
||||
await stagehand.init();
|
||||
await stagehand.page.goto('https://joescoffeeshop.com');
|
||||
|
||||
const contact = await stagehand.page.extract({
|
||||
instruction: "Extract the business phone number, email, and street address",
|
||||
schema: { phone: 'string', email: 'string', address: 'string' }
|
||||
});
|
||||
```
|
||||
|
||||
## When to Use (over Firecrawl)
|
||||
|
||||
- **Site requires user interaction** (cookie consent, age gate, click-through before content loads)
|
||||
- **Form submission** to access a quote/contact page
|
||||
- **Session state matters** (logged-in tools, multi-step flows)
|
||||
- **Complex JS rendering** that even Firecrawl's headless option struggles with
|
||||
- **Want full session recordings** for audit/debugging
|
||||
- **AI-driven scraping** via Stagehand's natural-language extraction
|
||||
|
||||
For simple "scrape a page as markdown," **Firecrawl is lower-overhead**. Use Browserbase when you actually need the browser-as-a-service model.
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
Same hard rules as Firecrawl. Browserbase gives you a more powerful browser, which means the temptation to bypass anti-scraping defenses is higher. Don't:
|
||||
|
||||
- ✗ Bulk-scrape Google Maps / search results, LinkedIn, Yelp, or any platform whose ToS forbids it
|
||||
- ✗ Bypass CAPTCHAs, login walls, or bot protections
|
||||
- ✗ Auto-fill forms on platforms you don't have an account or legitimate access to
|
||||
|
||||
**Use Browserbase for**: individual public business sites the user has a URL for, where rendering or interaction is required.
|
||||
|
||||
## Pricing
|
||||
|
||||
- Free tier: limited monthly minutes
|
||||
- Paid tiers scale by browser minutes + concurrency
|
||||
- Confirm at https://www.browserbase.com/pricing
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- prospecting (programmatic site visits for prospect enrichment)
|
||||
- competitor-profiling (when competitor sites need rendering or interaction)
|
||||
- cro (page audits that need real browser state)
|
||||
- analytics (testing tracking implementations end-to-end)
|
||||
@@ -0,0 +1,153 @@
|
||||
# Cogny
|
||||
|
||||
Hosted MCP gateway that bundles several marketing tools behind one URL with managed OAuth. Useful when you want AI agents to talk to multiple marketing channels without standing up your own OAuth proxy.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | - | Access is via MCP, not a public REST API |
|
||||
| MCP | ✓ | One federated MCP URL, OAuth-managed per channel |
|
||||
| CLI | - | Connect tools via the Cogny dashboard |
|
||||
| SDK | - | Use any MCP-capable client (Claude.ai, Claude API, Claude CLI, ChatGPT, etc.) |
|
||||
|
||||
## How it works
|
||||
|
||||
```
|
||||
┌──────────────────┐ ┌──────────────────────┐ ┌───────────────────┐
|
||||
│ Claude.ai / │──────│ app.cogny.com/mcp │──────│ Channel API │
|
||||
│ Claude CLI / │ │ (federated MCP │ │ (LinkedIn, GSC, │
|
||||
│ ChatGPT, etc. │ │ endpoint) │ │ TikTok, …) │
|
||||
└──────────────────┘ └──────────────────────┘ └───────────────────┘
|
||||
│
|
||||
│ Federates per-channel
|
||||
│ mcp.cogny.com endpoints
|
||||
▼ with managed OAuth
|
||||
```
|
||||
|
||||
`https://app.cogny.com/mcp` is a single federated endpoint that fans out to the per-channel `mcp.cogny.com` MCP servers — you connect once and every channel you've authorized in the dashboard becomes available.
|
||||
|
||||
## When to Use Cogny vs. Native or Composio
|
||||
|
||||
Cogny is one of several integration paths. Pick based on what you need:
|
||||
|
||||
| Scenario | Suggested |
|
||||
|----------|-----------|
|
||||
| Tool has a native MCP server you can self-host | Native MCP |
|
||||
| You want a single bill / single login across many channels | Cogny or Composio |
|
||||
| You need 500+ tools (CRM, productivity, dev tools, etc.) | [Composio](composio.md) |
|
||||
| You only need the marketing channels Cogny ships | Cogny |
|
||||
| You need deep, custom control over a single tool | Native API + CLI |
|
||||
|
||||
Cogny is narrower than Composio — it focuses on marketing channels — but the trade-off is fewer moving parts when you only need those channels.
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Connect your channels
|
||||
|
||||
1. Sign up at [cogny.com](https://cogny.com) and create a workspace.
|
||||
2. In the dashboard, connect the channels you want (OAuth flow per tool).
|
||||
|
||||
### 2. Add Cogny as a custom connector
|
||||
|
||||
In Claude.ai:
|
||||
|
||||
1. Go to **Settings → Connectors → Add custom connector**.
|
||||
2. Enter name **Cogny** and paste your MCP URL:
|
||||
|
||||
```
|
||||
https://app.cogny.com/mcp
|
||||
```
|
||||
|
||||
3. Complete the OAuth handshake when prompted.
|
||||
|
||||
The same `https://app.cogny.com/mcp` URL works in any MCP-capable client (Claude API, Claude CLI, ChatGPT custom connectors, etc.) — Cogny handles auth and routes each tool call to the right underlying channel.
|
||||
|
||||
## Channels Available via Cogny
|
||||
|
||||
Coverage changes over time — check the Cogny dashboard for the current list.
|
||||
|
||||
### SEO
|
||||
|
||||
| Channel | Typical use |
|
||||
|---------|-------------|
|
||||
| Search Console | Search analytics, URL inspection, sitemap submission |
|
||||
| Bing Webmaster | Coverage, query stats, URL submission quota |
|
||||
| Semrush | Keyword research, competitor checks (subject to Semrush plan) |
|
||||
|
||||
### Paid Social
|
||||
|
||||
| Channel | Typical use |
|
||||
|---------|-------------|
|
||||
| LinkedIn Ads | Campaign reporting, audience overlap, creative checks |
|
||||
| Reddit Ads | Campaign reporting, audience and conversion lookups |
|
||||
| TikTok Ads | Campaign reporting, ad group / creative health |
|
||||
|
||||
### Analytics
|
||||
|
||||
| Channel | Typical use |
|
||||
|---------|-------------|
|
||||
| Plausible | Privacy-friendly site analytics, goal reporting |
|
||||
| Fathom | Privacy-friendly site analytics |
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
Once `https://app.cogny.com/mcp` is wired up, the agent picks tools by name across every channel you've connected.
|
||||
|
||||
### Search Console — pages losing clicks
|
||||
|
||||
```
|
||||
> "Pull Search Console clicks for the last 28 days vs the previous 28 days,
|
||||
group by page, and list pages where clicks dropped more than 30%."
|
||||
```
|
||||
|
||||
### LinkedIn Ads — campaign hygiene
|
||||
|
||||
```
|
||||
> "List my active LinkedIn campaigns, their CTR and CPL for the last 14 days,
|
||||
and flag anything with CTR below 0.4%."
|
||||
```
|
||||
|
||||
### Reddit Ads — audience overlap
|
||||
|
||||
```
|
||||
> "For my Reddit Ads campaigns this month, summarize spend, conversions, and
|
||||
the subreddits driving the most clicks."
|
||||
```
|
||||
|
||||
### TikTok Ads — creative fatigue
|
||||
|
||||
```
|
||||
> "Find TikTok ad groups where CTR has dropped 25%+ over the last 7 days
|
||||
compared to the prior 7 days."
|
||||
```
|
||||
|
||||
### Plausible — funnel sanity check
|
||||
|
||||
```
|
||||
> "From Plausible, show top 10 pages by pageviews and the conversion rate
|
||||
for the 'Signup' goal over the last 30 days."
|
||||
```
|
||||
|
||||
## Limitations
|
||||
|
||||
- **Marketing-only scope** — Cogny ships marketing channels; for CRM, productivity, or dev tools use [Composio](composio.md) or the relevant native integration.
|
||||
- **Hosted dependency** — if `app.cogny.com` is down, the connected channels are unavailable through this path.
|
||||
- **Coverage depth varies** — read-heavy and reporting tools generally have more depth than write/mutation tools.
|
||||
- **OAuth tokens** — managed by Cogny; you don't control token refresh or storage directly.
|
||||
|
||||
## Pricing
|
||||
|
||||
Cogny's Solo plan starts at **$9/month** and includes a 7-day free trial. Higher tiers are available for teams. Check [cogny.com/pricing](https://cogny.com/pricing) for current plans and limits.
|
||||
|
||||
## See Also
|
||||
|
||||
- [Composio](composio.md) — broader integration layer (500+ tools, OAuth-heavy CRMs and productivity apps)
|
||||
- [Google Search Console](google-search-console.md) — native API guide if you'd rather call GSC directly
|
||||
- [LinkedIn Ads](linkedin-ads.md), [TikTok Ads](tiktok-ads.md) — native API guides
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- seo-audit (Search Console, Bing Webmaster, Semrush via Cogny)
|
||||
- paid-ads (LinkedIn, Reddit, TikTok via Cogny)
|
||||
- analytics-tracking (Plausible, Fathom via Cogny)
|
||||
@@ -0,0 +1,145 @@
|
||||
# Exa
|
||||
|
||||
AI-powered web search API built for LLMs and agents. Returns high-quality search results with neural and keyword matching, plus on-demand content retrieval (full text, highlights, and summaries) in a single request.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Search, Find Similar, Contents |
|
||||
| MCP | ✓ | Official MCP server available |
|
||||
| CLI | ✓ | [exa.js](../clis/exa.js) |
|
||||
| SDK | ✓ | `exa-py` (Python), `exa-js` (TypeScript) |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `x-api-key: {key}`
|
||||
- **Get key**: https://dashboard.exa.ai
|
||||
|
||||
## Endpoints
|
||||
|
||||
Base URL: `https://api.exa.ai`
|
||||
|
||||
| Endpoint | Purpose |
|
||||
|----------|---------|
|
||||
| `POST /search` | Search the web with neural, keyword-like, or auto-routed modes |
|
||||
| `POST /findSimilar` | Find pages similar to a given URL |
|
||||
| `POST /contents` | Fetch text, highlights, or summaries for one or more URLs |
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Web Search with Content
|
||||
|
||||
```bash
|
||||
POST https://api.exa.ai/search
|
||||
{
|
||||
"query": "best B2B SaaS onboarding flows",
|
||||
"type": "auto",
|
||||
"numResults": 10,
|
||||
"contents": {
|
||||
"text": { "maxCharacters": 1000 },
|
||||
"highlights": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Competitor Content Discovery
|
||||
|
||||
```bash
|
||||
POST https://api.exa.ai/search
|
||||
{
|
||||
"query": "landing page teardowns",
|
||||
"includeDomains": ["goodui.org", "growth.design", "marketingexamples.com"],
|
||||
"startPublishedDate": "2024-01-01T00:00:00Z",
|
||||
"contents": { "highlights": true }
|
||||
}
|
||||
```
|
||||
|
||||
### Find Similar Pages
|
||||
|
||||
```bash
|
||||
POST https://api.exa.ai/findSimilar
|
||||
{
|
||||
"url": "https://stripe.com/pricing",
|
||||
"numResults": 20,
|
||||
"contents": { "summary": { "query": "What pricing model and price points does this page use?" } }
|
||||
}
|
||||
```
|
||||
|
||||
### Category-Filtered Search
|
||||
|
||||
```bash
|
||||
POST https://api.exa.ai/search
|
||||
{
|
||||
"query": "DTC beauty brand raising Series A",
|
||||
"category": "news",
|
||||
"numResults": 25,
|
||||
"startPublishedDate": "2024-06-01T00:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
### Fetch Contents for Known URLs
|
||||
|
||||
```bash
|
||||
POST https://api.exa.ai/contents
|
||||
{
|
||||
"urls": ["https://example.com/post-1", "https://example.com/post-2"],
|
||||
"text": true,
|
||||
"summary": { "query": "Summarize this article's key argument in one paragraph." }
|
||||
}
|
||||
```
|
||||
|
||||
## Key Parameters
|
||||
|
||||
### Search Types
|
||||
- `auto` - Automatically routes between neural and keyword matching (default)
|
||||
- `neural` - Embedding-based semantic search; best for concept/idea queries
|
||||
- `fast` - Lower-latency neural search
|
||||
- `instant` - Returns cached results near-instantly
|
||||
- `deep-lite`, `deep`, `deep-reasoning` - Agentic search variants that plan multiple queries and synthesize
|
||||
|
||||
### Categories
|
||||
`company`, `research paper`, `news`, `personal site`, `financial report`, `people`
|
||||
|
||||
### Filtering
|
||||
- `includeDomains` / `excludeDomains` - Restrict to or exclude specific domains (up to 1200)
|
||||
- `includeText` / `excludeText` - Require or forbid phrases in result pages
|
||||
- `startPublishedDate` / `endPublishedDate` - ISO 8601 publication date range
|
||||
- `startCrawlDate` / `endCrawlDate` - ISO 8601 crawl date range
|
||||
- `userLocation` - Two-letter country code (e.g., `US`)
|
||||
|
||||
### Contents (Mix and Match)
|
||||
All three can be requested in the same call:
|
||||
- `text: true` or `{ maxCharacters, includeHtmlTags, verbosity }` - Full or truncated page text
|
||||
- `highlights: true` or `{ query, maxCharacters }` - LLM-selected relevant snippets
|
||||
- `summary: { query, schema }` - LLM-generated summary, optionally conforming to a JSON schema
|
||||
|
||||
## When to Use
|
||||
|
||||
- **Content research** - Find high-quality long-form content on niche topics by meaning, not just keywords
|
||||
- **Competitor discovery** - Find companies similar to one you've identified via `findSimilar`
|
||||
- **SEO content gap analysis** - Search for topics your competitors rank for and pull highlights for quick review
|
||||
- **Customer research** - Find forum threads, blog posts, and reviews about your product or category
|
||||
- **Audience research** - Discover blogs, newsletters, and communities where your ICP publishes or comments
|
||||
- **News monitoring** - Track mentions of your brand, competitors, or category with date-filtered news search
|
||||
- **Link prospecting** - Find authoritative pages covering topics you write about, for outreach
|
||||
- **Lead research** - Use the `company` and `people` categories to discover accounts or individuals matching criteria
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Varies by plan; see https://exa.ai/pricing
|
||||
- Most production plans support hundreds of concurrent requests
|
||||
- Content retrieval (text/highlights/summary) is billed separately from the base search
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- seo-audit
|
||||
- ai-seo
|
||||
- content-strategy
|
||||
- competitor-profiling
|
||||
- competitor-alternatives
|
||||
- customer-research
|
||||
- cold-email
|
||||
- lead-magnets
|
||||
- marketing-ideas
|
||||
@@ -0,0 +1,144 @@
|
||||
# Firecrawl
|
||||
|
||||
Web scraping API that turns single pages or full sites into clean LLM-ready markdown. Handles JS rendering, anti-bot defenses, and proxy rotation so you can extract structured data from individual public business sites.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API + Python/Node SDKs |
|
||||
| MCP | ✓ | Official Firecrawl MCP server |
|
||||
| CLI | - | None official |
|
||||
| SDK | ✓ | Node, Python, Go, Rust |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `Authorization: Bearer fc-YOUR_API_KEY`
|
||||
- **Get key**: https://www.firecrawl.dev/app/api-keys
|
||||
- **Env var**: `FIRECRAWL_API_KEY`
|
||||
- **Base URL**: `https://api.firecrawl.dev`
|
||||
|
||||
## Core Operations
|
||||
|
||||
### Scrape a single page
|
||||
|
||||
```bash
|
||||
POST https://api.firecrawl.dev/v1/scrape
|
||||
Authorization: Bearer fc-YOUR_API_KEY
|
||||
|
||||
{
|
||||
"url": "https://joescoffeeshop.com",
|
||||
"formats": ["markdown", "html"]
|
||||
}
|
||||
```
|
||||
|
||||
Returns the page as clean markdown (LLM-ready, no nav cruft) plus optional raw HTML.
|
||||
|
||||
### Map a site (discover all URLs)
|
||||
|
||||
```bash
|
||||
POST https://api.firecrawl.dev/v1/map
|
||||
|
||||
{
|
||||
"url": "https://example.com",
|
||||
"limit": 100
|
||||
}
|
||||
```
|
||||
|
||||
Returns a list of URLs found on the site. Use this to identify key pages (`/pricing`, `/about`, `/contact`, `/team`) before scraping individually.
|
||||
|
||||
### Crawl multiple pages
|
||||
|
||||
```bash
|
||||
POST https://api.firecrawl.dev/v1/crawl
|
||||
|
||||
{
|
||||
"url": "https://example.com",
|
||||
"limit": 20,
|
||||
"scrapeOptions": {
|
||||
"formats": ["markdown"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Crawls multiple pages from a single site. **Use sparingly** — costs scale with pages. Set `limit` and `includePaths` to target specific URL patterns.
|
||||
|
||||
### Extract structured data
|
||||
|
||||
```bash
|
||||
POST https://api.firecrawl.dev/v1/extract
|
||||
|
||||
{
|
||||
"urls": ["https://joescoffeeshop.com"],
|
||||
"schema": {
|
||||
"phone": "string",
|
||||
"address": "string",
|
||||
"hours": "string",
|
||||
"email": "string"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Returns data matching the schema — useful when you want consistent fields across many sites rather than raw markdown.
|
||||
|
||||
### Search the web
|
||||
|
||||
```bash
|
||||
POST https://api.firecrawl.dev/v1/search
|
||||
|
||||
{
|
||||
"query": "\"Joe's Coffee Shop\" Boulder Colorado",
|
||||
"limit": 10
|
||||
}
|
||||
```
|
||||
|
||||
Web search + scrape of top results. Useful for cross-source verification (find a business's official site when you only have a name + location).
|
||||
|
||||
## MCP Tools (when used via MCP server)
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| `firecrawl_scrape` | Single-page extraction |
|
||||
| `firecrawl_map` | URL discovery on a site |
|
||||
| `firecrawl_crawl` | Multi-page crawl |
|
||||
| `firecrawl_extract` | Schema-driven structured data |
|
||||
| `firecrawl_search` | Web search + scrape |
|
||||
|
||||
## When to Use
|
||||
|
||||
- **Local SMB prospecting**: verify a business's website status (live, weak, missing) at the URL level after manual Maps/Yelp discovery
|
||||
- **Single-target enrichment**: pull contact info, hours, services from a business's own site
|
||||
- **Competitor research**: scrape competitor pricing, features, customer pages (this is the primary use in `competitor-profiling` skill)
|
||||
- **Programmatic page extraction**: when you need many sites' homepages or about pages in a consistent format
|
||||
- **JS-heavy sites**: when the page won't render with a simple `curl` because content loads after page load
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
**Critical — do not use Firecrawl to scrape platforms hosting prospects:**
|
||||
|
||||
- ✗ **Google Maps / Google search results** — Google ToS prohibits bulk extraction
|
||||
- ✗ **LinkedIn** — explicit ToS violation, will get scraper accounts banned and risks legal exposure
|
||||
- ✗ **Yelp** — ToS prohibits commercial scraping
|
||||
- ✗ **Apollo / ZoomInfo / Clearbit listings** — their ToS prohibits using competing data extracts
|
||||
- ✗ **Any platform you don't have a legitimate basis to extract from at scale**
|
||||
|
||||
**Use Firecrawl for**: the *business's own website* (which you found via manual discovery on those platforms). That's the line — discovery happens on platforms, extraction happens on individual public business sites.
|
||||
|
||||
## Pricing
|
||||
|
||||
- Free tier: limited monthly credits
|
||||
- Paid tiers scale by request volume + concurrency
|
||||
- Confirm at https://www.firecrawl.dev/pricing
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Default: tier-dependent (typically 5–20 concurrent requests on paid plans)
|
||||
- Per-page cost varies by content type and rendering needs
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- prospecting (site enrichment for individual business URLs)
|
||||
- competitor-profiling (primary use: full-site competitor analysis)
|
||||
- ai-seo (scrape your own content for AI search optimization)
|
||||
- content-strategy (scrape industry sites for content gap analysis)
|
||||
@@ -0,0 +1,182 @@
|
||||
# GitHub
|
||||
|
||||
GitHub REST API for prospecting use cases: listing users who star, fork, or watch a repo as a high-quality developer-intent signal.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Public REST API, well-documented |
|
||||
| MCP | - | Several community MCP servers exist; not bundled here |
|
||||
| CLI | ✓ | [github-prospects.js](../clis/github-prospects.js) — stargazers, forks, watchers, user, rate-limit |
|
||||
| SDK | ✓ | Official Octokit (JS, Python, Ruby, .NET, Go) |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Personal Access Token (PAT) or Fine-Grained PAT
|
||||
- **Header**: `Authorization: Bearer {token}`
|
||||
- **Get token**: https://github.com/settings/tokens
|
||||
- **Scopes for prospecting**:
|
||||
- Public data (stargazers, forks, public profiles): **no scope required** with a token, or unauthenticated
|
||||
- Public repo metadata: `public_repo` scope
|
||||
- **Env var**: `GITHUB_TOKEN`
|
||||
|
||||
### Rate limits
|
||||
|
||||
| Auth | Limit | When you hit it |
|
||||
|------|-------|-----------------|
|
||||
| Unauthenticated | 60 req/hr | Fine for one-off small lookups |
|
||||
| Authenticated PAT | 5,000 req/hr | Sufficient for a 10K-star repo pull in one hour |
|
||||
| GitHub App | 5,000–15,000 req/hr | For high-volume use |
|
||||
|
||||
A 1,000-star repo with full enrichment (1 list call + 1 profile call per user) = ~1,011 requests. Always set a token.
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List stargazers (users who starred a repo)
|
||||
|
||||
```bash
|
||||
GET https://api.github.com/repos/{owner}/{repo}/stargazers?per_page=100&page=1
|
||||
|
||||
Accept: application/vnd.github+json
|
||||
X-GitHub-Api-Version: 2022-11-28
|
||||
Authorization: Bearer {token}
|
||||
```
|
||||
|
||||
Pagination via `Link` header (`rel="next"`, `rel="last"`). Default 30 per page, max 100.
|
||||
|
||||
Returns array of user objects with `login`, `id`, `html_url`, `type` (User or Organization). Full profile fields (email, company, blog, bio, location) require a follow-up call per user.
|
||||
|
||||
### List forks (gives fork owner profiles)
|
||||
|
||||
```bash
|
||||
GET https://api.github.com/repos/{owner}/{repo}/forks?per_page=100&page=1
|
||||
```
|
||||
|
||||
Each fork object includes the `owner` (the user/org that forked). Forks are a stronger signal than stars — they imply intent to modify, not just bookmark.
|
||||
|
||||
### List watchers (subscribers)
|
||||
|
||||
```bash
|
||||
GET https://api.github.com/repos/{owner}/{repo}/subscribers?per_page=100&page=1
|
||||
```
|
||||
|
||||
GitHub's "watch" → API's "subscribers". Smaller pool than stargazers but signals deeper engagement.
|
||||
|
||||
### Get user profile (enrichment)
|
||||
|
||||
```bash
|
||||
GET https://api.github.com/users/{username}
|
||||
```
|
||||
|
||||
Returns: `name`, `company`, `blog`, `email` (if public), `bio`, `twitter_username`, `location`, `public_repos`, `followers`, `created_at`, `hireable`.
|
||||
|
||||
**Key fields for prospecting**:
|
||||
- `email`: only ~5–20% of users publish this. Always nullable.
|
||||
- `company`: many users include `@org` syntax — strip the `@` for plain company name.
|
||||
- `blog`: often a personal website where contact info is published.
|
||||
- `twitter_username` / `bio`: useful for cross-channel research.
|
||||
|
||||
### Check rate limit
|
||||
|
||||
```bash
|
||||
GET https://api.github.com/rate_limit
|
||||
```
|
||||
|
||||
## Prospecting Workflows
|
||||
|
||||
### Workflow 1 — Stargazers of a competitor or adjacent tool
|
||||
|
||||
```bash
|
||||
# 100 stargazers, enrich each one, only keep those with email or company set
|
||||
node tools/clis/github-prospects.js stargazers vercel/next.js \
|
||||
--limit 100 --enrich --format csv > nextjs-stars.csv
|
||||
```
|
||||
|
||||
Filter the CSV in your spreadsheet by `company` set OR `email` set OR `blog` set. Hand off to Apollo/Clay/Hunter to enrich the rest with email-by-name+company.
|
||||
|
||||
### Workflow 2 — Forks of your own repo (warm intent)
|
||||
|
||||
People who fork your repo have already shown direct interest. High-conversion outreach prospects.
|
||||
|
||||
```bash
|
||||
node tools/clis/github-prospects.js forks yourorg/yourrepo \
|
||||
--enrich --with-email --format csv > my-fork-prospects.csv
|
||||
```
|
||||
|
||||
### Workflow 3 — Watchers of a category-defining repo
|
||||
|
||||
Watchers are smaller in number but higher in intent — they're tracking changes, not just bookmarking.
|
||||
|
||||
```bash
|
||||
node tools/clis/github-prospects.js watchers tldraw/tldraw \
|
||||
--enrich --with-company --format csv > tldraw-watchers.csv
|
||||
```
|
||||
|
||||
## CLI Reference
|
||||
|
||||
```bash
|
||||
# Stargazers
|
||||
node tools/clis/github-prospects.js stargazers <owner/repo> \
|
||||
[--limit N] [--enrich] [--with-email] [--with-company] \
|
||||
[--with-blog] [--type User|Organization] [--format csv|json]
|
||||
|
||||
# Forks
|
||||
node tools/clis/github-prospects.js forks <owner/repo> [...same flags]
|
||||
|
||||
# Watchers (subscribers in API terms)
|
||||
node tools/clis/github-prospects.js watchers <owner/repo> [...same flags]
|
||||
|
||||
# Single user lookup
|
||||
node tools/clis/github-prospects.js user <username>
|
||||
|
||||
# Check rate limit
|
||||
node tools/clis/github-prospects.js rate-limit
|
||||
```
|
||||
|
||||
**Flags**:
|
||||
- `--limit N`: cap total results pulled from the list endpoint
|
||||
- `--target N`: when filtering with `--with-*`, stop enriching as soon as N users match (saves quota on restrictive filters)
|
||||
- `--enrich`: fetch full profile per user (1 extra request each)
|
||||
- `--with-email` / `--with-company` / `--with-blog`: filter to users with these fields set (implies `--enrich`)
|
||||
- `--type User|Organization`: filter by account type
|
||||
- `--format csv`: output prospecting-ready CSV; default is JSON
|
||||
- `--dry-run`: preview the request without sending
|
||||
|
||||
## When to Use
|
||||
|
||||
- **SaaS prospecting** (primary use case): stargazers of a competitor, complement, or category-defining repo as in-market developer signal
|
||||
- **Open-source product marketing**: see who's forking or watching your own repo for warm outreach
|
||||
- **Developer-tool ICP discovery**: stargazers of `next.js`, `prisma`, `tailwindcss`, etc., signal a Next.js / Prisma / Tailwind developer
|
||||
- **Trigger event monitoring**: a recent fork of a competitor's repo often signals dissatisfaction or active evaluation
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- **Email is your only signal you need** — GitHub yields email for only ~5–20% of users. Pair with Apollo, Clay, or Hunter for enrichment from name + company.
|
||||
- **Hyper-broad lists** — a repo with 100K+ stars is mostly noise. Smaller, more specific repos (5K–25K stars) give higher-signal lists.
|
||||
- **You don't have a way to handle high-volume LinkedIn lookup downstream** — most enrichment from GitHub username goes through LinkedIn Sales Nav manually.
|
||||
|
||||
## Compliance Notes
|
||||
|
||||
- **GitHub data is public** — no ToS issue with reading the API. The ToS prohibits abusive scraping (bypassing rate limits, mass account creation), not legitimate API usage.
|
||||
- **Personal emails published on GitHub** — users opt in to publishing their email. Treat as business contact when paired with company/blog signals; respect GDPR/CAN-SPAM for the downstream send.
|
||||
- **Source URL lineage** — for every prospect added from GitHub, capture `html_url` (their profile URL) and the source repo. Required for GDPR DSAR defense.
|
||||
- **Cool-down between large pulls** — even at 5,000 req/hr, don't burst-fingerprint. Pagination is naturally paced; respect `X-RateLimit-Remaining` headers.
|
||||
|
||||
## Pairing with Other Tools
|
||||
|
||||
Typical GitHub prospecting pipeline:
|
||||
|
||||
1. Pull stargazers/forkers via this CLI
|
||||
2. Filter to users with company set (or other signal)
|
||||
3. **Enrich missing emails** via Apollo / Clay / Hunter (lookup by name + company domain)
|
||||
4. **Validate emails** via Truelist before adding to outreach list
|
||||
5. **Hand off** to cold-email skill for outreach
|
||||
|
||||
See `skills/prospecting/references/saas-prospecting.md` and `data-sources.md` for the full prospecting framework.
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- prospecting (primary use case)
|
||||
- cold-email (downstream outreach)
|
||||
- competitor-profiling (deeper account-level research on individual stargazers worth pursuing)
|
||||
@@ -0,0 +1,140 @@
|
||||
# Plivo
|
||||
|
||||
Cloud communications API platform — SMS, MMS, voice, WhatsApp. Direct Twilio competitor with similar pricing and developer-first positioning.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API |
|
||||
| MCP | - | Not available |
|
||||
| CLI | - | None official |
|
||||
| SDK | ✓ | Node, Python, Ruby, PHP, Java, Go, .NET |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Basic auth with Auth ID + Auth Token
|
||||
- **Header**: `Authorization: Basic base64(AuthID:AuthToken)`
|
||||
- **Get credentials**: https://console.plivo.com → Account → Account Settings
|
||||
- **Note**: Subaccounts available for isolating environments or customers
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Send SMS
|
||||
|
||||
```bash
|
||||
POST https://api.plivo.com/v1/Account/{AuthID}/Message/
|
||||
|
||||
{
|
||||
"src": "+15559876543",
|
||||
"dst": "+15551234567",
|
||||
"text": "Hello from Plivo"
|
||||
}
|
||||
```
|
||||
|
||||
### Send MMS
|
||||
|
||||
```bash
|
||||
POST https://api.plivo.com/v1/Account/{AuthID}/Message/
|
||||
|
||||
{
|
||||
"src": "+15559876543",
|
||||
"dst": "+15551234567",
|
||||
"text": "Check this out",
|
||||
"type": "mms",
|
||||
"media_urls": ["https://example.com/image.jpg"]
|
||||
}
|
||||
```
|
||||
|
||||
### Bulk send (powerpack)
|
||||
|
||||
Use Plivo's Powerpack feature to send from a pool of numbers with sticky sender + automatic A2P registration. Configured in console; messages then sent with `powerpack_uuid` instead of `src`.
|
||||
|
||||
```bash
|
||||
POST https://api.plivo.com/v1/Account/{AuthID}/Message/
|
||||
|
||||
{
|
||||
"powerpack_uuid": "...",
|
||||
"dst": "+15551234567",
|
||||
"text": "Hello"
|
||||
}
|
||||
```
|
||||
|
||||
### Get message details
|
||||
|
||||
```bash
|
||||
GET https://api.plivo.com/v1/Account/{AuthID}/Message/{MessageUUID}/
|
||||
```
|
||||
|
||||
### List messages
|
||||
|
||||
```bash
|
||||
GET https://api.plivo.com/v1/Account/{AuthID}/Message/?limit=20&offset=0
|
||||
```
|
||||
|
||||
### Rent a phone number
|
||||
|
||||
```bash
|
||||
# Search available
|
||||
GET https://api.plivo.com/v1/Account/{AuthID}/PhoneNumber/?country_iso=US&type=local
|
||||
|
||||
# Rent
|
||||
POST https://api.plivo.com/v1/Account/{AuthID}/PhoneNumber/{NumberID}/
|
||||
```
|
||||
|
||||
### Configure inbound message webhook on an Application
|
||||
|
||||
```bash
|
||||
POST https://api.plivo.com/v1/Account/{AuthID}/Application/
|
||||
|
||||
{
|
||||
"app_name": "SMS Receiver",
|
||||
"message_url": "https://your-app.com/sms-webhook",
|
||||
"message_method": "POST"
|
||||
}
|
||||
```
|
||||
|
||||
Then assign the application to the phone number.
|
||||
|
||||
### A2P 10DLC registration (US)
|
||||
|
||||
Configured through console UI under Compliance. Programmatic registration available for high-volume customers via dedicated API endpoints (request access).
|
||||
|
||||
## API Pattern
|
||||
|
||||
REST + JSON. Pagination via `limit` + `offset`. Webhook callbacks for inbound messages and delivery status (configured per-application).
|
||||
|
||||
## Pricing
|
||||
|
||||
- US 10DLC SMS: $0.0055/msg (typically lower than Twilio)
|
||||
- US toll-free SMS: $0.0055/msg
|
||||
- US short code SMS: similar + monthly lease
|
||||
- MMS: ~$0.02
|
||||
- Carrier surcharges layered on top
|
||||
- Phone number rental: ~$0.80/mo local, ~$1/mo toll-free
|
||||
|
||||
Plivo typically prices 5–20% under Twilio at the per-send level. Less of an ecosystem advantage but real cost savings at high volume.
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Default: 1 msg/sec
|
||||
- Powerpacks scale throughput based on number pool size and A2P trust
|
||||
- Short codes: 100+ msg/sec
|
||||
|
||||
## When to Use
|
||||
|
||||
- Custom SMS build, want a Twilio-like API with lower cost
|
||||
- High-volume sending where the per-message delta matters
|
||||
- Want bulk sending with sticky sender via Powerpack
|
||||
- B2B SaaS embedding SMS or transactional/auth at scale
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- DTC ecom marketing flows — Klaviyo, Postscript, Attentive
|
||||
- Ecosystem matters more than price — Twilio's broader product surface (Voice, Studio, SendGrid, Segment, etc.) wins
|
||||
- Need mature WhatsApp Business — Twilio has deeper WhatsApp tooling
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- sms
|
||||
- onboarding (post-signup notifications)
|
||||
@@ -0,0 +1,126 @@
|
||||
# Postscript
|
||||
|
||||
SMS marketing platform built for Shopify direct-to-consumer brands. Deepest Shopify integration of any SMS platform.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API |
|
||||
| MCP | - | Not available |
|
||||
| CLI | - | None |
|
||||
| SDK | - | Use API directly |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `Authorization: Bearer {api_key}` or `X-Postscript-Api-Key: {api_key}`
|
||||
- **Get key**: Postscript dashboard → Settings → API
|
||||
- **Note**: Keys are scoped per shop
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Search subscribers
|
||||
|
||||
```bash
|
||||
GET https://api.postscript.io/api/v2/subscribers?phone_number=%2B15551234567
|
||||
```
|
||||
|
||||
### Create subscriber (opt-in)
|
||||
|
||||
```bash
|
||||
POST https://api.postscript.io/api/v2/subscribers
|
||||
|
||||
{
|
||||
"phone_number": "+15551234567",
|
||||
"email": "user@example.com",
|
||||
"first_name": "Jane",
|
||||
"subscribed_at": "2026-05-15T10:00:00Z",
|
||||
"opt_in_source": "checkout_keyword"
|
||||
}
|
||||
```
|
||||
|
||||
Must include valid opt-in metadata for TCPA compliance.
|
||||
|
||||
### Unsubscribe
|
||||
|
||||
```bash
|
||||
DELETE https://api.postscript.io/api/v2/subscribers/{subscriberId}/subscription
|
||||
```
|
||||
|
||||
### List keywords (e.g., JOIN, SAVE)
|
||||
|
||||
```bash
|
||||
GET https://api.postscript.io/api/v2/keywords
|
||||
```
|
||||
|
||||
### Send transactional message
|
||||
|
||||
```bash
|
||||
POST https://api.postscript.io/api/v2/transactional/sms
|
||||
|
||||
{
|
||||
"phone_number": "+15551234567",
|
||||
"message": "Your order #1234 shipped. Track at https://..."
|
||||
}
|
||||
```
|
||||
|
||||
Transactional requires separate enablement; counts under transactional consent.
|
||||
|
||||
### List campaigns
|
||||
|
||||
```bash
|
||||
GET https://api.postscript.io/api/v2/campaigns
|
||||
```
|
||||
|
||||
### List automations (flows)
|
||||
|
||||
```bash
|
||||
GET https://api.postscript.io/api/v2/automations
|
||||
```
|
||||
|
||||
### Webhooks
|
||||
|
||||
Subscribe to events: `subscriber.created`, `subscriber.unsubscribed`, `message.delivered`, `message.failed`, `conversion.attributed`.
|
||||
|
||||
## API Pattern
|
||||
|
||||
REST + JSON. Standard `Bearer` auth. Pagination via `cursor` and `limit` (max 100).
|
||||
|
||||
## Key Features
|
||||
|
||||
- Native Shopify integration: purchases, abandoned carts, browse, product catalog auto-sync
|
||||
- Strong abandoned cart and browse abandonment automation builders
|
||||
- AI Reply (auto-reply trained on brand voice)
|
||||
- Conversational SMS / live agent for two-way
|
||||
- Opt-in tools: popups, keyword opt-in, checkout opt-in
|
||||
- A2P 10DLC managed in-platform
|
||||
- Reporting: revenue, click-through, conversion attribution, opt-out rate
|
||||
|
||||
## Pricing
|
||||
|
||||
- Plans: Starter (free, 1K msgs/mo), Growth ($100+/mo), Professional, Enterprise
|
||||
- Per-send pricing on top: ~$0.015 SMS, ~$0.04 MMS
|
||||
- Annual contracts standard at Growth+
|
||||
- Pricing scales meaningfully past 50K subscribers
|
||||
|
||||
## When to Use
|
||||
|
||||
- Shopify DTC brand wanting SMS-specific tooling (vs combined email/SMS)
|
||||
- Need deep abandoned cart, browse abandonment, post-purchase automation out of the box
|
||||
- Want managed A2P 10DLC + compliance tools
|
||||
- Mid-size DTC brand (10K–500K SMS subscribers)
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- Non-Shopify ecom — integration is shallow
|
||||
- Already on Klaviyo for email and SMS is secondary — Klaviyo SMS is simpler
|
||||
- Mid-market/enterprise needing concierge support — Attentive
|
||||
- Custom platform or B2B SaaS — Twilio
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- sms
|
||||
- emails (run alongside via Klaviyo or similar)
|
||||
- churn-prevention (win-back flows)
|
||||
- onboarding (post-purchase activation)
|
||||
@@ -0,0 +1,257 @@
|
||||
# RankParse
|
||||
|
||||
Agent-friendly SEO data API for backlinks, domain authority, tech stack, and on-page metadata. Designed as a low-cost alternative to enterprise SEO suites.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API at `api.rankparse.com` |
|
||||
| MCP | ✓ | Hosted MCP server for agent use |
|
||||
| CLI | [✓](../clis/rankparse.js) | Node CLI wrapper |
|
||||
| SDK | - | API-only (SDKs in progress) |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `X-API-Key: rp_...`
|
||||
- **Get key**: Sign up at https://rankparse.com and create a key in the dashboard
|
||||
- **Billing**: Credit-based (one-time credit packs, no subscription). Each endpoint deducts a fixed number of credits per call.
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Domain authority
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/domain-authority?domain=example.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Returns authority score, registered date, registrar, and popularity rank.
|
||||
|
||||
### Backlinks
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/backlinks?domain=example.com&limit=100
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Optional params: `sort=importance|recent`, `from_domain=`, `link_type=`, `score=true`.
|
||||
|
||||
### Referring domains
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/referring-domains?domain=example.com&limit=100
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Outbound links
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/outbound-links?domain=example.com&limit=100
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Anchor text profile
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/anchor-text?domain=example.com&limit=100
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Top pages
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/top-pages?domain=example.com&limit=50
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Domain overlap
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/domain-overlap?domains=a.com,b.com,c.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Compare 2–5 domains.
|
||||
|
||||
### Link intersect
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/link-intersect?domain_a=a.com&domain_b=b.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Domains that link to both targets.
|
||||
|
||||
### Competitor gap
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/competitor-gap?domain=mysite.com&vs=competitor.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Similar domains
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/similar-domains?domain=example.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Tech stack
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/tech-stack?domain=example.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Page SEO
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/page-seo?url=https://example.com/page
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Returns title, meta description, OG tags, canonical, and structured metadata for a single URL.
|
||||
|
||||
### Page performance
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/page-performance?url=https://example.com/page&strategy=mobile
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Core Web Vitals via Google PageSpeed Insights. Daily quotas apply.
|
||||
|
||||
### Site health
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/site-health?domain=example.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Sitemap
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/sitemap?domain=example.com&limit=100
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
### Crawl history
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/crawl-history?domain=example.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Wayback Machine snapshots for the domain.
|
||||
|
||||
### Link audit
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/link-audit?domain=example.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
Combined health score, risk flags, anchor profile, and top backlinks.
|
||||
|
||||
### Site explorer
|
||||
|
||||
```bash
|
||||
GET https://api.rankparse.com/v1/site-explorer?domain=example.com
|
||||
|
||||
X-API-Key: rp_...
|
||||
```
|
||||
|
||||
All-in-one snapshot of a domain.
|
||||
|
||||
### Batch lookup
|
||||
|
||||
```bash
|
||||
POST https://api.rankparse.com/v1/batch
|
||||
Content-Type: application/json
|
||||
X-API-Key: rp_...
|
||||
|
||||
{ "domains": ["a.com", "b.com", "c.com"] }
|
||||
```
|
||||
|
||||
Bulk domain summaries in one call.
|
||||
|
||||
## Free Tools (Unauthenticated)
|
||||
|
||||
Public, IP-rate-limited endpoints for quick lookups without an API key:
|
||||
|
||||
- `GET /v1/tools/backlinks?domain=`
|
||||
- `GET /v1/tools/domain-authority?domain=`
|
||||
- `GET /v1/tools/tech-stack?domain=`
|
||||
- `GET /v1/tools/similar-websites?domain=`
|
||||
- `GET /v1/tools/domain-age?domain=`
|
||||
- `GET /v1/tools/meta-tag-analyzer?url=`
|
||||
- `GET /v1/tools/link-intersect?domain_a=&domain_b=`
|
||||
- `GET /v1/tools/page-speed?url=`
|
||||
|
||||
## Key Response Fields
|
||||
|
||||
### Domain Metrics
|
||||
- `authority` - Domain authority score
|
||||
- `popularity_rank` - Tranco popularity rank
|
||||
- `registered_at` - Domain registration date
|
||||
- `registrar` - Registrar name
|
||||
|
||||
### Backlink Fields
|
||||
- `from_url` - Source URL
|
||||
- `to_url` - Target URL
|
||||
- `anchor` - Anchor text
|
||||
- `link_type` - dofollow / nofollow / ugc / sponsored
|
||||
- `first_seen` - First discovery date
|
||||
|
||||
## When to Use
|
||||
|
||||
- Backlink discovery and analysis
|
||||
- Competitor link research and gap analysis
|
||||
- Domain authority lookups at scale
|
||||
- Tech stack detection
|
||||
- On-page SEO audits
|
||||
- Sitemap and crawl history discovery
|
||||
- Agent-driven SEO workflows where per-call cost matters
|
||||
|
||||
## Pricing Model
|
||||
|
||||
- Pay-as-you-go credit packs (no subscription)
|
||||
- Most domain endpoints: 1–2 credits per call
|
||||
- Aggregated endpoints (overlap, intersect, similar, gap): 5 credits
|
||||
- Link audit: 8 credits
|
||||
- Site explorer: 10 credits
|
||||
- Batch: 1 credit per domain
|
||||
- Free tier available for unauthenticated endpoints
|
||||
|
||||
## MCP Server
|
||||
|
||||
RankParse ships a hosted MCP server exposing all endpoints as tools — connect from Claude, Cursor, or any MCP-compatible agent. See https://rankparse.com for connection details.
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- seo-audit
|
||||
- content-strategy
|
||||
- competitors
|
||||
- competitor-profiling
|
||||
- ai-seo
|
||||
- site-architecture
|
||||
- schema
|
||||
@@ -0,0 +1,306 @@
|
||||
# Sequenzy
|
||||
|
||||
Email marketing platform for lifecycle campaigns, automation sequences, subscriber management, transactional email, and analytics.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API for subscribers, tags, events, campaigns, sequences, templates, transactional email, analytics, and webhooks |
|
||||
| MCP | ✓ | `@sequenzy/mcp` stdio server for agent clients |
|
||||
| CLI | ✓ | `@sequenzy/cli` for subscriber operations, transactional sends, and stats |
|
||||
| SDK | - | Use the REST API directly |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `Authorization: Bearer ***`
|
||||
- **Base URL**: `https://api.sequenzy.com/api/v1`
|
||||
- **Legacy base URL**: `https://api.sequenzy.com/v1`
|
||||
- **Environment variable**: `SEQUENZY_API_KEY`
|
||||
|
||||
## MCP
|
||||
|
||||
### Quick setup
|
||||
|
||||
```bash
|
||||
npx @sequenzy/setup
|
||||
```
|
||||
|
||||
The setup wizard logs in, creates a personal API key, and configures supported MCP clients when possible.
|
||||
|
||||
### Manual MCP server config
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"sequenzy": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@sequenzy/mcp"],
|
||||
"env": {
|
||||
"SEQUENZY_API_KEY": "seq_user_your_key_here"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## CLI
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
# Using npx
|
||||
npx sequenzy --help
|
||||
|
||||
# Or install globally
|
||||
npm install -g @sequenzy/cli
|
||||
```
|
||||
|
||||
### Login
|
||||
|
||||
```bash
|
||||
sequenzy login
|
||||
sequenzy whoami
|
||||
```
|
||||
|
||||
### Common commands
|
||||
|
||||
```bash
|
||||
# Subscribers
|
||||
sequenzy subscribers list
|
||||
sequenzy subscribers list --tag vip
|
||||
sequenzy subscribers add user@example.com --tag premium --attr plan=pro
|
||||
sequenzy subscribers get user@example.com
|
||||
sequenzy subscribers remove user@example.com
|
||||
|
||||
# Transactional email
|
||||
sequenzy send user@example.com --template welcome --var name=John
|
||||
sequenzy send user@example.com --subject "Hello" --html "<h1>Hi!</h1>"
|
||||
|
||||
# Analytics
|
||||
sequenzy stats
|
||||
sequenzy stats --period 30d
|
||||
sequenzy stats --campaign camp_abc123
|
||||
sequenzy stats --sequence seq_xyz789
|
||||
```
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Get account
|
||||
|
||||
```bash
|
||||
GET https://api.sequenzy.com/api/v1/account
|
||||
|
||||
Authorization: Bearer ***
|
||||
```
|
||||
|
||||
### List subscribers
|
||||
|
||||
```bash
|
||||
GET https://api.sequenzy.com/api/v1/subscribers?page=1&limit=20&status=active&query=john&tags=customer,vip
|
||||
|
||||
Authorization: Bearer ***
|
||||
```
|
||||
|
||||
### Create or update subscriber
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/subscribers
|
||||
|
||||
Authorization: Bearer ***
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"email": "user@example.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe",
|
||||
"tags": ["customer", "newsletter"],
|
||||
"customAttributes": {
|
||||
"plan": "pro"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Add tag to subscriber
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/subscribers/tags
|
||||
|
||||
Authorization: Bearer ***
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"email": "user@example.com",
|
||||
"tag": "vip"
|
||||
}
|
||||
```
|
||||
|
||||
### Trigger event for subscriber
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/subscribers/events
|
||||
|
||||
Authorization: Bearer ***
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"email": "user@example.com",
|
||||
"event": "trial_started",
|
||||
"properties": {
|
||||
"plan": "pro"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List campaigns
|
||||
|
||||
```bash
|
||||
GET https://api.sequenzy.com/api/v1/campaigns
|
||||
|
||||
Authorization: Bearer ***
|
||||
```
|
||||
|
||||
### Create draft campaign
|
||||
|
||||
Create a draft campaign and linked email. A sender profile must already be configured.
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/campaigns
|
||||
|
||||
Authorization: Bearer ***
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"name": "April Launch",
|
||||
"subject": "A quick update",
|
||||
"labels": ["launch"],
|
||||
"html": "<p>Hello there!</p>"
|
||||
}
|
||||
```
|
||||
|
||||
### Send campaign test
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/campaigns/{campaignId}/test
|
||||
|
||||
Authorization: Bearer ***
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"to": "reviewer@example.com"
|
||||
}
|
||||
```
|
||||
|
||||
### Schedule campaign
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/campaigns/{campaignId}/schedule
|
||||
|
||||
Authorization: Bearer ***
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"scheduledAt": "2026-05-20T15:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
### List sequences
|
||||
|
||||
```bash
|
||||
GET https://api.sequenzy.com/api/v1/sequences
|
||||
|
||||
Authorization: Bearer ***
|
||||
```
|
||||
|
||||
### Enable or disable sequence
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/sequences/{sequenceId}/enable
|
||||
POST https://api.sequenzy.com/api/v1/sequences/{sequenceId}/disable
|
||||
|
||||
Authorization: Bearer ***
|
||||
```
|
||||
|
||||
### Send transactional email
|
||||
|
||||
Send via a saved template slug or by passing direct subject/body content.
|
||||
|
||||
```bash
|
||||
POST https://api.sequenzy.com/api/v1/transactional/send
|
||||
|
||||
Authorization: Bearer ***
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"to": "user@example.com",
|
||||
"slug": "welcome",
|
||||
"variables": {
|
||||
"name": "John"
|
||||
},
|
||||
"subscriberExternalId": "user_123"
|
||||
}
|
||||
```
|
||||
|
||||
### Get metrics
|
||||
|
||||
```bash
|
||||
GET https://api.sequenzy.com/api/v1/metrics
|
||||
GET https://api.sequenzy.com/api/v1/metrics/campaigns/{campaignId}
|
||||
GET https://api.sequenzy.com/api/v1/metrics/sequences/{sequenceId}
|
||||
GET https://api.sequenzy.com/api/v1/metrics/recipients
|
||||
|
||||
Authorization: Bearer ***
|
||||
```
|
||||
|
||||
### Webhooks
|
||||
|
||||
```bash
|
||||
GET https://api.sequenzy.com/api/v1/webhooks
|
||||
POST https://api.sequenzy.com/api/v1/webhooks
|
||||
PATCH https://api.sequenzy.com/api/v1/webhooks/{id}
|
||||
DELETE https://api.sequenzy.com/api/v1/webhooks/{id}
|
||||
POST https://api.sequenzy.com/api/v1/webhooks/{id}/test
|
||||
|
||||
Authorization: Bearer ***
|
||||
```
|
||||
|
||||
## Key Concepts
|
||||
|
||||
- **Subscribers** - Contacts with email, status, tags, custom attributes, and optional external IDs
|
||||
- **Tags** - Lightweight labels used for targeting and segmentation
|
||||
- **Segments** - Dynamic subscriber groups based on attributes or engagement
|
||||
- **Campaigns** - Draftable and schedulable one-time marketing sends
|
||||
- **Sequences** - Automated lifecycle flows that can be enabled, disabled, and measured
|
||||
- **Templates** - Reusable email content for transactional and marketing workflows
|
||||
- **Transactional emails** - Single-recipient or small batch sends triggered by product events
|
||||
- **Engagement metrics** - Sent, delivered, bounced, opened, clicked, unsubscribed, and derived rates
|
||||
|
||||
## Safety Notes
|
||||
|
||||
- Inspect account, sender profile, audience, and target objects before mutating anything.
|
||||
- Prefer creating drafts and sending tests before scheduling or enabling live delivery.
|
||||
- Do not schedule a campaign, enable a sequence, or send a live transactional email without explicit approval.
|
||||
- Use recipient status, bounce, complaint, and unsubscribe data to avoid sending to suppressed contacts.
|
||||
- Use direct API calls for high-volume or scripted operations; use MCP or CLI for agent-driven interactive workflows.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Managing subscribers, tags, lists, and segments
|
||||
- Drafting and scheduling lifecycle campaigns
|
||||
- Building onboarding, activation, retention, or winback sequences
|
||||
- Sending product-triggered transactional emails
|
||||
- Reviewing campaign, sequence, and recipient engagement metrics
|
||||
- Connecting AI agents to email marketing operations through MCP
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Check the latest Sequenzy API documentation for plan-specific limits.
|
||||
- Use pagination for list endpoints; subscriber lists support `page` and `limit` with a maximum limit of 100.
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- emails
|
||||
- onboarding
|
||||
- analytics
|
||||
- launch
|
||||
@@ -0,0 +1,184 @@
|
||||
# Truelist
|
||||
|
||||
Email verification and deliverability validation. Validates single emails synchronously or bulk lists asynchronously. Returns an `email_state` + `email_sub_state` plus rich metadata (domain, MX record, suggested correction, disposable/role classification).
|
||||
|
||||
Spec source: [Truelist-Labs/truelist-openapi](https://github.com/Truelist-Labs/truelist-openapi) (OpenAPI 3.1).
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API, OpenAPI 3.1 spec |
|
||||
| MCP | ✓ | Official [truelist-mcp](https://github.com/Truelist-Labs/truelist-mcp) server (Claude, Cursor, VS Code) |
|
||||
| CLI | ✓ | Official Go [truelist-cli](https://github.com/Truelist-Labs/truelist-cli) |
|
||||
| SDK | ✓ | Official: Node/TypeScript, Python, Ruby, PHP, Go, Java, C#/.NET. Framework integrations: Django, Laravel, Next.js, Rails, React, Svelte, Vue, WordPress |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer token (API key)
|
||||
- **Header**: `Authorization: Bearer YOUR_API_KEY`
|
||||
- **Get key**: https://truelist.io/settings/api-keys
|
||||
- **Base URL**: `https://api.truelist.io`
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Verify a single email (synchronous)
|
||||
|
||||
```bash
|
||||
POST https://api.truelist.io/api/v1/verify_inline?email=user@example.com
|
||||
Authorization: Bearer YOUR_API_KEY
|
||||
```
|
||||
|
||||
No request body — the email is a query parameter. Returns a single-element `emails` array with verification fields:
|
||||
|
||||
```json
|
||||
{
|
||||
"emails": [
|
||||
{
|
||||
"address": "user@example.com",
|
||||
"domain": "example.com",
|
||||
"canonical": "user@example.com",
|
||||
"mx_record": null,
|
||||
"first_name": null,
|
||||
"last_name": null,
|
||||
"email_state": "ok",
|
||||
"email_sub_state": "email_ok",
|
||||
"verified_at": "2026-02-21T10:39:12.570Z",
|
||||
"did_you_mean": null
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Bulk verification (asynchronous)
|
||||
|
||||
```bash
|
||||
POST https://api.truelist.io/api/v1/verify
|
||||
Authorization: Bearer YOUR_API_KEY
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"emails": [
|
||||
"user1@example.com",
|
||||
"user2@example.com"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Processes the list in the background. The response acknowledges submission; results are available via the dashboard, the Truelist UI's CSV download, or via integrations (Mailchimp, Klaviyo, HubSpot, Zapier, Make, n8n, etc.).
|
||||
|
||||
For large lists, the dashboard's CSV upload + download flow is typically the lowest-friction path.
|
||||
|
||||
### Get account information
|
||||
|
||||
```bash
|
||||
GET https://api.truelist.io/me
|
||||
Authorization: Bearer YOUR_API_KEY
|
||||
```
|
||||
|
||||
Returns email, name, UUID, time zone, admin role, API keys, and account plan info.
|
||||
|
||||
## Response Fields (per email)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `address` | string | The email address validated |
|
||||
| `domain` | string | The domain part of the address |
|
||||
| `canonical` | string | Canonical form of the address |
|
||||
| `mx_record` | string \| null | MX record for the domain |
|
||||
| `first_name` | string \| null | First name if detected |
|
||||
| `last_name` | string \| null | Last name if detected |
|
||||
| `email_state` | enum | Overall validation verdict (see below) |
|
||||
| `email_sub_state` | enum | More specific reason (see below) |
|
||||
| `verified_at` | datetime (ISO 8601) | When verification ran |
|
||||
| `did_you_mean` | string \| null | Suggested correction for typos |
|
||||
|
||||
## `email_state` values
|
||||
|
||||
| State | Meaning | What to do |
|
||||
|-------|---------|-----------|
|
||||
| `ok` | The email address is deliverable. | Include in outreach |
|
||||
| `email_invalid` | The email address is not deliverable. | Exclude — would bounce |
|
||||
| `risky` | May be deliverable but carries risk (role address, disposable, etc.) | Include cautiously, lower priority |
|
||||
| `unknown` | Deliverability could not be determined (timeout/connection). | Skip or re-verify with Thorough strategy |
|
||||
| `accept_all` | The mail server accepts all addresses (catch-all domain) | Include cautiously — can't confirm specific mailbox |
|
||||
|
||||
## `email_sub_state` values
|
||||
|
||||
| Sub-state | Meaning |
|
||||
|-----------|---------|
|
||||
| `email_ok` | Passed all checks |
|
||||
| `is_disposable` | Disposable / temporary provider (e.g., 10minutemail) |
|
||||
| `is_role` | Role-based address (info@, sales@, admin@) |
|
||||
| `unknown_error` | Sub-state could not be determined |
|
||||
| `failed_smtp_check` | SMTP check failed |
|
||||
|
||||
Pair the two: `email_state: ok` + `email_sub_state: is_role` means "deliverable but a role inbox," whereas `email_state: email_invalid` + `email_sub_state: failed_smtp_check` means "doesn't exist."
|
||||
|
||||
## Rate Limits
|
||||
|
||||
| Endpoint | Limit |
|
||||
|----------|-------|
|
||||
| `/api/v1/verify_inline` | 10 requests/second |
|
||||
| `/api/v1/verify` | 10 requests/second |
|
||||
| `/me` | 10 requests/second |
|
||||
|
||||
A 429 is returned on rate-limit exceed. Note: the per-email validation rate is separate and depends on your plan.
|
||||
|
||||
## Error Responses
|
||||
|
||||
| Code | Meaning |
|
||||
|------|---------|
|
||||
| 401 | Unauthorized — API key missing, invalid, or expired |
|
||||
| 429 | Rate limit exceeded |
|
||||
| 500 | Server error |
|
||||
|
||||
All error bodies follow `{"error": "<human-readable message>"}`.
|
||||
|
||||
## When to Use
|
||||
|
||||
- **Before adding contacts to any cold outreach list** — non-negotiable safety step. Apollo/ZoomInfo/Hunter data accuracy is typically 60–80%; Truelist catches the rest.
|
||||
- **Real-time form validation** — block disposable / typo'd emails at signup. Use the inline endpoint (or the [form validation widget](https://truelist.io/docs/form-validation-widget)).
|
||||
- **Periodic list hygiene** — re-verify your active list quarterly to remove bounces before they hurt sender reputation.
|
||||
- **Pre-import validation** on email platform imports (Mailchimp, Klaviyo, HubSpot, etc.) — direct integrations exist for most.
|
||||
- **AI agent workflows** via the official MCP server for Claude, Cursor, and VS Code.
|
||||
|
||||
## Why This Step is Non-Negotiable
|
||||
|
||||
Cold email reputation is built over months and destroyed in days. ISPs (Gmail, Outlook, etc.) track sender reputation through:
|
||||
|
||||
- **Bounce rate** — bounces over 2% trigger throttling
|
||||
- **Spam complaints** — spam traps in unvalidated lists generate complaints
|
||||
- **Engagement** — sending to dead mailboxes hurts engagement metrics
|
||||
|
||||
A single unvalidated send to a bought or scraped list can damage a domain's sending reputation for months.
|
||||
|
||||
## Workflow Integration
|
||||
|
||||
Typical prospecting flow:
|
||||
|
||||
1. Build initial prospect list (Apollo, Clay, ZoomInfo, Hunter, GitHub stargazers, etc.)
|
||||
2. **For agent-driven workflows**: use the Truelist MCP server to validate inline as the agent builds the list
|
||||
3. **For programmatic workflows**: POST emails to `/api/v1/verify` for async bulk OR `/api/v1/verify_inline` for sync single
|
||||
4. **For one-offs**: CSV upload via dashboard, download annotated CSV
|
||||
5. Filter: keep `email_state: ok`, include `risky`/`accept_all` cautiously with a strategy, exclude `email_invalid`, re-verify `unknown`
|
||||
6. Hand cleaned list to outreach platform (Instantly, Lemlist, Outreach, etc.) — see [outreach.md](outreach.md), [instantly.md](instantly.md), [lemlist.md](lemlist.md)
|
||||
|
||||
## Native Integrations (no API code required)
|
||||
|
||||
For non-developer workflows, Truelist has direct integrations:
|
||||
|
||||
- **Email platforms**: Mailchimp, Klaviyo, HubSpot, ActiveCampaign, Brevo, Constant Contact, ConvertKit, Drip
|
||||
- **Automation**: Zapier, Make.com, n8n
|
||||
- **CRM / sales**: Salesforce, Go High Level, Clay.com
|
||||
- **Ecom**: BigCommerce
|
||||
- **AI / agents**: MCP server (Claude, Cursor, VS Code)
|
||||
|
||||
See https://truelist.io/integrations for the current list.
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- prospecting (primary use case — validate before adding to outreach lists)
|
||||
- cold-email (downstream outreach against the validated list)
|
||||
- emails (transactional senders + subscriber list hygiene)
|
||||
- popups (real-time form validation on opt-in capture)
|
||||
@@ -0,0 +1,152 @@
|
||||
# Twilio
|
||||
|
||||
Programmable communications platform: SMS, MMS, WhatsApp, voice, email (via SendGrid). The default low-level API for custom SMS builds, transactional messaging, and B2B SaaS embedding SMS into products.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API, well-documented, mature |
|
||||
| MCP | - | Not available natively (community wrappers exist) |
|
||||
| CLI | ✓ | Official `twilio` CLI |
|
||||
| SDK | ✓ | Node, Python, Ruby, PHP, Java, Go, C#, .NET |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Basic auth with Account SID + Auth Token (or API Key SID + Secret)
|
||||
- **Header**: `Authorization: Basic base64(AccountSID:AuthToken)`
|
||||
- **Get credentials**: https://console.twilio.com → Account Info
|
||||
- **Recommendation**: Use API Keys (revocable, scoped) for production rather than the master Auth Token
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Send SMS
|
||||
|
||||
```bash
|
||||
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json
|
||||
|
||||
To=+15551234567
|
||||
From=+15559876543
|
||||
Body=Hello from Twilio
|
||||
```
|
||||
|
||||
### Send MMS
|
||||
|
||||
```bash
|
||||
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json
|
||||
|
||||
To=+15551234567
|
||||
From=+15559876543
|
||||
Body=Check this out
|
||||
MediaUrl=https://example.com/image.jpg
|
||||
```
|
||||
|
||||
### List messages
|
||||
|
||||
```bash
|
||||
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json?PageSize=50
|
||||
```
|
||||
|
||||
### Get message status
|
||||
|
||||
```bash
|
||||
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages/{MessageSid}.json
|
||||
```
|
||||
|
||||
Status values: `queued`, `sending`, `sent`, `delivered`, `undelivered`, `failed`.
|
||||
|
||||
### List phone numbers
|
||||
|
||||
```bash
|
||||
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json
|
||||
```
|
||||
|
||||
### Buy a phone number
|
||||
|
||||
```bash
|
||||
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json
|
||||
|
||||
PhoneNumber=+15559876543
|
||||
```
|
||||
|
||||
### Configure webhook for inbound messages
|
||||
|
||||
```bash
|
||||
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers/{Sid}.json
|
||||
|
||||
SmsUrl=https://your-app.com/sms-webhook
|
||||
SmsMethod=POST
|
||||
```
|
||||
|
||||
Inbound SMS POSTs to the webhook with: `From`, `To`, `Body`, `MessageSid`, `NumMedia`, etc.
|
||||
|
||||
### A2P 10DLC registration (US)
|
||||
|
||||
```bash
|
||||
# Create brand
|
||||
POST https://messaging.twilio.com/v1/a2p/BrandRegistrations
|
||||
|
||||
CustomerProfileBundleSid=...
|
||||
A2PProfileBundleSid=...
|
||||
|
||||
# Create campaign
|
||||
POST https://messaging.twilio.com/v1/Services/{ServiceSid}/Compliance/Usa2p
|
||||
|
||||
BrandRegistrationSid=...
|
||||
Description=...
|
||||
MessageSamples[]=Sample text 1
|
||||
MessageFlow=Opt-in flow description
|
||||
UseCase=MARKETING
|
||||
```
|
||||
|
||||
Most workflows are clearer in the Console UI. Programmatic registration is for high-scale platforms managing many brands.
|
||||
|
||||
## API Pattern
|
||||
|
||||
REST + form-encoded request bodies (not JSON for most endpoints). Resources nested under Account: `/Accounts/{AccountSid}/...`. Pagination via `Page`, `PageSize`, `NextPageUri`.
|
||||
|
||||
## Key Concepts
|
||||
|
||||
- **Messaging Service**: virtual sender container; load-balances across multiple numbers, handles A2P registration grouping
|
||||
- **Sticky Sender**: same recipient always receives from the same number within a service
|
||||
- **Geo-Match**: route to a number matching the recipient's country/region
|
||||
- **Status Callback**: webhook fired on every delivery state change
|
||||
- **Carrier Lookup**: pre-send check for line type (mobile, landline, VoIP) — costs ~$0.005
|
||||
|
||||
## Pricing
|
||||
|
||||
- US 10DLC SMS: $0.0079/msg
|
||||
- US toll-free SMS: $0.0079/msg
|
||||
- US short code SMS: $0.0079/msg + $1,000/mo lease
|
||||
- MMS: ~$0.02
|
||||
- Carrier surcharges (~$0.005 US 10DLC)
|
||||
- A2P 10DLC: ~$15 brand + $10/mo per campaign
|
||||
- Phone number rental: $1.15/mo (10DLC) to $2/mo (toll-free)
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Default: 1 msg/sec on long codes (10DLC trust score raises this to 4–100+)
|
||||
- Short code: 100+ msg/sec
|
||||
- Messaging Services throttle automatically
|
||||
- Carrier filtering applies above contracted throughput
|
||||
|
||||
## When to Use
|
||||
|
||||
- Building custom SMS flows into a product (B2B SaaS, mobile apps)
|
||||
- Transactional and auth SMS (OTPs, alerts, notifications)
|
||||
- Multi-channel orchestration (SMS + voice + WhatsApp)
|
||||
- High-volume programmable messaging
|
||||
- When you need full control and minimal abstraction
|
||||
- Backing store for Customer.io / Segment / other orchestration layers
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- DTC ecom marketing flows — use Klaviyo, Postscript, or Attentive (better tooling for cart recovery, segments, A/B tests)
|
||||
- If you don't want to handle compliance plumbing — Twilio gives you primitives, not policy
|
||||
- Marketing UI for non-technical users — there isn't one
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- sms
|
||||
- emails (transactional sister product via SendGrid)
|
||||
- onboarding (post-signup SMS milestones)
|
||||
Reference in New Issue
Block a user