Turn Otter.ai meetings into Linear issues for engineering teams

When your Otter meeting wraps, an agent files the action items you committed to as clean Linear issues, owners attached, duplicates skipped.

Agentic Task
Otter.aiLinearEngineeringOperationsMeeting WorkflowsNotifications & Alerts
PromptCreate

Build me an agent workflow that turns my engineering team's Otter.ai meetings into Linear issues so nothing falls through the cracks.

Trigger: an Otter.ai workspace webhook on the conversation.completed event. The webhook payload includes the conversation id, title, summary, and transcript. Walk me through pointing Otter at the webhook URL during setup.

When a meeting fires the webhook, the agent should:

1. Read the transcript and summary from the webhook payload and extract a deduped list of action items. Be strict: keep only concrete tasks with a verb plus an object (for example, 'rewrite the deploy script' or 'file a ticket for the flaky auth test'). Drop vague aspirations like 'we should think about reliability' or 'maybe consider improving X'. Engineers hate noisy auto-created tickets, so when in doubt, drop the item.

2. For each remaining action item, infer the owner from the transcript. The owner is whoever explicitly agreed to do it (look for 'I'll', 'I can take that', 'let me', 'I'll own it', etc.). If the transcript only assigns it ambiguously, treat it as unowned.

3. Before creating any issues, call Linear's List Issues on the configured team filtered to recent issues (last 30 days, or the last 50 issues, whichever is larger). Compare each candidate action item against those existing issue titles and descriptions and skip anything that is clearly already filed. This dedupe step is required.

4. Resolve owners to Linear assignees. Call Linear's List Users once at the start of the run and match the inferred owner name against user displayName, name, and email-local-part. First-name match is fine when unambiguous; if two users share a first name, fall back to unassigned rather than guessing.

5. For each surviving action item, call Linear's Create Issue on the configured team with: title = a short verb phrase capturing the action (under 80 chars, no trailing punctuation); description = the relevant transcript snippet (2-5 lines of context) followed by a link back to the Otter conversation; assignee = the matched Linear user id, or unassigned; labels = a single label called meeting-action (create it on the team if it does not exist yet).

6. If an issue was created unassigned, follow up with Linear's Add Comment to Issue and post a short comment pinging the meeting host (configurable) asking them to triage and assign.

Configuration the workflow should expose to me at setup time: the Linear team to file issues on, the Linear user who acts as the triage host for unassigned items, and an optional meeting-title filter (regex or substring) so I can scope this to standups, planning, and retros instead of every call.

Output the agent should return per run: the count of action items extracted, the count skipped as duplicates, the list of issues created with their Linear urls, and any items dropped for being too vague (so I can sanity-check the filter is not too aggressive).

Additional information

What does this prompt do?
  • Listens for the moment an Otter.ai meeting finishes processing and reads the transcript and summary.
  • Pulls out only concrete action items (verb plus object), drops vague aspirations, and figures out who agreed to each one.
  • Checks recent Linear issues on your team so it does not re-create something someone already filed.
  • Opens a Linear issue per action item with the right title, a transcript snippet, a link back to the Otter conversation, the assignee, and a meeting-action label.
What do I need to use this?
  • An Otter.ai Enterprise workspace where you can configure workspace webhooks.
  • A Linear workspace where the agent can create issues on the team you pick.
  • A name list of your Linear teammates that roughly matches how people are referred to on the call (first name is usually fine).
How can I customize it?
  • Pick which Linear team the issues land on, and what label to apply (default is meeting-action).
  • Tune the filter so only certain meeting types fire it, for example standups or planning, by matching on the meeting title.
  • Decide what happens when no clear owner is found: leave unassigned with a comment pinging the meeting host, or default to a specific triager.

Frequently asked questions

Will this spam my Linear team with low-quality tickets?
No. The agent is told to keep only concrete action items (a real verb plus object) and to drop vague statements like we should think about X. It also checks the most recent issues on your team and skips anything that already exists.
How does it know who to assign each issue to?
It reads the transcript to see who agreed to take the item, then matches that name against your Linear teammates. If there is no clear owner, it creates the issue unassigned and leaves a comment asking the meeting host to triage.
Do I need to be on an Otter Enterprise plan?
Yes. Otter.ai's public API and workspace webhooks are only available on Enterprise. You will need a workspace admin to enable API access and generate a token.
Can I link the Linear issue back to the original recording?
Yes. Each issue description includes the relevant transcript snippet and a link to the Otter conversation so anyone can hear the original context in one click.
What if I want a Slack recap too?
Once the prompt is in your workspace, you can ask the agent to also post a summary in a Slack channel after the issues are filed. That is a common second step teams add.

Stop chasing meeting commitments after every standup.

Connect Otter.ai and Linear once, and every meeting turns itself into a clean set of issues your team can sweep into the next standup.