Turn Grain highlights into Linear product backlog items in real time

When you highlight a customer moment on a Grain call, an agent classifies it and files a clean Linear backlog item with the verbatim quote and customer name attached.

Agentic Task
GrainLinearProductCustomer SupportFeedback TriageNotifications & AlertsMeeting Workflows

Build me an agent workflow that turns Grain highlights into Linear product backlog items in real time.

Trigger: a Grain webhook on the highlight.added event. During setup, register the webhook against my Grain account using the Create Webhook operation so new highlights from any of my recordings reach the agent immediately. The webhook payload will carry the highlight id, the parent recording id, the highlight timestamp, and the highlight text.

What the agent should do on each fire:

1. Use Grain Get Recording on the parent recording with the transcript and participants included so it has the verbatim transcript and the meeting participant list. Pull the 30 to 60 seconds of transcript surrounding the highlight timestamp as the snippet for analysis.

2. Classify the snippet into one of four categories based on the language used: feature request, bug, friction, or praise. Feature request is asking for something that does not exist. Bug is something broken or wrong. Friction is something that works but is slow, confusing, or painful. Praise is the customer saying something they love.

3. Low signal filter: if the snippet reads as off topic chitchat, an internal aside between teammates, a logistics moment like scheduling or screen sharing, or has no clear product signal, stop and do not create an issue. Do not spam the backlog.

4. Identify the customer or company name from the Grain participants. Treat any participant whose email domain does not match my company domain as the customer. If multiple external participants are present, use the company name implied by their shared domain, or fall back to the first external participant's full name.

5. Use Linear Create Issue to file the backlog item in my product team's intake project. The title should be a short, plain-English summary of the ask in 8 to 12 words written from my team's perspective, not the customer's. The description should include: the verbatim customer quote pulled from the transcript snippet in a blockquote, the customer or company name, the meeting title and date, a link back to the Grain highlight at the exact timestamp, and the classification. Attach a Linear label that matches the classification (feature-request, bug, friction, or praise).

During setup, ask me which Linear team and project should receive these issues, and confirm the four label names exist on that team (creating them if I want). Also confirm my company email domain so external participant detection works.

Keep this focused on one highlight per run. Do not batch or summarize across recordings, and do not create executions for highlights you skip.

Additional information

What does this prompt do?
  • Watches your Grain recordings for new highlights and fires the moment you clip a customer quote.
  • Pulls the transcript around the highlight so the agent has real context, not just a label.
  • Classifies the moment as a feature request, bug, friction, or praise and tags the Linear issue accordingly.
  • Files a backlog item in your product intake project with the verbatim quote, the customer name, and a link back to the Grain moment.
  • Quietly skips highlights that are off topic chitchat or internal asides so your backlog stays clean.
What do I need to use this?
  • A Grain account on a plan that supports highlights and the public API.
  • A Linear workspace where you can pick the team and intake project for new backlog items.
  • Labels in Linear for feature request, bug, friction, and praise so the agent can tag each issue.
How can I customize it?
  • Point it at a different Linear team or intake project.
  • Change the label names or categories used to classify each highlight.
  • Tighten or loosen the low signal filter, for example always file praise as a separate Wins issue, or only file when an external participant is on the call.

Frequently asked questions

Does this work on every Grain plan?
You need a Grain plan that lets you create highlights and use the public API. Highlights you make in the Grain web app or mobile app are what kicks this off.
What if my team uses one big backlog instead of an intake project?
That is fine. When you set this up you choose the Linear team and project where issues should land, so it can be a dedicated intake or your main product backlog.
How does it decide what to skip?
The agent reads the transcript around your highlight. If the snippet looks like off topic chitchat, an internal aside, or has no clear customer signal, it skips the highlight instead of filing a noisy issue. You can adjust how strict that filter is.
Will the Linear issue include the customer name?
Yes. The agent reads the meeting participants from Grain and includes the customer or company name in the issue, along with the verbatim quote and a link back to the exact moment in the recording.
What if I highlight the same topic in multiple calls?
By default each highlight files its own issue so you have one record per moment. You can ask the agent to instead search Linear for an existing issue on the same theme and comment on it with the new quote.

Stop losing customer quotes between Grain and your backlog.

Connect Grain and Linear once, then highlight a moment on any call and Geni files the backlog item for you.