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

ToolPurpose
ClaudeInterview guide design, transcript analysis, synthesis
DovetailResearch repository with AI tagging
Otter.aiAutomatic interview transcription
LyssnaUnmoderated usability testing
Typeform + ClaudeSurvey 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

  1. Use Otter.ai, Fireflies, or Grain to auto-record and transcribe calls
  2. Export transcripts as text files after each session
  3. 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

  1. Import all transcripts to Dovetail
  2. Use Dovetail AI to auto-tag quotes by theme
  3. Build a “Highlights Reel” for stakeholder presentations
  4. 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

  1. Don’t skip the source material. AI synthesis is a starting point — always read key quotes in context.

  2. Note AI confidence vs. data confidence. Claude generates confident-sounding text from weak signals. Add your own confidence ratings.

  3. Don’t over-code thin transcripts. 3 interviews aren’t statistically meaningful. Wait for 8-10 minimum before pattern-claiming.

  4. Human interpretation for nuance. What people mean vs. what they say is still a human skill. AI finds the patterns; you interpret implications.

  5. Validate insights with quantitative data. Research interviews generate hypotheses. Validate with survey data or product analytics.