Customer interview library with searchable quotes and themes

By General Input

Find what a customer said months ago in seconds, save the passage as a tagged quote, and export a theme with verbatim evidence to Notion.

Integrations

  • AssemblyAI
  • Google Drive
  • Notion

Type

App

Categories

  • Product
  • Marketing

I want a customer interview library that my product and research team can actually search months after the conversation happened, instead of scrolling recordings nobody rewatches. Build it as an app with four surfaces: an interview list, an interview reader, a themes board, and an intake queue for new recordings.

The home view is a searchable list of every interview in the library, showing the interview title, customer, date, participants and tags, with filters for date range, participant and tag. Above the list is a search box that runs AssemblyAI Word Search across the indexed transcripts and returns matching moments grouped by interview, each with its timestamp, the surrounding sentence for context, and a link that opens the interview reader at that point. Word Search runs against one transcript at a time, so cross interview search means fanning out across every indexed transcript id and merging the results into a single ranked list. Each researcher can save a search with a name, and saved searches are private to the person who created them.

Opening an interview shows a clean timestamped reader built from AssemblyAI Get Paragraphs, with AssemblyAI Get Transcript supplying the interview metadata, speaker labels and full text. Each paragraph displays its start timestamp and the speaker who said it. A researcher selects any passage and saves it as a quote with a theme tag and an optional note. A saved quote stores the verbatim text, the transcript id, the start and end timestamps and the speaker, so every quote can be traced back to the exact moment it came from. The reader also has an ask this interview box powered by AssemblyAI LLM Gateway Chat Completion, for questions like what pricing concerns came up, answered against that single transcript, with the answer pointing at the timestamps it drew from.

A separate themes board groups every saved quote by its theme tag. Each theme shows the number of quotes and, more usefully, the number of distinct interviews and customers that raised it, so the team can see how many different people said the same thing rather than how loudly one person said it. Opening a theme lists its quotes with the customer, interview date and timestamp, and quotes can be re-tagged or moved to a different theme from here.

An export button on a theme writes that theme and its verbatim quotes into a research doc, using Notion Create a Page for the document and Notion Append Block Children for the body. The page leads with the theme name, how many customers raised it and the date range covered, then renders each quote as a quoted block with the customer name, interview date and timestamp underneath it. The researcher picks the parent Notion page before exporting.

New recordings are picked up from a Google Drive folder. The intake view lists audio files in that folder with Google Drive List Files, fetches the bytes with Google Drive Download File Content, and queues each recording with AssemblyAI Submit Transcript with speaker labels enabled. The queue shows each recording as queued, processing, ready or failed, polling AssemblyAI Get Transcript until it resolves, and a failed transcription can be retried from the queue. When a recording is ready, the researcher fills in the interview title, customer name and participants, and it joins the library.

Everything the team creates persists in the app: the interview index (transcript id, title, customer, date, participants, source Drive file id and status), saved quotes, theme tags, and each researcher's own saved searches. The app must maintain its own index of transcript ids rather than relying on AssemblyAI List Transcripts at read time, because that endpoint only returns the last 90 days and this archive is meant to outlive that window. Use List Transcripts only as a backfill helper when first populating the library.

Related prompts

Explore more prompts
Screen chartered vessels for AIS gaps and sanctions red flagsCompare candidate store locations with drive time trade areasBrowse every competitor ad and build a Notion swipe fileAudience persona studio for brand and product marketersAd creative studio with a pre-approved variant libraryFilter every signed Ironclad contract and brief it on demandArtwork desk for the Notion posts still missing an imageWebinar promo desk: find Zoom sessions missing artworkShare of voice dashboard for your brand and competitorsInfluencer campaign roster board with AI creator briefs