LLM-backed customer interview analysis
Context
A critical customer interview was recorded using an AI-powered meeting platform. The conversation contained invaluable insights about our Ideal Customer Profile (ICP) and user motivations, but it was locked inside a video recording. The marketing team needed these insights in a format they could analyze and use, specifically focusing on a crucial segment from minute 52 onwards.
Note: While specific platform and customer details are anonymized, this case study demonstrates how technical creativity can unlock marketing value from everyday customer interactions.
What I Built
I developed a pipeline that could:
- Extract structured transcript data from the platform's network requests
- Transform complex nested JSON into readable dialogue
- Filter conversations by timestamp ranges
- Format the output for both human reading and LLM processing
- Generate marketing content while preserving customer privacy
Technical Breakdown
1. Network Request Analysis
The platform's UI showed a nicely formatted transcript, suggesting the data was already structured somewhere. Using Chrome DevTools' Network tab, I found a large JSON payload containing the entire conversation structure.
interface TranscriptCue {
id: number;
text: string;
speaker_name: string;
speaker_email: string;
is_host: boolean;
started_at: string;
start_time: number;
end_time: number;
}
The challenge was that the data structure was deeply nested and non-intuitive:
- Each cue had numbered properties
- Timestamps were in seconds with decimals
- Speaker information was scattered across different objects
2. Timestamp Processing
The marketing team wanted a specific segment (52:00 onwards). I built functions to handle timestamp conversion and filtering:
function formatTimestamp(seconds: number): string {
const minutes = Math.floor(seconds / 60);
const remainingSeconds = Math.floor(seconds % 60);
return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
}
function parseTimestamp(line: string): number {
const match = line.match(/\[(\d+):(\d+)\]/);
if (match) {
const minutes = parseInt(match[1]);
const seconds = parseInt(match[2]);
return minutes * 60 + seconds;
}
return 0;
}
3. Data Transformation Pipeline
The extraction process needed to:
- Read the raw JSON transcript
- Filter by timestamp range
- Format each dialogue entry
- Maintain chronological order
- Output in a readable format
const relevantDialogue: string[] = [];
transcriptCues.forEach((cue: any) => {
Object.values(cue).forEach((entry: any) => {
if (entry.start_time >= START_TIME && entry.end_time <= END_TIME) {
relevantDialogue.push(
`[${formatTimestamp(entry.start_time)}] ${entry.speaker_name}:\n${
entry.text
}\n`,
);
}
});
});
// Sort by start_time to ensure chronological order
relevantDialogue.sort((a, b) => {
const timeA = parseTimestamp(a);
const timeB = parseTimestamp(b);
return timeA - timeB;
});
4. Marketing-Ready Output
The final output needed to serve multiple purposes:
- Human-readable Q&A format for direct analysis
- Structured format for LLM processing
- Clean text that could be used in marketing materials
- Preserved context while maintaining privacy
Example of the extracted dialogue:
[52:24] Interviewer:
What is your motivation to want to learn how to use the platform? And I ask this because in my experience with dealing with our other customers, it's normally the users that have a background in engineering that really want to get into the platform and learn how to use it and enjoy using it.
[52:55] Customer:
Well, first, we don't have a lot of money in the company... I was a test coordinator... So I'm interested in it. I just, well, I'm, I like working in it.
What I Learned
-
Network Analysis for Data Discovery
- Browser DevTools are invaluable for understanding data flow
- Complex UIs often have structured data underneath
- Look for patterns in request/response cycles
-
Data Transformation Strategy
- Start with the end format and work backwards
- Build modular transformation functions
- Handle edge cases (timestamp formats, sorting, etc.)
- Maintain data fidelity while cleaning
-
Privacy-First Processing
- Remove sensitive information early in the pipeline
- Create reusable anonymization patterns
- Preserve context while protecting privacy
Business Impact
The automation delivered several key benefits:
-
Marketing Insights
- Identified key user motivations and pain points
- Captured authentic customer voice and terminology
- Discovered unexpected use cases and value propositions
-
ICP Development
- Refined ideal customer characteristics
- Validated existing personas
- Uncovered new customer segments
-
Content Creation
- Generated authentic marketing narratives
- Created customer success stories
- Developed more targeted messaging
What's Next?
-
Automation Expansion
- Process multiple interview transcripts in batch
- Add more output formats for different uses
- Create templates for common marketing outputs
-
Analysis Enhancement
- Add sentiment analysis
- Track topic frequencies
- Generate word clouds and key phrase extraction
-
Integration Opportunities
- Connect with CRM for customer insight tracking
- Integrate with content management systems
- Build a library of customer insights
Key Takeaways
Dang, this project showed me how sometimes technical skills can create value in unexpected places. What started as a simple transcript extraction turned into a tool for marketing insight generation. It showed methat sometimes the most valuable data is already in our possession - we just need creative ways to access and transform it. 🙌
The combination of network analysis, data transformation, and LLM processing created a repeatable process for turning customer conversations into actionable marketing insights. Ofcourse, while respecting privacy and maintaining data quality.
Note: This case study focuses on the technical implementation while respecting confidentiality around specific customer conversations and platform details.