
Customer Research
- 2 installs
- 9 repo stars
- Updated June 11, 2026
- timescale/marketing-skills
Synthesizes customer research from transcripts, sales calls, surveys, reviews, and win-loss notes into structured pains, triggers, outcomes, vocabulary, and objections.
About
Turns raw customer language and evidence such as interview transcripts, survey responses, support themes, and review-site feedback into structured voice-of-customer output like pains, triggers, desired outcomes, vocabulary, and themes. A product marketer uses it as the upstream research layer feeding writing and CRO skills.
- Accepts many input types; produces pains, triggers, outcomes, and quote banks
- Analyzes research outputs; does not run live interviews or market sizing
Customer Research by the numbers
- 2 all-time installs (skills.sh)
- Ranked #1,659 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/timescale/marketing-skills --skill customer-researchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 9 |
| Last updated | June 11, 2026 |
| Repository | timescale/marketing-skills ↗ |
What it does
Synthesizes customer research from transcripts, sales calls, surveys, reviews, and win-loss notes into structured pains, triggers, outcomes, vocabulary, and objections.
Files
Customer Research
Turn raw customer language and evidence into usable PMM signal. Accepts interview transcripts, sales call recordings, survey responses, support ticket themes, review-site feedback, community discussions, and win-loss notes — and produces structured output: pains, triggers, desired outcomes, vocabulary, objections, and themes. This is the upstream research layer that feeds brand-voice-writer, page-cro, content-reviewer, and competitive-intel-brief.
When to use this skill
- "Analyze this transcript" or "pull insights from this interview"
- "What are customers saying about [topic]?"
- "Voice of customer analysis" or "VOC synthesis"
- "Jobs-to-be-done research" or "JTBD analysis"
- "Mine these reviews" or "what are G2/Reddit users saying?"
- "Build a quote bank from these sources"
- "Persona research" or "segment these findings"
- "Why are customers churning?" or "what's driving conversions?"
- "Synthesize across these [N] transcripts/surveys/sources"
What this skill does NOT do
- Run live interviews or surveys (it analyzes the outputs)
- Broad market sizing or TAM analysis
- Live competitive news tracking (use competitive-intel-brief)
- Write copy from findings (hand off to brand-voice-writer)
Step 0: Pre-flight check
Read REFERENCES.md from the plugin root and run the pre-flight check described there. Call list_marketing_references() to verify Tiger Den is reachable. If it fails or the tool is not found, STOP — do not continue. Follow the error handling in REFERENCES.md.
Once Tiger Den is confirmed, fetch reference docs:
get_marketing_context(slugs: ["product-marketing-context", "research-synthesis-rubric"])
From product-marketing-context, extract:
- ICP profiles and persona definitions (used to align segments in Step 4)
- Current positioning and proof points (used to assess messaging implications in Step 5)
- Competitor list (used to flag competitive signals during extraction)
From research-synthesis-rubric, extract synthesis quality criteria and confidence labeling standards.
If `research-synthesis-rubric` is not found: Warn the user: "The research-synthesis-rubric doc isn't in Tiger Den yet — synthesis quality checks will be limited. Consider creating this doc for better-calibrated output." Continue with product-marketing-context alone. Use the local reference files for quality guidance.
Step 1: Accept and classify input
Determine the research mode based on what the user provides:
Mode A — Analyze: Single source (one transcript, one survey export, one set of reviews). Extract signal from the material as provided.
Mode B — Synthesize: Multiple sources (several transcripts, a transcript plus survey data, etc.). Extract signal from each, then cross-reference and merge into a unified synthesis.
Mode C — Mine: User provides review-site or community content (G2 reviews, Reddit threads, Stack Overflow discussions, Hacker News comments, community Slack exports). Default to analyzing only the content provided. If web_search is available, offer: "I can also search the web for additional reviews and community discussions about [topic]. Want me to expand the search?" Only search if the user opts in.
If the mode is ambiguous, ask. If the user provides a single source but mentions others exist, ask whether they want to add more sources before starting.
For each source, identify the type:
- Interview transcript (1:1 customer or prospect conversation)
- Sales call recording/transcript
- Survey responses (open-ended or structured)
- Support ticket themes or aggregated support data
- Win/loss interview notes
- Review-site feedback (G2, Capterra, TrustRadius, etc.)
- Community discussion (Reddit, HN, Stack Overflow, Discord, Slack)
- NPS or CSAT responses
- Churn interview or cancellation feedback
Source type affects quality weighting in Step 3.
Step 2: Extract signal
For each source, extract the following six signal categories. Preserve exact customer language — do not paraphrase quotes.
Pains: What problems, frustrations, or blockers does the customer describe? Capture the specific language they use, not a sanitized summary. Note emotional intensity (mild annoyance vs. acute frustration vs. deal-breaker).
Triggers: What events or moments prompted the customer to seek a solution? These are the "before" moments — what changed in their world that made the status quo unacceptable.
Desired outcomes: What does success look like to the customer? Capture functional outcomes ("queries return in under 100ms"), emotional outcomes ("I stop worrying about the database at 3am"), and social outcomes ("my team sees me as the one who fixed our data stack").
Language and vocabulary: Exact phrases the customer uses to describe their problem, their current tools, and what they want. These are high-value for copywriting and messaging. Flag phrases that appear across multiple sources.
Alternatives considered: What other solutions did the customer evaluate, try, or use before? Include "do nothing" and manual workarounds. Note what they liked and disliked about each alternative.
Objections: What concerns, hesitations, or pushback did the customer raise about Tiger Data (or the category in general)? Separate pre-purchase objections from post-purchase friction.
For each extracted item, tag:
- Source type (from Step 1 classification)
- Source identifier (e.g., "Transcript #3", "G2 review, March 2026")
- Direct quote where available (verbatim, in quotation marks)
Step 3: Cluster and weight
Read references/theme-clustering-guide.md from this skill's directory.
Group extracted signals into themes. A theme is a recurring pattern that appears across multiple data points — not a one-off mention.
For each theme: 1. Name it with a short, descriptive label (e.g., "Scaling anxiety at ingestion spike" not "Performance concerns") 2. Count frequency — how many independent sources mention this theme? 3. Rate intensity — how emotionally charged or urgent is this theme when it appears? (High / Medium / Low) 4. Assign confidence — based on evidence quality:
- High: 5+ independent sources, multiple source types, recent (last 6 months)
- Medium: 3-4 sources, or single source type, or mixed recency
- Low: 1-2 sources, single source type, or older than 12 months
Read references/source-quality-guidelines.md for source reliability hierarchy and bias adjustments.
Themes with high frequency but low intensity may indicate background friction. Themes with low frequency but high intensity may indicate deal-breakers for a specific segment. Both matter — do not discard low-frequency themes if intensity is high.
Step 4: Segment
If the source material contains signals from identifiably different audiences, split findings by segment. Use the ICP profiles from Step 0 to align segments to known Tiger Data personas where possible.
Segmentation dimensions to consider:
- Persona or role (developer, DBA, data engineer, engineering manager)
- Company stage or size (startup, growth, enterprise)
- Use case (IoT/telemetry, financial analytics, observability, general time-series)
- Lifecycle stage (evaluating, onboarding, scaling, considering churn)
If the data doesn't support meaningful segmentation (e.g., all sources are from the same persona), skip this step and note: "Source material is concentrated in [segment]. Broader segmentation requires additional research."
Do not invent segments that the data doesn't support.
Step 5: Synthesize and format output
Read references/research-output-templates.md from this skill's directory. Produce the deliverables using those templates.
Apply quality checks from references/source-quality-guidelines.md:
- Every insight must trace back to at least one source
- Quotes must be verbatim (flagged if paraphrased)
- Confidence labels must match the criteria from Step 3
- Channel biases must be acknowledged where relevant
If research-synthesis-rubric was loaded in Step 0, cross-check the synthesis against its quality criteria before presenting output.
Step 6: Identify gaps and recommend next steps
Review the synthesis for:
- Under-evidenced themes: Themes with medium or low confidence that would change messaging strategy if confirmed. Flag these as requiring more research.
- Missing perspectives: Personas or segments not represented in the source material. If ICP profiles from Step 0 identify key personas with no data, call this out.
- Stale signals: Themes based primarily on sources older than 12 months that may no longer reflect current customer sentiment.
- Contradictions: Themes where different sources give conflicting signals. Present both sides rather than resolving arbitrarily.
After presenting the synthesis, offer handoffs:
"Want me to take action on these findings? I can:
- Draft messaging or copy based on these themes (via brand-voice-writer)
- Recommend CRO improvements for pages targeting these personas (via page-cro)
- Check if competitor patterns dominate the findings (via competitive-intel-brief)
- Evaluate whether existing content addresses these themes (via content-reviewer)
- Search Tiger Den for existing content on these topics"
Output format
Structure the final output in this order. See references/research-output-templates.md for detailed templates.
Research summary
- Research mode (analyze / synthesize / mine)
- Sources analyzed (count and types)
- Date range of source material
- Key finding in one sentence
Top themes
| Theme | Frequency | Intensity | Confidence | Signal type | Representative quote |
|---|---|---|---|---|---|
| ... | ... | ... | ... | ... | ... |
List themes in descending order of (frequency x intensity). Cap at 10 themes — move additional themes to an appendix if needed.
Quote bank
| Quote | Source type | Segment | Theme tags | Usability |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
Usability categories: messaging, proof point, objection handling, case study lead, ad copy.
Persona and segment notes
Per segment (if segmentation was applied in Step 4):
- Defining characteristics
- Top pains and triggers specific to this segment
- Language patterns unique to this segment
- Recommended messaging angle
Messaging implications
| Theme | Messaging angle | Evidence strength | Current coverage |
|---|---|---|---|
| ... | ... | ... | ... |
Current coverage: check against positioning from product-marketing-context. Mark as "aligned" (existing messaging addresses this), "gap" (no current messaging), or "misaligned" (current messaging contradicts customer language).
Gaps requiring more research
Bulleted list of under-evidenced areas, missing perspectives, and recommended follow-up methods (more interviews, survey on specific topic, review mining for a segment, etc.).
Dependencies
- Required: Tiger Den MCP (for product-marketing-context and content search)
- Soft dependency: research-synthesis-rubric (Tiger Den doc — skill functions without it but with reduced quality checks)
- Optional:
web_searchandweb_fetch(for mine mode web expansion)
Research Output Templates
Standardized formats for customer research deliverables. Use these templates when producing output in Step 5.
Research summary
## Research Summary
**Mode:** [Analyze | Synthesize | Mine]
**Sources:** [count] sources ([list source types, e.g., "3 interview transcripts, 1 survey export, 12 G2 reviews"])
**Date range:** [earliest source date] – [latest source date]
**Key finding:** [One sentence summarizing the most important insight]
### Methodology
[2-3 sentences describing what was analyzed, any filtering applied, and how themes were identified. Acknowledge limitations: source types not represented, segments with thin coverage, recency gaps.]Top themes table
## Top Themes
| # | Theme | Freq | Intensity | Confidence | Signal type | Representative quote |
|---|-------|------|-----------|------------|-------------|---------------------|
| 1 | [Short label] | [N sources] | High/Med/Low | High/Med/Low | Pain/Trigger/Outcome/Objection | "[Verbatim quote]" — [source type] |Rules:
- Order by (frequency x intensity), descending
- Cap at 10 themes in the main table
- If more than 10 themes exist, add an "Additional themes" appendix with the same columns
- The "representative quote" should be the single most vivid or specific quote for that theme
- Signal type maps to the extraction categories from Step 2: Pain, Trigger, Desired outcome, Vocabulary, Alternative, Objection
Quote bank
## Quote Bank
| Quote | Source type | Segment | Theme tags | Usability |
|-------|------------|---------|------------|-----------|
| "[Exact quote]" | [Interview/Survey/Review/etc.] | [Persona or segment] | [Theme 1, Theme 2] | [Category] |Usability categories:
- Messaging — Language that can inform headlines, taglines, or value propositions
- Proof point — Specific results, metrics, or outcomes that serve as evidence
- Objection handling — Customer language around concerns that sales or copy can address directly
- Case study lead — Quote suggests a strong customer story worth pursuing
- Ad copy — Short, punchy language suitable for ads or social
Rules:
- All quotes must be verbatim — mark with [paraphrased] if exact wording is unavailable
- Include source type and segment for every quote
- Tag with 1-3 relevant themes
- Aim for 15-30 quotes in a standard synthesis; more for multi-source projects
- Prioritize quotes with specific details (numbers, tool names, timeframes) over generic sentiment
Persona and segment notes
## Segment: [Segment Name]
**Defining characteristics:** [Role, company stage, use case, or lifecycle stage that defines this segment]
**Top pains:**
1. [Pain] — [frequency/intensity note]
2. [Pain] — [frequency/intensity note]
**Key triggers:**
1. [Trigger event]
2. [Trigger event]
**Language patterns:** [Phrases, terms, or framing unique to this segment — e.g., "they say 'observability pipeline' not 'monitoring stack'"]
**Alternatives considered:** [What this segment evaluates or uses instead]
**Objections specific to this segment:** [Concerns unique to this role or context]
**Recommended messaging angle:** [1-2 sentences on how to speak to this segment based on the evidence]Repeat for each identified segment.
Messaging implications
## Messaging Implications
| Theme | Messaging angle | Evidence strength | Current coverage |
|-------|----------------|-------------------|-----------------|
| [Theme] | [How this could inform messaging — specific, not generic] | [High/Med/Low — based on confidence from Step 3] | [Aligned/Gap/Misaligned] |Current coverage definitions:
- Aligned — Existing positioning or messaging already addresses this theme effectively
- Gap — No current messaging targets this theme; opportunity to add
- Misaligned — Current messaging uses different language or framing than customers use; consider adjusting
Rules:
- Only include themes with medium or high evidence strength
- The messaging angle should be specific enough to act on (not "emphasize reliability" but "lead with uptime guarantees for teams that have been burned by outages during ingestion spikes")
- Cross-reference against positioning from product-marketing-context
Gaps requiring more research
## Research Gaps
- **[Gap area]:** [What's missing and why it matters]. Recommended follow-up: [specific method — e.g., "3-5 interviews with enterprise DBAs" or "mine StackOverflow for migration-related threads"]Rules:
- Only flag gaps that would change a decision if filled
- Be specific about the recommended follow-up method
- Note which themes or segments are affected by each gap
Source Quality Guidelines
Rules for evaluating source reliability, managing bias, and ensuring attribution integrity in customer research synthesis.
Source reliability hierarchy
Not all sources carry equal weight. When conflicting signals emerge, higher-reliability sources take precedence.
| Tier | Source type | Why |
|---|---|---|
| 1 | 1:1 customer interview | Deepest context, ability to probe, unfiltered |
| 2 | Win/loss interview | Direct decision context, specific competitive framing |
| 3 | Sales call transcript | Real-time buying conversation, but seller-influenced |
| 4 | Support tickets (aggregated) | High volume, specific problems, but skews negative |
| 5 | Survey responses (open-ended) | Broad sample, but shallow depth per response |
| 6 | NPS/CSAT verbatims | Broad sentiment signal, minimal context |
| 7 | Public reviews (G2, Capterra) | Unfiltered but self-selected; skews power users |
| 8 | Community posts (Reddit, HN, SO) | Authentic voice, but unknown relationship to product; may be secondhand |
How to apply: When a theme is supported by Tier 1-3 sources, it gets a confidence boost. When a theme is supported only by Tier 6-8 sources, note the limitation. Cross-tier corroboration (e.g., interview + reviews saying the same thing) is the strongest evidence.
Minimum evidence thresholds
| Confidence level | Minimum evidence |
|---|---|
| High | 5+ independent sources across 2+ source types, majority from last 6 months |
| Medium | 3-4 sources, or single source type with strong internal consistency |
| Low | 1-2 sources, single source type, or primarily older than 12 months |
"Independent" means separate individuals or organizations. Five quotes from the same interview are one source, not five.
Channel bias adjustments
Every source channel has systematic biases. Acknowledge these when they could affect conclusions.
| Source channel | Known bias | How to adjust |
|---|---|---|
| Review sites (G2, Capterra) | Over-represents power users and satisfied customers (incentivized reviews). Under-represents casual users and churned customers. | Note if findings lean positive; cross-reference with support data for balance |
| Support tickets | Over-represents problems and friction. Under-represents value and positive outcomes. | Do not use support data alone to characterize overall sentiment |
| Community (Reddit, HN) | Over-represents technical users and early adopters. Strong opinions amplified. Secondhand info common. | Verify claims against primary sources when possible; note technical audience skew |
| Sales calls | Buyer is performing for the seller. Objections may be negotiation tactics, not true concerns. | Weight stated objections lower unless corroborated by post-sale feedback |
| NPS/CSAT | Response bias — extremes respond more. Middle-ground users under-represented. | Treat as directional, not precise |
| Surveys | Question framing influences responses. Leading questions produce leading answers. | Note survey design quality if visible; flag leading questions |
| Interviews | Interviewer influence, recency bias, desire to be helpful. | Look for unprompted mentions as stronger signals than prompted responses |
Recency weighting
Customer sentiment, competitive landscape, and product capabilities change. More recent sources get more weight.
| Recency | Weight | Notes |
|---|---|---|
| Last 6 months | Full weight | Current and actionable |
| 6-12 months | Reduced weight | Still relevant but verify against current state |
| 12+ months | Context only | May reflect outdated product, pricing, or competitive dynamics |
Exception: Foundational pains (e.g., "scaling time-series data is hard") may persist across time windows. Use judgment — if the pain is structural rather than product-specific, older sources can still support the theme.
Always note the date range of source material in the research summary.
Attribution rules
1. Every insight must trace to at least one source. No orphan claims. 2. Quotes must be verbatim. Use quotation marks for exact language. If paraphrasing is necessary, mark with [paraphrased] and explain why (e.g., confidentiality, clarity). 3. Never fabricate quotes. If no suitable quote exists for a theme, describe the pattern without quoting. 4. Source identifiers must be consistent. Use a labeling scheme (e.g., "Interview #3", "G2 Review, Mar 2026", "Survey R-14") and maintain it across the entire output. 5. Confidential sources require anonymization. Strip company names, individual names, and identifying details from quotes unless the user explicitly confirms they can be included. Default to anonymized. 6. Distinguish observed from inferred. If a conclusion requires interpretation beyond what the source says, label it as an inference and explain the reasoning.
Theme Clustering Guide
How to group extracted signals into meaningful themes during Step 3 of customer research synthesis.
What counts as a theme
A theme is a recurring pattern that appears across multiple independent data points. It is NOT:
- A single quote (that's a data point)
- A category label applied top-down (themes emerge from the data)
- A product feature name (themes describe customer problems, not product capabilities)
Good theme names are specific and descriptive. They capture the customer's experience, not an internal label.
| Weak | Strong |
|---|---|
| "Performance" | "Query latency spikes during high-cardinality ingestion" |
| "Cost concerns" | "Unpredictable cloud bills when data volume surges" |
| "Ease of use" | "Steep learning curve for non-DBA developers setting up schemas" |
| "Migration" | "Fear of data loss or downtime during migration from InfluxDB" |
Clustering process
1. First pass: surface-level grouping
Read through all extracted signals (pains, triggers, outcomes, vocabulary, alternatives, objections) and group obviously related items together. Don't overthink it — just put things that sound similar in the same bucket.
2. Second pass: merge and split
Review each bucket:
- Merge if two buckets describe the same underlying issue from different angles (e.g., "slow queries" and "dashboard timeouts" may both stem from query performance under load)
- Split if a bucket contains signals that serve different personas or use cases (e.g., "cost concerns" from a startup founder vs. "cost concerns" from an enterprise procurement team are different themes)
3. Third pass: name and validate
Give each theme a specific, descriptive name. Then validate:
- Does this theme have 2+ independent data points? (If not, it's a signal, not a theme — keep it in the appendix but don't promote to the theme table)
- Can you explain what this theme means without referencing a specific source? (If not, it may be too narrow)
- Would a PMM or content writer know what to do with this theme name? (If not, make it more specific)
Frequency vs. intensity matrix
Themes vary along two dimensions. Both matter for prioritization.
High intensity
|
DEAL-BREAKERS | URGENT PAINS
(low freq, | (high freq,
high intensity) | high intensity)
|
───────────────────────┼───────────────────────
|
BACKGROUND NOISE | PERVASIVE FRICTION
(low freq, | (high freq,
low intensity) | low intensity)
|
Low intensity
Low frequency ──── High frequencyUrgent pains (high frequency + high intensity): Highest priority. These are widespread and acutely felt. Lead with these in messaging.
Deal-breakers (low frequency + high intensity): May affect a specific segment or scenario. Critical for that segment even if uncommon overall. Flag for targeted messaging or sales enablement.
Pervasive friction (high frequency + low intensity): Common annoyances that rarely block a deal but erode satisfaction. Relevant for retention, onboarding, and CRO work.
Background noise (low frequency + low intensity): Monitor but don't prioritize. May become more important if frequency increases.
Handling near-duplicates
Signals that use different words for the same concept should be merged under one theme. Preserve the vocabulary variants in the quote bank — they're valuable for copywriting even if the underlying theme is one.
Example: "It takes forever to set up" and "The onboarding docs are confusing" and "I spent two days just figuring out the schema" are all data points under a single "Steep initial setup curve" theme. Keep all three quotes.
Theme hierarchy
For complex analyses (10+ themes), organize into a two-level hierarchy:
Top-level theme: Broad category (e.g., "Performance under load")
- Sub-theme: Specific manifestation (e.g., "Query latency at high cardinality")
- Sub-theme: Specific manifestation (e.g., "Ingestion throughput drops during backfill")
Rules:
- Top-level themes appear in the main themes table
- Sub-themes appear in an expanded view or appendix
- A top-level theme inherits the highest confidence level among its sub-themes
- Frequency for top-level themes is the count of unique sources across all sub-themes (not the sum)
Confidence labeling
Assign confidence based on evidence quality, not gut feeling.
| Level | Criteria |
|---|---|
| High | 5+ independent sources, 2+ source types, majority recent (last 6 months). Cross-tier corroboration (e.g., interviews + reviews). |
| Medium | 3-4 sources, or strong signal from a single source type. May lack cross-tier validation. |
| Low | 1-2 sources, single source type, or evidence older than 12 months. Directional only. |
When in doubt, round down. It's better to label a theme as medium-confidence and be pleasantly surprised by more evidence than to label it high and build messaging on a weak foundation.
When to split vs. merge segments
During clustering, you may notice that a theme manifests differently across personas or use cases. The decision to split:
Split when:
- The pain is fundamentally different (a developer worrying about query syntax vs. a manager worrying about vendor lock-in)
- The trigger event differs (startup hitting scale limits vs. enterprise consolidating tools)
- The desired outcome diverges (speed for developers, cost control for finance)
Merge when:
- The core issue is the same but expressed with different vocabulary
- The audience overlap is high (a senior developer and a tech lead describing the same problem)
- Splitting would result in segments with fewer than 3 data points each