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:

  1. Extract structured transcript data from the platform's network requests
  2. Transform complex nested JSON into readable dialogue
  3. Filter conversations by timestamp ranges
  4. Format the output for both human reading and LLM processing
  5. 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:

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:

  1. Read the raw JSON transcript
  2. Filter by timestamp range
  3. Format each dialogue entry
  4. Maintain chronological order
  5. 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:

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

  1. 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
  2. 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
  3. 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:

  1. Marketing Insights

    • Identified key user motivations and pain points
    • Captured authentic customer voice and terminology
    • Discovered unexpected use cases and value propositions
  2. ICP Development

    • Refined ideal customer characteristics
    • Validated existing personas
    • Uncovered new customer segments
  3. Content Creation

    • Generated authentic marketing narratives
    • Created customer success stories
    • Developed more targeted messaging

What's Next?

  1. Automation Expansion

    • Process multiple interview transcripts in batch
    • Add more output formats for different uses
    • Create templates for common marketing outputs
  2. Analysis Enhancement

    • Add sentiment analysis
    • Track topic frequencies
    • Generate word clouds and key phrase extraction
  3. 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.