@opendirectory.dev/skills 0.1.38 → 0.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/registry.json +24 -2
- package/skills/map-your-market/SKILL.md +1 -9
- package/skills/product-update-logger/.env.example +4 -0
- package/skills/product-update-logger/README.md +197 -0
- package/skills/product-update-logger/SKILL.md +462 -0
- package/skills/product-update-logger/evals/evals.json +119 -0
- package/skills/product-update-logger/references/changelog-format.md +96 -0
- package/skills/product-update-logger/references/content-rules.md +154 -0
- package/skills/product-update-logger/references/noise-filter.md +86 -0
- package/skills/product-update-logger/scripts/gather.py +364 -0
- package/skills/where-your-customer-lives/.env.example +4 -0
- package/skills/where-your-customer-lives/README.md +135 -0
- package/skills/where-your-customer-lives/SKILL.md +515 -0
- package/skills/where-your-customer-lives/evals/evals.json +108 -0
- package/skills/where-your-customer-lives/references/channel-types.md +147 -0
- package/skills/where-your-customer-lives/references/entry-tactics.md +179 -0
- package/skills/where-your-customer-lives/references/scoring-guide.md +141 -0
- package/skills/where-your-customer-lives/scripts/fetch.py +810 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "eval_001",
|
|
4
|
+
"name": "Developer tools ICP (devops) -- full pipeline",
|
|
5
|
+
"input": {
|
|
6
|
+
"product": "Observability platform that replaces Datadog for teams under 200 engineers",
|
|
7
|
+
"icp_role": "DevOps engineers at mid-size companies",
|
|
8
|
+
"icp_pain": "Datadog bill growing faster than team size",
|
|
9
|
+
"category": "devops observability monitoring",
|
|
10
|
+
"competitors": ["Datadog", "New Relic", "Grafana"]
|
|
11
|
+
},
|
|
12
|
+
"expected": {
|
|
13
|
+
"min_channels": 8,
|
|
14
|
+
"required_channel_types": ["reddit", "newsletter", "conference"],
|
|
15
|
+
"top_channel_must_be_type": "reddit",
|
|
16
|
+
"top_channel_must_contain": "devops",
|
|
17
|
+
"reddit_channels_min": 3,
|
|
18
|
+
"icp_signals_min": 10,
|
|
19
|
+
"competitor_layer_ran": true,
|
|
20
|
+
"entry_tactic_must_not_contain": "post about your product",
|
|
21
|
+
"banned_words": ["powerful", "robust", "seamless", "innovative", "game-changing", "streamline", "leverage", "transform", "revolutionize"],
|
|
22
|
+
"no_em_dashes": true
|
|
23
|
+
},
|
|
24
|
+
"notes": "Full pipeline. r/devops should be #1 with high icp_signal_count. Datadog/Grafana competitor mentions should boost channels where those tools are discussed. Newsletter like 'DevOps Weekly' should appear. KubeCon or similar conference expected."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "eval_002",
|
|
28
|
+
"name": "B2B sales tool ICP -- competitor layer fires",
|
|
29
|
+
"input": {
|
|
30
|
+
"product": "AI-powered outbound sales tool for B2B SaaS companies",
|
|
31
|
+
"icp_role": "sales leaders at B2B SaaS startups",
|
|
32
|
+
"icp_pain": "outbound sequences get ignored, response rates under 1%",
|
|
33
|
+
"category": "B2B sales outbound CRM",
|
|
34
|
+
"competitors": ["Clay", "Apollo", "HubSpot", "Outreach"]
|
|
35
|
+
},
|
|
36
|
+
"expected": {
|
|
37
|
+
"min_channels": 6,
|
|
38
|
+
"required_channel_types": ["reddit", "linkedin_group"],
|
|
39
|
+
"competitor_layer_ran": true,
|
|
40
|
+
"competitor_channels_present": true,
|
|
41
|
+
"channels_differ_from_eval_001": true,
|
|
42
|
+
"reddit_channels_must_not_contain": "devops",
|
|
43
|
+
"entry_tactic_must_not_contain": "post about your product",
|
|
44
|
+
"no_em_dashes": true
|
|
45
|
+
},
|
|
46
|
+
"notes": "Competitor layer should fire strongly on Clay/Apollo/HubSpot. LinkedIn groups should appear (sales leaders use LinkedIn more than Reddit). Channel list should differ substantially from eval_001 -- different ICP produces different channels."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "eval_003",
|
|
50
|
+
"name": "Consumer app ICP -- different channel mix",
|
|
51
|
+
"input": {
|
|
52
|
+
"product": "Personal finance app for people tracking subscriptions",
|
|
53
|
+
"icp_role": "people frustrated by unknown monthly charges",
|
|
54
|
+
"icp_pain": "losing money on subscriptions I forgot about",
|
|
55
|
+
"category": "personal finance consumer app subscriptions",
|
|
56
|
+
"competitors": ["Rocket Money", "Trim", "PocketGuard"]
|
|
57
|
+
},
|
|
58
|
+
"expected": {
|
|
59
|
+
"min_channels": 5,
|
|
60
|
+
"required_channel_types": ["reddit", "youtube"],
|
|
61
|
+
"must_not_include_type": "linkedin_group",
|
|
62
|
+
"channels_differ_from_eval_001": true,
|
|
63
|
+
"channels_differ_from_eval_002": true,
|
|
64
|
+
"no_em_dashes": true
|
|
65
|
+
},
|
|
66
|
+
"notes": "Consumer ICP should surface r/personalfinance, YouTube channels, possibly Discord. LinkedIn groups are wrong for this ICP -- flag if they appear. The channel mix should look nothing like devops or sales tool results."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "eval_004",
|
|
70
|
+
"name": "Very niche ICP -- thin data handled honestly",
|
|
71
|
+
"input": {
|
|
72
|
+
"product": "Compliance automation for small community banks",
|
|
73
|
+
"icp_role": "compliance officers at community banks under $500M assets",
|
|
74
|
+
"icp_pain": "BSA/AML reporting takes 3 days per quarter",
|
|
75
|
+
"category": "community bank compliance BSA AML regulatory",
|
|
76
|
+
"competitors": []
|
|
77
|
+
},
|
|
78
|
+
"expected": {
|
|
79
|
+
"thin_data_acknowledged": true,
|
|
80
|
+
"min_channels": 2,
|
|
81
|
+
"no_fabricated_member_counts": true,
|
|
82
|
+
"competitor_layer_ran": false,
|
|
83
|
+
"report_must_say": "member count not found",
|
|
84
|
+
"no_em_dashes": true
|
|
85
|
+
},
|
|
86
|
+
"notes": "This ICP is niche enough that Reddit signal count will be low. Script should still try DuckDuckGo for conference/newsletter/association channels. Output must not fabricate community sizes. If member count unavailable, must say 'member count not found' not an estimated number."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "eval_005",
|
|
90
|
+
"name": "No competitors provided -- competitor layer skipped cleanly",
|
|
91
|
+
"input": {
|
|
92
|
+
"product": "Email deliverability monitoring for SaaS companies",
|
|
93
|
+
"icp_role": "growth engineers at B2B SaaS",
|
|
94
|
+
"icp_pain": "transactional emails landing in spam without warning",
|
|
95
|
+
"category": "email deliverability SMTP SaaS",
|
|
96
|
+
"competitors": []
|
|
97
|
+
},
|
|
98
|
+
"expected": {
|
|
99
|
+
"competitor_layer_ran": false,
|
|
100
|
+
"output_notes_competitor_layer_skipped": true,
|
|
101
|
+
"min_channels": 4,
|
|
102
|
+
"required_channel_types": ["reddit"],
|
|
103
|
+
"no_em_dashes": true,
|
|
104
|
+
"output_recommends_adding_competitors": true
|
|
105
|
+
},
|
|
106
|
+
"notes": "Competitor layer should be cleanly skipped with no errors. Output should note that competitor layer was not run and suggest adding competitors (MXroute, Mailgun, Postmark, etc.) for richer results. Signal-trace should still produce valid Reddit channels."
|
|
107
|
+
}
|
|
108
|
+
]
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Channel Types Reference
|
|
2
|
+
|
|
3
|
+
Seven channel types discovered by this skill. Each type has a different discovery method, metadata available, and scoring characteristics.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Reddit
|
|
8
|
+
|
|
9
|
+
**Discovery method:** Signal-trace (primary) -- search Reddit for ICP pain posts, extract which subreddits those posts came from. Subreddits with the most ICP posts = highest-confidence channels.
|
|
10
|
+
|
|
11
|
+
**Metadata available:**
|
|
12
|
+
- `subscribers` -- total member count from `r/{sub}/about.json`
|
|
13
|
+
- `active_user_count` -- users online right now (proxy for posts/day activity)
|
|
14
|
+
- `public_description` -- subreddit purpose from about.json
|
|
15
|
+
- `icp_signal_count` -- posts matching ICP queries found in this subreddit (counted by script)
|
|
16
|
+
- `competitor_mentions` -- how many ICP posts also mention a competitor product
|
|
17
|
+
|
|
18
|
+
**Scoring notes:**
|
|
19
|
+
- Highest-confidence channel type because signals are traced from actual ICP posts
|
|
20
|
+
- active_user_count / 100 used as activity_score (capped at 30)
|
|
21
|
+
- Open entry -- no penalty
|
|
22
|
+
|
|
23
|
+
**Evidence standard:** Every Reddit channel must have at least 1 evidence_post from the raw data. If icp_signal_count = 0, the channel was found via competitor layer, not signal_trace -- note this distinction.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. Slack
|
|
28
|
+
|
|
29
|
+
**Discovery method:** DuckDuckGo search -- `"{category} slack community"` and `"{icp_role} slack workspace"`
|
|
30
|
+
|
|
31
|
+
**Metadata available:**
|
|
32
|
+
- Member count from search snippets (e.g. "Join 12,000+ DevOps professionals")
|
|
33
|
+
- URL from search result (often a landing page or Slack direct link)
|
|
34
|
+
|
|
35
|
+
**Scoring notes:**
|
|
36
|
+
- No icp_signal_count from script (0 unless competitor layer fires)
|
|
37
|
+
- Member count drives size component of score
|
|
38
|
+
- activity_score defaults to 5 (DDG doesn't expose post frequency)
|
|
39
|
+
- Most Slack communities are open-invite (via website form) -- no penalty
|
|
40
|
+
|
|
41
|
+
**Evidence standard:** Channel name and URL must come from DDG results. Member count from snippet or 0 -- never estimated. Note if invite-required (entry_type = "invite-only", -10 penalty).
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 3. Discord
|
|
46
|
+
|
|
47
|
+
**Discovery method:** DuckDuckGo search -- `"{icp_role} discord server"` and `"{category} discord community"`
|
|
48
|
+
|
|
49
|
+
**Metadata available:**
|
|
50
|
+
- Member count from DDG snippets
|
|
51
|
+
- Invite link or website from search result
|
|
52
|
+
|
|
53
|
+
**Scoring notes:**
|
|
54
|
+
- Same scoring structure as Slack
|
|
55
|
+
- Many Discord servers are invite-only -- check the URL for discord.gg invite links
|
|
56
|
+
- Gaming/consumer ICPs: Discord scores higher than Slack
|
|
57
|
+
|
|
58
|
+
**Evidence standard:** Same as Slack. If invite link expires, note as "invite may expire -- check current link."
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 4. Newsletter
|
|
63
|
+
|
|
64
|
+
**Discovery method:** DuckDuckGo search -- `"{category} newsletter weekly"` and HN "Ask HN: what newsletters do you read about {category}"
|
|
65
|
+
|
|
66
|
+
**Metadata available:**
|
|
67
|
+
- Subscriber count from DDG snippets (less reliable than Reddit API)
|
|
68
|
+
- Frequency (weekly/monthly) from snippet
|
|
69
|
+
- Sponsorship availability often mentioned in description
|
|
70
|
+
|
|
71
|
+
**Scoring notes:**
|
|
72
|
+
- Newsletters score well for reach but entry is typically paid sponsorship or content contribution
|
|
73
|
+
- entry_type = "paid" (-20 penalty) if snippet mentions "sponsor" or "advertising"
|
|
74
|
+
- Subscriber count varies widely -- treat as directional
|
|
75
|
+
|
|
76
|
+
**Evidence standard:** Newsletter name must appear in DDG results. Subscriber count from snippet or "subscriber count not found."
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 5. Podcast
|
|
81
|
+
|
|
82
|
+
**Discovery method:** DuckDuckGo search -- `"{icp_role} podcast"` and `"best {category} podcast"`
|
|
83
|
+
|
|
84
|
+
**Metadata available:**
|
|
85
|
+
- Episode count from snippet
|
|
86
|
+
- Frequency (weekly/biweekly) from snippet
|
|
87
|
+
- Guest appearances as entry point
|
|
88
|
+
|
|
89
|
+
**Scoring notes:**
|
|
90
|
+
- Podcasts score lower than Reddit because reach per episode is smaller and entry requires production effort
|
|
91
|
+
- Guest appearances are the primary entry tactic -- not "listening"
|
|
92
|
+
- activity_score defaults to 5
|
|
93
|
+
|
|
94
|
+
**Evidence standard:** Podcast name and URL from DDG results. Episode count from snippet or omitted.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 6. Conference
|
|
99
|
+
|
|
100
|
+
**Discovery method:** DuckDuckGo search -- `"{category} conference summit 2025"` and `"{icp_role} conference annual"`
|
|
101
|
+
|
|
102
|
+
**Metadata available:**
|
|
103
|
+
- Attendee count from snippet
|
|
104
|
+
- Date and location from snippet
|
|
105
|
+
- Ticket price category (free/paid) from snippet
|
|
106
|
+
|
|
107
|
+
**Scoring notes:**
|
|
108
|
+
- Conferences have the highest ICP density per touchpoint but low accessibility
|
|
109
|
+
- entry_type = "paid" (-20 penalty) for paid conferences
|
|
110
|
+
- Sponsorship is a separate entry path (expensive) -- not the primary tactic
|
|
111
|
+
- Hallway conversations and evening events > sponsored sessions for early-stage founders
|
|
112
|
+
|
|
113
|
+
**Evidence standard:** Conference name from DDG results. Attendee count from snippet or "attendee count not found." Check for 2025/2026 dates -- exclude past conferences.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 7. YouTube Channel
|
|
118
|
+
|
|
119
|
+
**Discovery method:** DuckDuckGo search -- `"best {category} youtube channel"` and `"{icp_role} tutorial youtube"`
|
|
120
|
+
|
|
121
|
+
**Metadata available:**
|
|
122
|
+
- Subscriber count from DDG snippets
|
|
123
|
+
- Channel name and URL
|
|
124
|
+
|
|
125
|
+
**Scoring notes:**
|
|
126
|
+
- YouTube channels are consumption channels, not community channels
|
|
127
|
+
- Entry tactic = guest appearance or collaboration, not commenting
|
|
128
|
+
- High subscriber counts inflate scores -- cap with size component (log scale)
|
|
129
|
+
|
|
130
|
+
**Evidence standard:** Channel name and subscriber count from DDG results.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 8. Forum (catch-all)
|
|
135
|
+
|
|
136
|
+
**Discovery method:** Competitor layer DuckDuckGo search -- `"{competitor} community forum users"`
|
|
137
|
+
|
|
138
|
+
**Metadata available:**
|
|
139
|
+
- URL from DDG results
|
|
140
|
+
- Description from snippet
|
|
141
|
+
|
|
142
|
+
**Scoring notes:**
|
|
143
|
+
- Competitor forums = high intent ICP (actively evaluating alternatives)
|
|
144
|
+
- icp_signal_count = 0, but competitor_mentions bumped to 3 as proxy
|
|
145
|
+
- Includes HN (scored separately with actual signal count)
|
|
146
|
+
|
|
147
|
+
**Evidence standard:** URL and name from DDG results or direct knowledge (HN is always valid).
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# Entry Tactic Templates by Channel Type
|
|
2
|
+
|
|
3
|
+
These are starting templates. The AI must customize each tactic for the specific community, using evidence posts and the subreddit description to identify actual thread types, posting norms, and community rules.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Reddit
|
|
8
|
+
|
|
9
|
+
**Template structure:** Thread type + content format + community norm + what to avoid.
|
|
10
|
+
|
|
11
|
+
**Thread types to look for:**
|
|
12
|
+
- Weekly/monthly megathreads: "What are you working on?", "Tools & Projects", "Self-Promotion Saturday", "Feedback Friday", "Show HN" equivalent threads
|
|
13
|
+
- Recurring "Help" or "Question" flairs
|
|
14
|
+
- Monthly community surveys or AMAs
|
|
15
|
+
|
|
16
|
+
**Content formats that get upvotes:**
|
|
17
|
+
- Technical post-mortems: "We did X, it failed, here is why, here is what we changed"
|
|
18
|
+
- Comparison breakdowns: "We evaluated 5 tools for {pain} -- here is our matrix"
|
|
19
|
+
- Problem-framing posts: "Anyone else dealing with {pain}? We found three approaches..."
|
|
20
|
+
- Open questions with context: "We are building {thing}. Ran into {problem}. What would you do?"
|
|
21
|
+
|
|
22
|
+
**Universal anti-patterns for Reddit:**
|
|
23
|
+
- Posting product links in non-promotional threads (auto-removed in most subreddits)
|
|
24
|
+
- Asking "what tools do you use?" without a specific problem context (flagged as market research farming)
|
|
25
|
+
- First post is a product announcement (zero karma = instant distrust)
|
|
26
|
+
- Responding to competitor complaints with "you should try our product"
|
|
27
|
+
|
|
28
|
+
**Example (r/devops):** "Find the weekly 'What are you working on?' thread (pinned every Monday by automoderator). Reply with a 3-sentence technical challenge: what you were trying to do, what broke, and what you tried. No product mention. Build 3-4 posts of karma before posting standalone content."
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Slack
|
|
33
|
+
|
|
34
|
+
**Template structure:** Specific channel within the workspace + conversation format + timing.
|
|
35
|
+
|
|
36
|
+
**Entry sequence:**
|
|
37
|
+
1. Join via website form or invite link
|
|
38
|
+
2. Introduce yourself in #introductions with: role, company, one technical problem you are currently solving
|
|
39
|
+
3. Spend 1-2 weeks answering questions in relevant channels before posting about your product
|
|
40
|
+
4. Post in #show-and-tell or #tools channels after establishing presence
|
|
41
|
+
|
|
42
|
+
**Content formats that get engagement:**
|
|
43
|
+
- Asking a specific technical question (signals you are a practitioner, not a vendor)
|
|
44
|
+
- Sharing a non-promotional resource (article, script, guide)
|
|
45
|
+
- Answering someone else's question in detail
|
|
46
|
+
|
|
47
|
+
**Anti-patterns:**
|
|
48
|
+
- DM-ing members directly to pitch (almost always a ban)
|
|
49
|
+
- Cross-posting the same message in multiple channels
|
|
50
|
+
- Posting product links without being asked
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Discord
|
|
55
|
+
|
|
56
|
+
**Template structure:** Server channel + role assignment + gradual contribution.
|
|
57
|
+
|
|
58
|
+
**Entry sequence:**
|
|
59
|
+
1. Join via invite link
|
|
60
|
+
2. Complete any onboarding (many servers require role selection or intro post)
|
|
61
|
+
3. Post in #introductions: role + what you build + one specific problem
|
|
62
|
+
4. Contribute in technical channels for 1-2 weeks before mentioning your product
|
|
63
|
+
|
|
64
|
+
**Content formats:**
|
|
65
|
+
- Voice channels / stage events: joining community calls builds trust faster than text
|
|
66
|
+
- Sharing tools, scripts, or resources in #resources or #tools channels
|
|
67
|
+
- Participating in community challenges or hackathons
|
|
68
|
+
|
|
69
|
+
**Anti-patterns:**
|
|
70
|
+
- Posting in #general with a promotional message on day 1
|
|
71
|
+
- Spamming invite links in other servers
|
|
72
|
+
- Pinging @everyone or using excessive notifications
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Newsletter
|
|
77
|
+
|
|
78
|
+
**Template structure:** Contribution type + relationship path + timeline.
|
|
79
|
+
|
|
80
|
+
**Entry approaches (ranked by accessibility):**
|
|
81
|
+
1. **Sponsor:** Most newsletters have a sponsor slot. Relevant for products with budget.
|
|
82
|
+
2. **Guest article:** Pitch a technical deep-dive or case study. Must be non-promotional and provide genuine value.
|
|
83
|
+
3. **Mention-worthy news:** Share something newsworthy (open-source release, research finding, benchmark) that the editor would want to share organically.
|
|
84
|
+
|
|
85
|
+
**Content formats that get accepted:**
|
|
86
|
+
- Data-backed insights ("We analyzed 500 incidents -- here is what caused the most downtime")
|
|
87
|
+
- Practical guides with code/config examples
|
|
88
|
+
- Contrarian takes with evidence
|
|
89
|
+
|
|
90
|
+
**Anti-patterns:**
|
|
91
|
+
- Pitching a sponsored post that reads like a product description
|
|
92
|
+
- Sending a cold pitch with no context about why your content fits the audience
|
|
93
|
+
- Sending the same pitch to 10 newsletters at once (editors talk to each other)
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Podcast
|
|
98
|
+
|
|
99
|
+
**Template structure:** Guest pitch angle + pre-qualification + follow-up.
|
|
100
|
+
|
|
101
|
+
**Entry approach:**
|
|
102
|
+
1. Listen to 3-5 episodes to identify the host's specific framing and guest style
|
|
103
|
+
2. Pitch as a practitioner, not a founder: "I am a DevOps engineer who spent 2 years solving X. I have specific opinions about Y that your audience would disagree with."
|
|
104
|
+
3. Lead with controversy or counter-intuition, not company credentials
|
|
105
|
+
|
|
106
|
+
**Pitch elements that work:**
|
|
107
|
+
- A specific claim the audience will want to debate
|
|
108
|
+
- A technical story with a surprising outcome
|
|
109
|
+
- A data-backed finding that contradicts conventional wisdom
|
|
110
|
+
|
|
111
|
+
**Anti-patterns:**
|
|
112
|
+
- "I am the founder of X and would love to share our story" (generic, rejected)
|
|
113
|
+
- Pitching via mass email tools (gets filtered as spam)
|
|
114
|
+
- Offering to pay to be a guest (podcast integrity signal to hosts)
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Conference
|
|
119
|
+
|
|
120
|
+
**Template structure:** Specific engagement context + entry level + timeline.
|
|
121
|
+
|
|
122
|
+
**Entry approaches (ranked by cost/effort):**
|
|
123
|
+
1. **Attend + hallway conversations:** Cheapest. Identify 3-5 specific sessions where your ICP will concentrate. Prepare a 30-second context-setting intro. Bring nothing promotional.
|
|
124
|
+
2. **Submit a talk:** Submit 6+ months before the conference. Frame as a practitioner talk, not a product demo. "How we cut alert fatigue by 70% (and what didn't work)" beats "Introducing X."
|
|
125
|
+
3. **Sponsor a workshop or unconference slot:** Moderate cost. Gives you a captive audience for 45 minutes without a hard pitch.
|
|
126
|
+
4. **Conference sponsorship:** Expensive. Only viable if the conference matches your ICP exactly.
|
|
127
|
+
|
|
128
|
+
**Hallway conversation format:**
|
|
129
|
+
- Ask what they are currently working on (not their job title)
|
|
130
|
+
- Listen for the specific problem before mentioning your product
|
|
131
|
+
- Exchange contact with context: "I am working on something related to what you just described -- can I follow up?"
|
|
132
|
+
|
|
133
|
+
**Anti-patterns:**
|
|
134
|
+
- Setting up a booth and waiting for people to come to you
|
|
135
|
+
- Handing out branded swag with no conversation
|
|
136
|
+
- Pitching during the speaker's Q&A
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## YouTube
|
|
141
|
+
|
|
142
|
+
**Template structure:** Collaboration angle + format match + audience overlap.
|
|
143
|
+
|
|
144
|
+
**Entry approaches:**
|
|
145
|
+
1. **Guest appearance / collaboration:** Reach out to mid-size channels (10K-100K subscribers). Offer to demo your product in the context of a problem the channel covers.
|
|
146
|
+
2. **Comment contribution:** Leave specific, detailed technical comments on relevant videos. Builds name recognition if comment is genuinely useful.
|
|
147
|
+
3. **Response video:** Create a video that directly responds to or extends content from a popular channel in your space.
|
|
148
|
+
|
|
149
|
+
**Content formats:**
|
|
150
|
+
- Tutorials showing how to solve a specific problem (not "intro to our product")
|
|
151
|
+
- Behind-the-scenes engineering decisions ("why we chose X over Y")
|
|
152
|
+
- Live coding / live debugging sessions
|
|
153
|
+
|
|
154
|
+
**Anti-patterns:**
|
|
155
|
+
- Posting promotional comments with product links (removed by YouTube spam filters)
|
|
156
|
+
- Asking channels to "check out our product" in collaboration outreach
|
|
157
|
+
- Creating a channel with only product demos and expecting organic growth
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Hacker News
|
|
162
|
+
|
|
163
|
+
**Template structure:** Post type + framing + timing.
|
|
164
|
+
|
|
165
|
+
**Entry approaches:**
|
|
166
|
+
1. **Show HN:** "Show HN: [product name] -- [what it does in one clause]" Posts that include a working demo, clear problem statement, and invite criticism score highest.
|
|
167
|
+
2. **Ask HN:** "Ask HN: How do you handle [specific technical problem]?" -- Join the conversation, answer questions, mention your product only if directly relevant and asked.
|
|
168
|
+
3. **Comment on relevant stories:** Find stories about competitor products or your problem space. Leave detailed, opinionated technical comments.
|
|
169
|
+
|
|
170
|
+
**Timing:**
|
|
171
|
+
- Post Show HN between 7am-10am US Eastern on weekdays
|
|
172
|
+
- Avoid Friday afternoons and weekends
|
|
173
|
+
- Flag posts by 8am to catch morning traffic
|
|
174
|
+
|
|
175
|
+
**Anti-patterns:**
|
|
176
|
+
- "I am the founder of X -- check out our product" (downvoted as marketing)
|
|
177
|
+
- Posting without a working demo or detailed technical explanation
|
|
178
|
+
- Flagging/reporting competitor posts to reduce their visibility
|
|
179
|
+
- Posting the same content twice
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Channel Scoring Guide
|
|
2
|
+
|
|
3
|
+
## Formula
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
channel_score = (
|
|
7
|
+
icp_signal_count * 10 # ICP posts traced to this channel
|
|
8
|
+
+ min(math.log10(max(member_count, 1)) * 15, 50) # community size (log scale, max 50)
|
|
9
|
+
+ min(activity_score, 30) # posts/week proxy (max 30)
|
|
10
|
+
+ competitor_mention_count * 5 # competitor discussed here = ICP present
|
|
11
|
+
) - entry_difficulty_penalty # -20 paid, -10 invite-only, 0 open
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Component Breakdown
|
|
15
|
+
|
|
16
|
+
### icp_signal_count (weight: 10 per signal)
|
|
17
|
+
|
|
18
|
+
The number of Reddit/HN posts matching ICP queries that were found in this channel. This is the primary driver.
|
|
19
|
+
|
|
20
|
+
- 10 signals = +100 points (pushes a channel to top-priority on its own)
|
|
21
|
+
- 5 signals = +50 points
|
|
22
|
+
- 1 signal = +10 points
|
|
23
|
+
- 0 signals = 0 (channel found via DDG, not signal-trace)
|
|
24
|
+
|
|
25
|
+
**Why highest weight:** A developer clicking "post" in r/devops about the exact pain your product solves is the strongest possible channel signal. It means your ICP is not just a member -- they are actively discussing the problem there.
|
|
26
|
+
|
|
27
|
+
### member_count (log scale, max 50 points)
|
|
28
|
+
|
|
29
|
+
Log10 of member count * 15, capped at 50 to prevent massive channels from dominating.
|
|
30
|
+
|
|
31
|
+
| Members | Score contribution |
|
|
32
|
+
|---|---|
|
|
33
|
+
| 1,000 | 45 |
|
|
34
|
+
| 10,000 | 45 |
|
|
35
|
+
| 50,000 | 50 (capped) |
|
|
36
|
+
| 100,000 | 50 (capped) |
|
|
37
|
+
| 500,000 | 50 (capped) |
|
|
38
|
+
|
|
39
|
+
**Why log scale:** The difference between 1K and 10K members matters. The difference between 200K and 500K members does not -- both are "large enough." Log scale reflects this.
|
|
40
|
+
|
|
41
|
+
**Why capped:** A 5M-member general subreddit like r/programming would score 65+ on size alone even with 0 ICP signals. The cap prevents this.
|
|
42
|
+
|
|
43
|
+
### activity_score (max 30 points)
|
|
44
|
+
|
|
45
|
+
Reddit: `active_user_count / 100` (users currently online = proxy for posts/week frequency), capped at 30.
|
|
46
|
+
|
|
47
|
+
DuckDuckGo channels: defaults to 5 (DDG doesn't expose activity metrics).
|
|
48
|
+
|
|
49
|
+
HN: hardcoded to 20 (HN is always active for tech/startup ICPs).
|
|
50
|
+
|
|
51
|
+
| Active users | Activity score |
|
|
52
|
+
|---|---|
|
|
53
|
+
| 100 | 1 |
|
|
54
|
+
| 500 | 5 |
|
|
55
|
+
| 1,000 | 10 |
|
|
56
|
+
| 2,000 | 20 |
|
|
57
|
+
| 3,000+ | 30 (capped) |
|
|
58
|
+
|
|
59
|
+
### competitor_mention_count (weight: 5 per mention)
|
|
60
|
+
|
|
61
|
+
Number of ICP posts in this channel that also mention a competitor product.
|
|
62
|
+
|
|
63
|
+
**Why this matters:** A post that says "I'm trying to decide between Datadog and New Relic" in r/devops tells you three things: (1) the ICP is in this channel, (2) they are actively evaluating tools, (3) they are reachable at that exact moment of evaluation.
|
|
64
|
+
|
|
65
|
+
- 5 competitor mentions = +25 points
|
|
66
|
+
- 10 competitor mentions = +50 points
|
|
67
|
+
|
|
68
|
+
### entry_difficulty_penalty
|
|
69
|
+
|
|
70
|
+
| Entry type | Penalty | When to apply |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| Open | 0 | Free to join, no approval needed |
|
|
73
|
+
| Invite-only | -10 | Requires invite link or member approval |
|
|
74
|
+
| Paid | -20 | Requires paid membership or sponsorship to reach audience |
|
|
75
|
+
|
|
76
|
+
**Why penalty, not exclusion:** A paid conference with 500 exact-ICP attendees is still worth knowing about. The penalty reduces its score relative to free channels -- it doesn't hide it.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Tier Thresholds
|
|
81
|
+
|
|
82
|
+
| Tier | Score range | Interpretation |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| top-priority | >= 100 | Strong ICP signal + sufficient size + accessible. Start here. |
|
|
85
|
+
| high | 60-99 | Good signal or good size. Second tier for outreach. |
|
|
86
|
+
| medium | 30-59 | Moderate signal. Worth watching but not the first channel to invest in. |
|
|
87
|
+
| low | < 30 | Thin signal or small community. Useful for niche products, not general GTM. |
|
|
88
|
+
| excluded | < 5 | Filtered out entirely. DDG noise, irrelevant results. |
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Worked Examples
|
|
93
|
+
|
|
94
|
+
### r/devops with 34 ICP signals
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
icp_signal_count: 34 * 10 = 340
|
|
98
|
+
member_count: 234,000 -> min(log10(234000) * 15, 50) = 50
|
|
99
|
+
activity_score: 12,000 active_users / 100 = 120 -> capped at 30
|
|
100
|
+
competitor_mentions: 12 * 5 = 60
|
|
101
|
+
entry_penalty: 0 (open)
|
|
102
|
+
|
|
103
|
+
Total: 340 + 50 + 30 + 60 - 0 = 480 -> top-priority
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### DevOps Weekly Newsletter with 0 ICP signals
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
icp_signal_count: 0 * 10 = 0
|
|
110
|
+
member_count: 25,000 -> min(log10(25000) * 15, 50) = 44.7 -> ~45
|
|
111
|
+
activity_score: 5 (default for DDG channels)
|
|
112
|
+
competitor_mentions: 0 * 5 = 0
|
|
113
|
+
entry_penalty: -20 (paid sponsorship)
|
|
114
|
+
|
|
115
|
+
Total: 0 + 45 + 5 + 0 - 20 = 30 -> medium
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### r/startups with 2 ICP signals
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
icp_signal_count: 2 * 10 = 20
|
|
122
|
+
member_count: 800,000 -> capped at 50
|
|
123
|
+
activity_score: 8,000 / 100 = 80 -> capped at 30
|
|
124
|
+
competitor_mentions: 0 * 5 = 0
|
|
125
|
+
entry_penalty: 0
|
|
126
|
+
|
|
127
|
+
Total: 20 + 50 + 30 + 0 = 100 -> top-priority (barely)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
This edge case shows why icp_signal_count is primary: r/startups hits top-priority only because it's enormous + active. In practice, its generic ICP would show in the evidence posts (founders vs. your specific ICP). The AI should note this in who_is_here.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Score Interpretation for AI
|
|
135
|
+
|
|
136
|
+
When generating the playbook, use the score and tier as a prioritization signal -- not an absolute quality ranking:
|
|
137
|
+
|
|
138
|
+
- **top-priority:** Recommend the founder invest time here first. Build presence before pitching. Entry tactic should be specific and low-friction.
|
|
139
|
+
- **high:** Recommend as second-tier. Good for content distribution or monitoring. Entry tactic can be higher-effort (e.g., guest appearance, newsletter pitch).
|
|
140
|
+
- **medium:** Recommend for awareness only. Entry tactic should be lower-effort (e.g., occasional commenting, monitoring for competitor discussions).
|
|
141
|
+
- **low:** Report in output for completeness. No entry tactic needed unless it's a competitor forum (high intent despite low score).
|