Generate Video Transcript Analysis
Run AI Analysis on Transcripts with an LLM
Introduction
This tutorial shows how to use UserTesting session transcripts as input to Large Language Models (LLMs) in order to generate summaries, extract themes, and analyze sentiment at scale.
UserTesting transcripts capture rich, in-the-moment user feedback. When combined with LLMs, they enable fast synthesis of qualitative insights that would otherwise require hours of manual review.
What you’ll build
An AI-ready pipeline that:
- Retrieves session transcripts in WebVTT format
- Converts transcripts into clean plain text
- Chunks long transcripts safely
- Sends transcript text to an LLM for:
- Summarization
- Theme clustering
- Sentiment extraction
Target audience
- ML engineers
- Data scientists
- Advanced UX researchers
- AI platform and notebook users
This tutorial is especially relevant for teams using:
- Databricks
- Vertex AI
- Azure ML
- Jupyter or notebook-based LLM workflows
Prerequisites
- A valid access token (
ACCESS_TOKEN). Go to Authorization for details. - A known session ID, referred to as
SESSION_IDorsessionId. Use the GET /api/v2/sessionResults endpoint to find all completed sessions within a test. - Access to an LLM (OpenAI, internal LLM, or cloud provider)
- A notebook or scripting environment (Python recommended)
Steps
Step 1 — Retrieve a session transcript (WebVTT)
Endpoint
GET /api/v2/sessionResults/SESSION_ID/transcriptWhat this returns
- WebVTT text
- Includes timestamps and cue blocks
- Optimized for video playback, not direct NLP use
Example (curl)
curl --location 'https://api.use2.usertesting.com/api/v2/sessionResults/SESSION_ID/transcript' \
--header 'Authorization: Bearer ACCESS_TOKEN'Sample response
WEBVTT
00:00:00.000 --> 00:00:02.000
I’m not sure where to click next.
00:00:02.000 --> 00:00:06.000
This feels confusing compared to the old design.
Step 2 — Convert WebVTT to plain text
WebVTT includes metadata that must be removed before sending text to an LLM.
What to remove
- WEBVTT header
- Timestamps
- Blank cue separators
- Notes or comments
Resulting plain text
I’m not sure where to click next.
This feels confusing compared to the old design.
Simple parsing approach (conceptual)
FOR each line:
IF line contains "-->" → skip
IF line starts with "WEBVTT" → skip
IF line is empty → skip
ELSE → keep line
Step 3 — Chunk transcripts for LLMs
Transcripts can be long and may exceed model token limits.
Recommended chunking strategies
- Chunk by time (e.g., every 30–60 seconds)
- Chunk by sentence count
- Chunk by character or token length
Best practices
- Preserve sentence boundaries
- Maintain chunk order
- Keep chunk metadata (sessionId, chunk index)
Example chunk structure
{
"sessionId": "UUID",
"chunkIndex": 3,
"text": "This part of the flow feels broken..."
}Step 4 — Send transcripts to an LLM
Once chunked, transcripts can be sent to an LLM for different tasks.
A. Transcript summarization
Goal Produce a concise summary of user feedback
Prompt example
Summarize the following user testing transcript.
Focus on usability issues and emotional reactions.
B. Theme clustering
Goal Identify recurring patterns across many sessions
Approach
- Run LLM embeddings on transcript chunks
- Cluster by semantic similarity
- Label clusters using LLM-generated titles
Example themes
- Navigation confusion
- Trust concerns
- Feature discoverability
- Performance complaints
C. Sentiment extraction
Goal Detect emotional signals and severity
Prompt example
Analyze the sentiment of this transcript.
Return:
- Overall sentiment (positive, neutral, negative)
- Key emotional drivers
Common outputs
- Sentiment score
- Highlighted negative moments
- Emotion labels (frustration, delight, confusion)
Step 5 — Store AI outputs for downstream use
Recommended tables or collections:
- session_id
- chunk_index
- text
- session_id
- summary_text
- model_version
- created_at
- theme_label
- session_id
- confidence_score
- session_id
- sentiment
- intensity
Storing outputs enables reuse across dashboards, alerts, and reports.
Step 6 — Scaling considerations
Performance
- Parallelize transcript processing carefully
- Respect API rate limits on transcript retrieval
Cost control
- Summarize per session before cross-session analysis
- Cache transcript text and LLM outputs
Data governance
- Treat transcripts as sensitive qualitative data
- Apply access controls consistently
Common pitfalls
| Pitfall | Recommendation |
|---|---|
| Sending raw WebVTT to LLMs | Always strip timestamps |
| Overlong prompts | Chunk transcripts |
| Losing context | Preserve ordering metadata |
| One-off analysis | Persist results for reuse |
What you can build next
With AI-analyzed transcripts, teams can:
- Generate executive summaries automatically
- Detect UX regressions early
- Power AI research assistants
- Combine qualitative themes with QXscore dashboards
Summary
You now have an end-to-end pattern to:
- Retrieve rich qualitative transcripts
- Convert them into AI-friendly text
- Analyze them using LLMs at scale
This approach unlocks fast synthesis, deeper insight, and automated storytelling from UserTesting research data—without manual review.
Updated 22 days ago
