Customer research on a pre-launch blog, no assets
Pre-launch blog. No customers, no G2 reviews, no churned subscribers to interview. Ran /customer-research anyway — the skill is shaped for two modes (synthesize existing assets, or mine digital watering holes), and neither applies cleanly when the product is a content site nobody’s read yet. The framework strained, the confidence-levels guardrail held, three personas came out — honestly labeled.
What I ran
Invoked via the Skill tool, slug customer-research. The skill comes from Corey Haines’s marketing-skills repo (MIT). About 280 lines of methodology loaded — Mode 1 (existing assets: transcripts, support tickets, NPS comments), Mode 2 (digital watering hole research on Reddit, G2, Capterra, forums), Jobs-to-Be-Done framework, persona template, and the guardrail that became the receipt of this run: confidence levels (High / Medium / Low) attached to every claim, with a stated minimum of 5–10 data points per segment before a persona is committed to.
Arg framing supplied explicitly: define ICP and personas for an editorial-bar skill wiki + cookbook site, pre-launch, no customer data, no analytics yet. Who specifically values a receipts-first wiki over content farms and own-brand skill repos?
What happened
Neither mode applied as written.
Mode 1 unavailable. Zero existing assets. Pre-launch means no transcripts, no tickets, no review history. Skipped wholesale.
Mode 2 limited. No G2 reviews exist for “skill review wikis” — the category itself doesn’t have a competitor set with public review pages. Adapted by treating “watering holes” loosely: the broader Claude Code community on Reddit and HN, not “people complaining about competitors.” Two WebSearches landed against Reddit r/ClaudeAI install discussions and HN threads with cost/failure-mode language. External requests stayed under the safety cap from a prior feedback note (no Playwright with the working browser profile, two text WebSearches only).
Heavy reliance on project memory. The just-completed competitor-profiling run — 5 profiles plus a summary file — carried most of the inferential weight. The project’s saturation thesis, brand-anonymous policy, and deferred-monetization framing supplied the strategic frame.
Produced four artifacts in a gitignored customer-research/ directory:
_summary.md— top-line ICP synthesis: 2 primary personas (Cross-functional Solo Operator, Power User), 1 secondary (Tech Lead Evaluator), 2 tertiaries flagged. 5 themes ranked by frequency × intensity. Standout: “skill discovery is broken — dead skills in a directory” appeared in 3+ independent sources at high intensity.personas.md— 3 detailed personas with profile, JTBD, triggers, pains, outcomes, objections, alternatives, key vocabulary, channels.voc-language.md— verbatim quote bank. High-frequency phrases (“wasted tokens”, “60,000 tokens before typing your first message”, “dead skills sitting in a directory”) plus phrases-to-avoid cross-referenced to the humanizer AI-pattern catalog.channels.md— distribution map. Top 5 channels (Reddit r/ClaudeAI, HN, Twitter/X, DEV.to, Anthropic Discord), per-persona breakdowns, where not to spend energy, cadence recommendations.
The standout strategic finding wasn’t in any of the artifacts directly: the secondary Tech Lead Evaluator persona — lowest-frequency, deepest-pocket — is where info-product monetization most plausibly works later. Has budget, doesn’t have time, would buy a defensible cross-vendor comparison for a team-adoption decision. Two primary personas drive the newsletter; the secondary drives the eventual paid asset. That’s a routing decision, and it surfaced from running the framework against the strategic memory, not from any single data point.
Where it drifted
Three places the framework strained.
1. The 5–10 data-points-per-segment minimum is not met. It can’t be — there’s nothing to count. Each persona is built from inference plus light community sampling. The skill’s confidence-levels guardrail forces this to be visible: every persona section ends with “Medium confidence — revisit after 90 days of traffic and first newsletter signups.” That’s the honest output. Forcing the framework to pretend High confidence would have produced something more usable on the surface and less useful in practice.
2. The persona template is shaped for B2B SaaS prospects. “Objections to buying” and “alternatives considered” both frame around purchase decisions. On a free content site, “objections” map to “trust barriers” (brand-anonymous → “who is this?”) and “alternatives” map to “content sources they’d otherwise read.” The skill doesn’t have language for this. The adaptation is manual. Output stays readable but the schema is slightly bent.
3. Mode 2’s “watering hole” framing assumes a clear competitor set. When the product category is “a skill review wiki for a 12-month-old developer tool,” there isn’t one. The two WebSearches landed on adjacent vocabulary (Claude Code cost complaints, skill discovery friction) rather than direct competitor complaints. That’s still useful — the “dead skills in a directory” theme came out of it — but it isn’t what the skill is built for.
What I’d change
Two concrete moves, neither inside the skill.
Treat the output as a checklist for what to gather later, not a synthesis today. The VOC language bank and the channels map are immediately usable. The personas are placeholders. Re-running this skill against real assets at the 90-day mark — once newsletter replies, GSC queries, and at least 5 traffic-driven email exchanges exist — is the move. The personas refresh then has data to consume; today’s run gives the categories to file it into.
Run /competitor-profiling first for pre-launch projects. The competitor profiles did ~70% of the inferential work this session. Without them the synthesis would have been thinner. Two-skill chain: profile the field, then run customer-research with the profiles in the args. The skills don’t formally know about each other, but the second one is meaningfully better with the first one’s output sitting in the context.