Skill: quochungto/bookforge-bullseye-channel-selection (version 1.0.0)

--- name: bullseye-channel-selection description: "Guide systematic customer acquisition channel selection using the Bullseye Framework. Use whenever a startup founder, growth marketer, or product leader is deciding which marketing channel to focus on, evaluating customer acquisition options, choosing between viral, SEO, SEM, content, sales, PR, or any other growth channel, struggling with where to invest marketing budget, trying to escape channel bias, asking 'how do we get customers', planning a go-to-market, or needs to narrow 19 possible channels down to one focused bet. Activates on phrases like 'channel selection', 'customer acquisition', 'marketing strategy', 'growth channel', 'traction channel', 'Bullseye Framework', 'which channel should we use', 'how do we grow', 'marketing plan', or any discussion of prioritizing acquisition investments." version: 1.0.0 homepage: https://github.com/bookforge-ai/bookforge-skills/tree/main/books/traction/skills/bullseye-channel-selection metadata: {"openclaw":{"emoji":"📚","homepage":"https://github.com/bookforge-ai/bookforge-skills"}} status: draft source-books: - id: traction title: "Traction: A Startup Guide to Getting Customers" authors: ["Gabriel Weinberg", "Justin Mares"] chapters: [2, 3] domain: startup-growth tags: [startup-growth, customer-acquisition, channel-selection, marketing-strategy, growth-marketing] depends-on: [] execution: tier: 1 mode: hybrid inputs: - type: document description: "Startup context — product description, stage, target customer, traction goal, budget" tools-required: [Read, Write] tools-optional: [AskUserQuestion] mcps-required: [] environment: "Plain-text working directory for channel evaluation documents and ranked shortlist" discovery: goal: "Select the single customer acquisition channel most likely to produce traction at the current startup stage" tasks: - "Generate ideas for all 19 traction channels to counteract founder bias" - "Rank channels into Inner Circle, Potential, and Long-shot tiers" - "Identify exactly 3 inner-circle channels to test in parallel" - "Design cheap tests for each inner-circle channel" - "Focus resources on the single channel producing best test results" audience: roles: [startup-founder, growth-marketer, head-of-marketing] experience: beginner-to-intermediate when_to_use: triggers: - "User asks which marketing channel to pursue" - "User is stuck in one channel and needs to explore alternatives" - "User has a new product and no traction strategy yet" - "User's current channel is saturating (rising CAC, falling CTR)" prerequisites: [] not_for: - "User has already validated a single working channel and wants to optimize it (use A/B testing skill)" - "User is pre-product — no product exists to acquire customers for yet" environment: codebase_required: false codebase_helpful: false works_offline: true quality: scores: with_skill: null baseline: null delta: null tested_at: null eval_count: 0 assertion_count: 12 iterations_needed: 0 --- # Bullseye Channel Selection ## When to Use You need to choose a customer acquisition channel for a startup, and the answer is not obvious. Before starting, verify: - The product exists in some usable form (pre-product → product work comes first) - The user can describe their target customer (even roughly) - The user is open to considering channels they haven't tried before If the user is already invested in a channel that's producing results, they likely want to *optimize* that channel, not re-select. Ask before running this skill. ## Context & Input Gathering ### Required Context (must have — ask if missing) - **Product description:** what it is, who it's for, what stage it's at → Check prompt for: product name, category, target user description → If missing, ask: "What does your product do, and who is the target customer?" - **Traction goal:** a specific numeric target (users, revenue, signups) over a specific timeframe → Check prompt for: numbers with "users", "customers", "revenue", timeframes → If missing, ask: "What's your traction goal? For example: '1,000 paying customers in 6 months' or '10,000 signups by end of quarter'." - **Budget envelope:** rough dollar range available for channel testing → Check prompt for: dollar amounts, "budget", "can spend" → If missing, ask: "Roughly what budget do you have for testing acquisition channels? Even $500-$2,000 is enough to start." ### Observable Context (gather from environment) - **Startup phase:** Phase I (pre-product-market-fit), Phase II (fit established, scaling traction), Phase III (scaling business) → Infer from: user count, revenue, team size, product maturity → Default: assume Phase I if unclear - **Current channels tried:** what the user has already attempted → Infer from: references to "we tried", "didn't work", "used to" ### Default Assumptions - Tests should cost $250-$500 each. A four-ad test is enough — forty is over-engineering. - Inner circle = exactly 3 channels, tested in parallel. - All 19 channels must be brainstormed, even ones the user dismisses. ### Sufficiency Threshold ``` SUFFICIENT: product description + traction goal + budget known PROCEED WITH DEFAULTS: product and goal known, budget assumed at $1,500 MUST ASK: product description is missing ``` ## Process Use TodoWrite to track the 5 Bullseye steps: - [ ] Step 1: Brainstorm (1 idea per all 19 channels) - [ ] Step 2: Rank into Columns A/B/C - [ ] Step 3: Prioritize — exactly 3 inner-circle channels - [ ] Step 4: Test (design cheap parallel tests) - [ ] Step 5: Focus (direct resources to the winner) For each step, mark `in_progress` when starting and `completed` when done. ### Step 1: Brainstorm (All 19 Channels) **ACTION:** Generate at least one concrete channel idea for every one of the 19 channels listed in [references/traction-channels.md](references/traction-channels.md). Write the ideas into a brainstorm table with these columns: | Channel | Idea | Probability (1-5) | Est. CAC | Est. Volume | Test Timeframe | Before scoring probability, explicitly note any channels the user dismissed. Ask why. The answer usually reveals one of three biases — see [references/channel-biases.md](references/channel-biases.md). **WHY:** Founders have blind spots. They reach for channels they know (engineers → Engineering as Marketing; salespeople → Sales) and ignore whole categories. Peter Thiel: "Most businesses actually get zero distribution channels to work. Poor distribution — not product — is the number one cause of failure." Brainstorming every channel, even ones the user considers "not for us", is the systematic counter to this bias. Skipping channels here means skipping the channel that could actually work. **IF** the user dismisses a channel without evidence → flag the bias type (invisible / negative / schlep) and still generate one idea for it. **IF** a channel genuinely has no plausible idea → note "no viable idea" with 1-sentence reasoning. Do not skip the row. ### Step 2: Rank Into Columns A / B / C **ACTION:** Sort each of the 19 channel ideas into three columns: - **Column A (Inner Circle):** channels that seem most promising right now given the product, audience, and stage - **Column B (Potential):** channels that could plausibly work but feel less certain - **Column C (Long-shot):** channels where only stretch ideas exist Output the ranked three-column table. **WHY:** Ranking forces explicit prioritization. Without this step, founders treat all channels as equally viable and end up testing whichever is most convenient. The three-column structure creates a visible bar: a channel is in A only if it beats the alternatives on probability, CAC, and volume — not because it's familiar. **IF** Column A has more than 3 channels → proceed to Step 3 to cut. **IF** Column A has fewer than 3 channels → promote the strongest Column B entries until you have 3. ### Step 3: Prioritize — Inner Circle Exactly 3 **ACTION:** From Column A, identify exactly 3 channels for the inner circle. If Column A has more than 3, look for the natural drop-off in excitement between candidates — usually around position 3. Eliminate below the drop-off. If fewer than 3, promote from Column B. Write the inner circle to `channel-inner-circle.md` with one paragraph per channel explaining why it qualified. **WHY:** Three is a deliberate number. Testing 1 channel sequentially wastes time — you learn nothing about alternatives. Testing 5+ channels in parallel fractures focus and produces noisy results ("kitchen sink distribution" — Thiel's named failure mode). Three channels tested in parallel takes the same clock time as one and produces comparative data. The correct channel is unpredictable before testing, so parallel is how you discover it. **IF** the user insists on more than 3 → explain the focus cost. If they still want more, note the deviation in the output and proceed with 3 for the formal Bullseye cycle. ### Step 4: Design Cheap Parallel Tests **ACTION:** For each of the 3 inner-circle channels, design a cheap test that answers these four questions: 1. Roughly how much will it cost to acquire customers through this channel? 2. How many customers are available through this channel at that cost? 3. Are these the customers you want right now? 4. How long does it take to acquire a customer through this channel? Target test budget: $250-$500 per channel. Use 4 ads, not 40. Speed to data matters more than test sophistication. Write `channel-test-plan.md` with hypothesis, budget, success metrics, and timeline per channel. **WHY:** Inner-circle tests are validation experiments, not optimization. Founders confuse these and spend weeks A/B-testing a channel before knowing it works at all. Cheap tests ($250 on AdWords) give enough signal to rule a channel in or out — rule *out* is the primary goal. A/B testing to wring out an extra 15% conversion matters only after you've proven the channel can work at all. **IF** tracking/reporting is not in place yet → stop and build it first. Sean Ellis: "Don't start testing until your tracking/reporting system has been implemented." A test with no measurement is a waste of budget. ### Step 5: Focus on the Winner **ACTION:** After tests complete, compare results across the four questions. Direct all channel resources to the single channel with the strongest signal. Write `channel-focus-strategy.md` with the chosen channel, the evidence from testing, and the optimization plan (A/B testing cadence, budget scaling, team allocation). If no channel showed promise, document what you learned and repeat Steps 1-4. Use the test data to refine the next brainstorm — which assumptions were wrong? **WHY:** Focus is where traction actually happens. Spreading resources across multiple channels after testing is the kitchen sink failure mode again, just later in the cycle. If Channel A showed a clear signal and Channel B showed a weaker one, doubling down on A produces more traction than hedging across both. Compound returns come from depth, not breadth. **IF** two channels tied → pick based on strategic fit with the next growth phase, not the current test alone. A channel that works now but doesn't scale (personal outreach in Phase II) is worse than a channel that works now and scales (content marketing). ## Inputs - Product description and stage - Traction goal (specific, numeric, time-bound) - Budget for channel testing - Current channels tried (if any) ## Outputs Produces four deliverables in the working directory: 1. **`channel-brainstorm.md`** — 19-row table with ideas, probability scores, CAC/volume estimates, test timeframes 2. **`channel-rankings.md`** — Three-column A/B/C table with all 19 channels sorted 3. **`channel-inner-circle.md`** — The 3 selected channels with qualification reasoning 4. **`channel-test-plan.md`** — Cheap test design per channel (hypothesis, budget, metrics, timeline) 5. **`channel-focus-strategy.md`** *(after tests complete)* — Chosen channel + optimization plan ## Key Principles - **Don't dismiss any channel in the brainstorm.** The channel you skip because it "obviously won't work" is the one a competitor will use to beat you. WHY: Founder bias is the single biggest failure mode in channel selection. Every channel gets one idea — this is non-negotiable. - **Three in parallel, not one at a time.** Sequential testing wastes calendar time. Five in parallel fractures focus. Three is the Goldilocks number — enough parallelism to compare, not so much that you lose discipline. WHY: The correct channel is unpredictable before testing, so you can't just "pick the right one first". Parallel comparison is how you discover it. - **Cheap validation before expensive optimization.** Inner-circle tests rule channels *out*, not in. Spend $250 to learn if a channel has any signal, not $25,000 to optimize a channel you haven't validated. WHY: Premature optimization is the most common testing failure. A/B testing is valuable only after the channel itself is proven. - **Repeat Bullseye at every growth-stage transition.** A channel that worked in Phase I will often saturate in Phase II. When your current channel's CAC starts climbing or CTR starts falling (Law of Shitty Click-Throughs), run Bullseye again with the data you've accumulated. WHY: Channels have a lifecycle. Treating Bullseye as a one-time decision locks you into a channel past its useful life. - **Focus after the test, not during.** Once a winner emerges, all resources go to that channel — not hedged across the top two. Compound returns come from depth. WHY: The startup's biggest asset is focused attention. Diluting it across channels is the kitchen sink failure at a different scale. ## Examples **Scenario: B2B SaaS founder with no traction strategy** Trigger: "We built a project management tool for construction teams. Launched 3 months ago. Have 40 paying customers from personal outreach. Need to get to 500 in 6 months. Budget: $3,000/month for marketing. What should we do?" Process: (1) Brainstorm all 19 channels — note the founder dismissed Trade Shows as "not for us" (flagged as schlep bias; construction expos are where this audience lives). (2) Rank: Column A = Sales (SDR outreach), Trade Shows (construction expos), Targeting Blogs (construction-industry blogs). Column B = BD (integration partnerships), Content Marketing, SEM. Column C = Viral, Affiliate, Community. (3) Inner circle: Sales, Trade Shows, Targeting Blogs. (4) Tests: SDR with 100 cold emails ($500), booth sponsorship at one small construction meetup ($800), paid sponsorship on top 2 construction blogs ($700). (5) Two weeks later: sponsored blog posts had clear winner — $40 CAC, 25 signups. Focus: double down on Targeting Blogs, expand to 5 more blogs, build library of 3 guest posts per month. Output: 4 markdown files in working directory, clear channel winner with evidence, next-4-weeks plan. **Scenario: Consumer app stuck in Engineering as Marketing tunnel** Trigger: "We built a free calculator tool that ranks on Google for 'loan calculator'. Drives 50k visits/month but only 200 signups. Engineering team keeps building more calculators. Growth has plateaued. What now?" Process: (1) Brainstorm forces the founder to consider channels beyond Engineering as Marketing. Notes: "Viral Marketing — we haven't even thought about this; our calculators could include share hooks." (2) Rank: Column A = Viral Marketing (embed calculators as widgets on finance blogs), Content Marketing (loan advice articles with calculator CTAs), Email Marketing (nurture the 200 signups). Column B = PR, SEM, Targeting Blogs. Column C = Sales, Trade Shows, Offline Events. (3) Inner circle: Viral (widgets), Content, Email. (4) Tests: 3 widgets on blogs ($0 — engineering time), 5 long-form articles ($1,500 freelance), email drip sequence (existing 200 contacts). (5) Content articles converted 4x better than widgets — focus on content, commission 2 articles/week. Output: Founder breaks out of "just build more calculators" loop. Discovers Content Marketing is the real channel; Engineering as Marketing was actually serving SEO, not acquisition. **Scenario: Repeating Bullseye after saturation** Trigger: "Targeting blogs worked great for us for 18 months — got 40k users. But now CAC is climbing and new blog partnerships aren't producing the same volume. Growth is flattening." Process: Recognize this as the Law of Shitty Click-Throughs — the channel is saturating. Run Bullseye again, this time weighted by the test data already accumulated. (1) Brainstorm with the history in mind: "We know blog-style content works — which channels amplify that?" (2) Rank: Column A = PR (media coverage amplifies existing content), Content Marketing (owned publication), Community Building (turning blog readers into evangelists). (3) Inner circle: PR, Content, Community. (4) Tests: 1 HARO pitch per day for 30 days, launch own publication with 8 articles, seed community in Slack. (5) PR produced biggest lift — TechCrunch feature = 8,000 new users in 48 hours. Output: Channel rotation handoff from Targeting Blogs → PR, with Content Marketing as supporting channel for PR amplification. ## References - For the complete list of 19 traction channels with descriptions, see [references/traction-channels.md](references/traction-channels.md) - For detection and counter-tactics for the three founder bias types, see [references/channel-biases.md](references/channel-biases.md) - For the Mint case study showing Bullseye in action from 0 → 1M users, see [references/mint-case-study.md](references/mint-case-study.md) ## License This skill is licensed under [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/). Source: [BookForge](https://github.com/bookforge-ai/bookforge-skills) — Traction: A Startup Guide to Getting Customers by Gabriel Weinberg and Justin Mares. ## Related BookForge Skills This skill is the entry point for the Traction methodology. Install related skills from ClawhHub: - `clawhub install bookforge-startup-traction-strategy-by-phase` — Matches channels to your current growth phase (I/II/III) - `clawhub install bookforge-traction-channel-testing` — Designs cheap tests for inner-circle channels - `clawhub install bookforge-startup-critical-path-planning` — Integrates channel selection into startup milestone planning Or install the full book set from GitHub: [bookforge-skills](https://github.com/bookforge-ai/bookforge-skills)

path: references/channel-biases.md
content: # The Three Founder Channel Biases

These biases systematically narrow the brainstorm set. Detect them during Step 1 of the Bullseye Framework and force an idea for the affected channel anyway.

## 1. Invisible Bias

**Symptom:** The founder doesn't even think of the channel. It's not on their mental map of "marketing."
**Example:** Engineers often have no mental slot for "Speaking Engagements" — they've never given a talk and don't imagine it as a customer acquisition channel.
**Detection question:** "Have you considered [channel]?" If the answer is a blank stare or a puzzled "... no?", this is invisible bias.
**Counter:** Walk through every single channel name during the brainstorm. Force one idea for each, even if it's bad.

## 2. Negative Bias

**Symptom:** The founder has a personal negative reaction to a channel — they hate it or tried it once and it failed.
**Example:** "I hate talking on the phone, so cold calling is out." "We tried Facebook ads and lost money, so social ads are dead for us."
**Detection question:** "What's your reaction to [channel]?" If the answer is visceral ("ugh", "I hate that"), this is negative bias.
**Counter:** Decouple channel from the founder's preferences. The founder isn't the customer. "Just because you hate talking on the phone doesn't mean your customers do." Past failure in a channel doesn't mean the channel is broken — the test design might have been wrong, the product might have been wrong, or the channel might be right *now* even if it was wrong then.

## 3. Schlep Bias

**Symptom:** The founder avoids channels that are manual, unsexy, or high-effort — especially when they feel "beneath" the company's self-image.
**Example:** "We're a modern SaaS, we don't do trade shows." "BD is too slow, we want scalable." "Community building is for consumer products, not enterprise."
**Detection question:** "Why not [channel]?" If the answer is about effort, image, or sexiness, this is schlep bias.
**Counter:** Jason Cohen's framing: "If your competition refuses to try these channels, that's even more reason to go try them — it's almost a competitive advantage." The schleppy channels are often uncrowded exactly because of this bias.

## The Meta-Bias

All three biases converge on the same failure: **the founder reaches for familiar, comfortable, or exciting channels first, ignoring the channels that might actually work best.** The Bullseye brainstorm is explicitly designed to counter this by forcing every channel into consideration before ranking.

## Source

Chapter 1 ("Traction Channels") and Chapter 2 ("The Bullseye Framework") of *Traction* by Gabriel Weinberg and Justin Mares.


path: references/mint-case-study.md
content: # Case Study: Mint — From 0 to 1 Million Users in 6 Months

The canonical example of the Bullseye Framework applied to a real startup. Documented by Noah Kagan, Mint's early marketing lead.

## Context

- **Company:** Mint.com, personal finance management
- **Stage:** Pre-launch, no customers
- **Traction goal:** 100,000 users in the first 6 months after launch
- **Outcome:** Exceeded goal — reached 1 million users in 6 months. Acquired by Intuit for $170M.

## Bullseye Step 1 — Brainstorm

Kagan and team brainstormed ideas across all 19 channels. They identified channels where they had plausible angles given their target audience (personal finance users) and early-stage budget.

## Bullseye Step 2/3 — Rank and Prioritize

**Inner Circle (Column A, 3 channels):**
1. **Targeting Blogs** — Mid-level personal finance bloggers had engaged, on-topic audiences. Mint's product was a natural fit.
2. **Public Relations (PR)** — Finance is a trusted-recommendation category. Media coverage would drive signups.
3. **Search Engine Marketing (SEM)** — Direct demand fulfillment for search terms like "budget tracker" and "personal finance software".

Channels in Columns B/C included Viral Marketing, Content Marketing, Sales, and others — not dismissed, but lower priority for this specific stage.

## Bullseye Step 4 — Test

**Targeting Blogs test:** Sponsored a small personal finance newsletter. Cost: low hundreds of dollars. Measured signup conversion.

**PR test:** Reached out to Suze Orman (high-profile personal finance celebrity) with a personal pitch.

**SEM test:** Placed Google ads on category terms. Measured CAC and signup quality.

## Bullseye Step 5 — Focus

Targeting Blogs produced the strongest signal. Kagan doubled down:
- **VIP Access tactic:** Offered pre-launch priority to blog readers in exchange for a badge on the blog.
- **Sponsorship tactic:** Paid niche bloggers for sponsored placement.
- **Guest posting:** Wrote personal finance content for mid-level blogs.

**Result of Step 5:** 40,000 users before launch — from targeting blogs alone.

## Bullseye Repeat

After targeting blogs began to saturate (the Law of Shitty Click-Throughs kicking in), Kagan ran Bullseye *again*. This time, the test data from phase one informed the next inner circle.

**New inner circle:** PR moved into Column A because the momentum from blogs created newsworthy milestones. PR became the primary channel for the next growth stage.

**Result of the second cycle:** Mint crossed 1 million users in 6 months post-launch.

## Key Lessons

1. **Bullseye is iterative, not one-shot.** Mint ran it at least twice in the first year.
2. **The winning channel is unpredictable before testing.** Mint's team had a hypothesis about SEM but blogs outperformed it.
3. **Test data accumulates.** The second Bullseye cycle wasn't a cold start — it used data from the first cycle to rank channels better.
4. **Focus produces compounding returns.** Mint got 40k users from just one channel (blogs) because they doubled down rather than hedging.

## Source

Chapter 2 ("The Bullseye Framework") of *Traction* by Gabriel Weinberg and Justin Mares. Noah Kagan's account of Mint's early growth is presented as the canonical Bullseye worked example.


path: references/traction-channels.md
content: # The 19 Traction Channels

A reference list of every channel the Bullseye Framework brainstorms across. Each entry includes a one-line definition and typical fit signals.

1. **Viral Marketing** — Getting existing users to refer others to the product. Fit: products with inherent sharing value or network effects.
2. **Public Relations (PR)** — Traditional media coverage (news, newspapers, magazines). Fit: Phase II+ with newsworthy milestones.
3. **Unconventional PR** — Publicity stunts and extreme customer appreciation. Fit: brand-building, memorable launches.
4. **Search Engine Marketing (SEM)** — Paid ads on Google/Bing. Fit: existing search demand for category terms.
5. **Social and Display Ads** — Paid ads on Facebook, Twitter, LinkedIn, display networks. Fit: visual/brand-driven products, clear demographic targeting.
6. **Offline Ads** — TV, radio, print, billboards, direct mail. Fit: mass-market, later-stage, broad demographic.
7. **Search Engine Optimization (SEO)** — Organic ranking in search engines. Fit: existing search demand, long time horizon.
8. **Content Marketing** — Blog, newsletter, podcast, video as acquisition channel. Fit: audience that reads, compounding over time.
9. **Email Marketing** — Lifecycle emails for acquisition, activation, retention, revenue. Fit: all stages; pairs with every other channel.
10. **Engineering as Marketing** — Free tools that generate leads (calculators, widgets, grader tools). Fit: technical team, well-defined customer problem.
11. **Targeting Blogs** — Sponsoring, guest posting, or relationship-building with niche blogs. Fit: Phase I, defined audience, limited reach blogs.
12. **Business Development (BD)** — Partnerships that exchange value (not dollars). Fit: when partner brings distribution, inventory, or brand.
13. **Sales** — Direct outreach, qualification, closing. Fit: enterprise, high-price products, products requiring consultation.
14. **Affiliate Programs** — Paying others a cut for driving sales or leads. Fit: defined customer value, existing affiliate ecosystem.
15. **Existing Platforms** — Leveraging platforms with large user bases (App Stores, browser extensions, social networks). Fit: products that complement a big platform's gap.
16. **Trade Shows** — Industry events where vendors meet prospects. Fit: B2B, enterprise, industries that gather at expos.
17. **Offline Events** — Running or sponsoring meetups, conferences. Fit: community-driven products, local scaling.
18. **Speaking Engagements** — Getting the founder/team on stage at relevant events. Fit: thought leadership, founder-led sales.
19. **Community Building** — Investing in relationships among users so they recruit others. Fit: products that connect people or share a mission.

## Source

Chapter 1 ("Traction Channels") of *Traction* by Gabriel Weinberg and Justin Mares.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)