AI dramatically accelerates customer research — from designing better questions to analyzing 50 interview transcripts overnight. Here’s how to build an AI-assisted research workflow.
AI Research Stack
| Tool | Purpose |
|---|---|
| Claude | Interview guide design, transcript analysis, synthesis |
| Dovetail | Research repository with AI tagging |
| Otter.ai | Automatic interview transcription |
| Lyssna | Unmoderated usability testing |
| Typeform + Claude | Survey analysis |
Phase 1: Research Design
Interview Guide Generation
Prompt for Claude:
"I'm a product manager at a B2B SaaS company. We're building a project
management tool for marketing agencies (10-50 person shops). I need to
understand how they currently manage client projects and where they're
most frustrated.
Create a 45-minute interview guide with:
- 3 warm-up questions about their role and agency
- 8-10 core questions about current workflows and pain points
- Probing follow-ups for each core question
- A closing section to test a few assumptions we have
Assumptions to test:
1. Agencies struggle with client visibility into project status
2. Billing/time tracking is disconnected from project work
3. Creative approval workflows cause the most delays
Format: A clean guide I can print and use in interviews."
Survey Question Design
Prompt:
"I'm running a customer satisfaction survey for [product].
We have 500 customers. The survey must be under 10 questions
and take less than 5 minutes.
Goals:
- Measure NPS
- Understand top use cases
- Identify features customers are missing
- Gauge likelihood of renewal
Design the full survey. Use validated question frameworks
(NPS, CSAT) where appropriate. Include rating scales with
clear anchors. Order questions by cognitive load (easy first)."
Phase 2: Transcription and Processing
Auto-Transcription Setup
- Use Otter.ai, Fireflies, or Grain to auto-record and transcribe calls
- Export transcripts as text files after each session
- Clean with a simple script:
import re
def clean_transcript(raw_transcript: str) -> str:
"""Remove timestamps and clean up auto-transcription artifacts."""
lines = raw_transcript.split('\n')
cleaned = []
for line in lines:
# Remove timestamp patterns like [00:15:32]
line = re.sub(r'\[\d{2}:\d{2}:\d{2}\]', '', line)
# Remove speaker tags like "Speaker 1:" and clean
line = re.sub(r'^Speaker \d+:\s*', '', line)
line = line.strip()
if line and len(line) > 10: # Skip very short lines
cleaned.append(line)
return '\n'.join(cleaned)
# Process all transcripts in a folder
import os
from pathlib import Path
transcript_dir = Path("./interviews")
for file in transcript_dir.glob("*.txt"):
raw = file.read_text()
cleaned = clean_transcript(raw)
output_file = file.with_stem(f"{file.stem}_cleaned")
output_file.write_text(cleaned)
print(f"Processed: {file.name}")
Phase 3: Single Interview Analysis
Extracting Insights from One Interview
Prompt for Claude (paste transcript after):
"I'm going to share a customer interview transcript. Please analyze it and extract:
1. **Jobs to be Done:** The underlying tasks this customer is trying to accomplish
2. **Pain Points:** Specific frustrations mentioned (with direct quotes)
3. **Current Workarounds:** How they currently solve the problems
4. **Desires:** What they explicitly wish they had
5. **Assumptions Validated/Invalidated:** From this list: [your assumptions]
6. **Surprise Insights:** Anything unexpected or counterintuitive
7. **Follow-Up Questions:** What I should explore in the next interview
Be specific. Use direct quotes where possible. Note timestamps of key moments.
[PASTE TRANSCRIPT HERE]"
Phase 4: Cross-Interview Synthesis
Analyzing Multiple Transcripts
For 10+ interviews, use Claude’s long context:
Prompt:
"I've conducted 15 customer interviews. I'll share all transcripts.
Your task: synthesize findings across all interviews.
Deliver:
1. **Top 5 Jobs to be Done** (frequency and importance)
2. **Top 10 Pain Points** (sorted by mention frequency)
3. **Common Workarounds** (what they've built themselves)
4. **Verbatim Quote Bank** (best quotes organized by theme)
5. **Segment Differences** (if patterns differ by company size/role)
6. **Confidence Assessment** (what's well-validated vs. heard only once)
Format as a research report I can share with my team.
[PASTE ALL 15 TRANSCRIPTS]"
Thematic Coding at Scale
import anthropic
import json
from pathlib import Path
client = anthropic.Anthropic()
THEMES = [
"onboarding friction",
"collaboration features",
"pricing concerns",
"competitor comparisons",
"integration needs",
"performance issues",
"customer support",
"feature requests"
]
def code_transcript(transcript: str, themes: list[str]) -> dict:
response = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=2000,
messages=[{
"role": "user",
"content": f"""Analyze this interview transcript and identify which of these themes appear.
Themes: {', '.join(themes)}
For each theme that appears, provide:
- Theme name
- Relevant quotes (up to 3)
- Sentiment (positive/negative/neutral)
- Intensity (1-5, where 5 = very strong)
Return as JSON.
Transcript:
{transcript}"""
}]
)
return json.loads(response.content[0].text)
# Process all interviews
results = {}
for file in Path("./interviews").glob("*_cleaned.txt"):
transcript = file.read_text()
coding = code_transcript(transcript, THEMES)
results[file.stem] = coding
print(f"Coded: {file.name}")
# Save results
with open("coding_results.json", "w") as f:
json.dump(results, f, indent=2)
Phase 5: Persona Development
AI-Assisted Persona Creation
Prompt:
"Based on the following synthesized research findings, create 3 customer
personas for our [product] targeting [market].
Research findings:
[Paste your synthesis]
For each persona include:
- Name, role, company type
- Goals (professional and personal)
- Challenges they face
- Current tools they use
- How they evaluate solutions (decision criteria)
- A day in their life (narrative paragraph)
- Key quote that captures their worldview
- Behavior patterns relevant to our product
Format as persona cards I can share in a Notion doc."
Phase 6: Research Repository
Dovetail for Ongoing Research
- Import all transcripts to Dovetail
- Use Dovetail AI to auto-tag quotes by theme
- Build a “Highlights Reel” for stakeholder presentations
- Search quotes by theme when building features
Quick-Reference Template
Maintain a research summary template in Notion/Confluence:
## Customer Research Summary (Updated: [Date])
### Who We've Talked To
- [X] interviews, [Y] companies, roles: [list]
### What We Know (High Confidence)
1. [Finding with evidence count]
### What We Think (Lower Confidence)
1. [Hypothesis with 1-2 data points]
### Open Questions
1. [Question to answer in next research cycle]
### Quote Bank
#### Pain Points
> "Quote here" — [Role, Company Size]
#### Desired Outcomes
> "Quote here" — [Role, Company Size]
Avoiding AI Research Pitfalls
-
Don’t skip the source material. AI synthesis is a starting point — always read key quotes in context.
-
Note AI confidence vs. data confidence. Claude generates confident-sounding text from weak signals. Add your own confidence ratings.
-
Don’t over-code thin transcripts. 3 interviews aren’t statistically meaningful. Wait for 8-10 minimum before pattern-claiming.
-
Human interpretation for nuance. What people mean vs. what they say is still a human skill. AI finds the patterns; you interpret implications.
-
Validate insights with quantitative data. Research interviews generate hypotheses. Validate with survey data or product analytics.