Turn Granola interviews into a themed customer research repository

Tag quotes from every interview against your own themes, see which ones show up across three or more customers, and file the real patterns to Linear.

App
GranolaLinearGeneral Input DatabaseProductFeedback TriageResearch & Monitoring
PromptCreate

Build me a customer research repository app that I work out of whenever I synthesize customer interviews. My interview notes live in Granola. Granola is read only, so the app reads notes from Granola but stores every theme, tag, quote, and synthesis in the app's own database. The app is the system of record for my research rather than a copy of something else. Position this as the browsing and synthesis surface, the place I sit and do the thinking, not another filing pipeline.

Interviews view. This is the browse surface and the default landing view. List my Granola interview notes using the Granola List Notes operation, filtered by a date range I control at the top of the screen, defaulting to the last 90 days. Show each note as a row with its title, date, and attendees, plus a badge showing how many excerpts I have already tagged from it so I can see at a glance which interviews I have mined and which are untouched. Granola pagination is cursor based with a maximum page_size of 30, so page through with the returned cursor while hasMore is true. Note IDs look like not_1d3tmYTlCICgjy and folder IDs look like fol_ followed by 14 characters. They are not UUIDs, so store them as plain strings.

Interview detail. Clicking a row opens the note using the Granola Get Note operation. Show the AI summary and the full transcript side by side. Get Note returns the summary as both summary_text and summary_markdown, so render summary_markdown. Transcripts are excluded by default, so pass include=transcript to fetch the transcript.

Tagging excerpts. From either the summary or the transcript I can select a passage and tag it against a theme. I create, rename, and delete themes myself inside the app, each with a name and a short description. When I tag an excerpt, store the quote text, the theme, the Granola note ID, the meeting title, and the meeting date in the app's own database. Nothing about tagging writes back to Granola.

Themes view. Show every theme with the number of distinct interviews that mention it, not the number of quotes, so five quotes from one loud customer still counts as a single interview. Under each theme, list the supporting quotes, and make every quote link back to its source meeting in the app so I can jump straight to the interview it came from. Visually highlight any theme that has reached three or more separate interviews, since that is the point where a pattern is real rather than one customer talking loudly. Let me sort the view by interview count so the strongest patterns sit at the top.

Auto-tag new interviews button. This starts a background agent that reads recent notes using List Notes and pulls each transcript with Get Note and include=transcript. The agent proposes theme tags against my existing theme list only. It must not invent new themes. Every proposal it makes, including the quote it selected and the theme it matched, lands in a pending state that I review in a queue where I confirm or reject each one individually. Nothing the agent proposes counts toward a theme's interview count until I confirm it, because I do not want the app silently mislabeling my research. Show me which interviews were already scanned so repeat runs do not re-propose the same excerpts.

Synthesize button on a theme. This starts a background agent that works across every interview tagged with that theme, reading the summaries and transcripts through Get Note, and writes an evidence backed summary into the theme page. The synthesis should cover what customers are actually saying, the representative quotes with the meeting each came from, the number of distinct customers affected, and any places where customers disagree with each other. Store the synthesis and the date it was generated on the theme so the page shows the written summary alongside the raw quotes, and so I can tell when a synthesis has gone stale because new interviews were tagged after it ran.

File to Linear button on a synthesized theme. Using the Linear Create Issue operation, open a product issue where the title is the theme and the description carries the synthesis, the supporting quote evidence with the meeting each quote came from, and the number of customers affected. Let me pick the Linear team before it files. After it files, store the resulting issue URL on the theme and show the theme as already filed with a link to the issue, so the same theme does not get filed twice by accident.

What does this prompt do?

  • Browse every customer interview from Granola in one place, filtered by date, with the AI summary and the full transcript side by side.
  • Highlight any passage and tag it to a theme you created. Your themes, quotes, and synthesis live inside the app, so the repository becomes the real record instead of a copy of your notes.
  • See each theme with the number of separate customers who raised it and every supporting quote linking back to the meeting it came from. Themes that reach three or more interviews get flagged as real patterns.
  • Kick off an assistant to propose tags on recent interviews for you to confirm, write an evidence backed summary of any theme, then open a Linear issue carrying the quotes and the customer count.

What do I need to use this?

  • A Granola account on a Business or Enterprise plan, which is what allows you to create a personal API key from the desktop app
  • A Linear workspace where you can create issues, and a team for product work to file them into
  • A handful of customer interviews already recorded in Granola to tag against

How can I customize it?

  • Change the pattern threshold from three interviews to whatever number your team treats as a real signal
  • Set the date range the browse view opens with, such as the last 90 days or the current quarter
  • Choose which Linear team issues land in and reword the issue template to match how your product team writes tickets

FAQs

Does this change anything in my Granola notes?
No. The app only reads your notes. Every theme, tag, quote, and synthesis is stored inside the app itself, so your Granola notes stay exactly as you left them.
Why three interviews?
It is the common bar in customer research for separating a real pattern from one loud customer. The app counts distinct interviews rather than quotes, so five quotes from the same conversation still counts as one customer.
Will it tag my interviews automatically without me seeing it?
No. The auto-tag assistant only proposes tags against themes you already created, and every proposal lands in a pending list where you confirm or reject it one at a time.
Do I need a paid Granola plan?
Yes. Personal API keys are only available on Granola Business and Enterprise plans, and on Enterprise your workspace admin has to allow personal keys first.
Can my team work in the same repository?
Yes. Everyone who opens the app sees the same themes, tags, and syntheses, so research stops living in one person's private notes.

Related templates

Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App
Close the loop between Front tickets and Linear bug fixes

See every customer waiting on a bug fix, file the ticket without creating a duplicate, and tell them the moment engineering ships it.

Front
Linear
App
Run client social reviews from one Hootsuite dashboard

Pick a client and a date range to see organic trends, paid campaigns and every post ranked best to worst, then generate the client report.

Hootsuite
Google Docs
General Input Database
App
Open a Heroku release war room the moment production looks wrong

See every recent deploy across all your Heroku apps in one timeline, then roll back, restart, or file an incident without leaving the screen.

Heroku
GitHub
Linear
App
Find the themes Help Scout tags miss and file them in Linear

Pick a date range, see which support topics are climbing fastest, read the real customer threads behind them, and file the worst ones as tickets.

Help Scout
Linear
App

Stop letting customer interviews die one note at a time.

Build the repository where every interview compounds into evidence you can actually point at.