Open a Linear ticket when a Cap recording fails to transcribe

Every six hours, sweep new Cap recordings for transcription failures, file a Linear ticket for each new one, and send a single Slack heads-up to support.

Agentic Task
CapLinearSlack BotEngineeringOperationsNotifications & AlertsResearch & MonitoringFeedback Triage
PromptCreate

Build an agent workflow that runs on a cron schedule every six hours and watches for Cap recordings whose transcription failed, opens a Linear ticket for each new failure, and posts one batched heads-up to Slack at the end.

Step 1. Pull recent Cap recordings and find the failures. Call Cap List Videos to get every recording created in the last 24 hours. For each one, call Cap Get Video Status and look at transcriptionStatus. Keep only the recordings where transcriptionStatus is ERROR. Explicitly ignore SKIPPED and NO_AUDIO because those are expected and not real failures. Also ignore PROCESSING (still working) and COMPLETE (fine).

Step 2. Deduplicate against Linear. For each failed recording, call Linear Search Issues using the Cap video id as the search query. If a matching ticket already exists (open or recently closed), skip that recording. Only proceed to ticket creation when no existing ticket references the video id.

Step 3. File a Linear ticket per new failure. Use Linear Create Issue against a designated team (let the user pick the team during setup). Title format: "Cap transcription failed: <video id>". The description should be markdown and include: the recording name, the duration, the createdAt timestamp, the cap.so share URL, and a short suggested triage checklist with three items: re-check the audio source, retry the transcription, and escalate if the same uploader has multiple recent failures. Keep the description tight and skimmable.

Step 4. After all tickets are filed, send a single batched Slack heads-up via Slack Bot Send a Message to a designated support channel (let the user pick the channel during setup). The message should list every new ticket with its title and a clickable Linear link, plus a one-line summary like "3 Cap recordings failed transcription in the last 24h." If nothing failed, skip the Slack message entirely so the channel stays quiet on healthy days.

Judgement notes for the agent. Treat the dedup step as authoritative: never file a second ticket against a video id that already appears in Linear. If you see the same uploader has multiple failing recordings in this run, mention that in both the Linear description and the Slack summary so support knows to reach out proactively. If Cap returns no recordings in the window, finish silently with no Slack message.

Integrations to wire: Cap (List Videos, Get Video Status), Linear (Search Issues, Create Issue), and Slack Bot (Send a Message).

Additional information

What does this prompt do?
  • Checks every Cap recording from the last 24 hours and finds the ones whose transcription failed, ignoring recordings with no audio or that were intentionally skipped.
  • Searches Linear before filing anything so a recording that already has a ticket does not get a duplicate.
  • Opens a Linear ticket for each new failure with the recording name, length, share link, and a short triage checklist your engineers can work from.
  • Posts one batched Slack heads-up at the end with links to every new ticket so support can warn the affected customers.
  • Runs on its own every six hours, so failures never sit overnight without anyone noticing.
What do I need to use this?
  • A Cap workspace with developer access so the workflow can read your recordings and their processing status.
  • A Linear workspace and a team you want failure tickets filed into.
  • A Slack workspace and a channel where the support team should get the heads-up.
How can I customize it?
  • Change the cadence. Six hours is a sensible default, but you can run it hourly during launches or once a day for lower-volume teams.
  • Pick a different Linear team or add labels and a priority so the tickets land in the right triage queue.
  • Choose the Slack channel and tailor the heads-up message, or split it into two messages: one for engineering, one for customer support.

Frequently asked questions

Will this open a duplicate ticket if the workflow runs again before the failure is fixed?
No. Before filing a ticket the workflow searches Linear for the Cap recording id and skips anything that already has an open or recent ticket. Each failure gets one ticket.
What about recordings that have no audio or were intentionally skipped?
Those are filtered out. Cap marks them as expected non-transcribable cases, so the workflow only flags real processing errors and leaves the rest alone.
Can I send the heads-up to more than one Slack channel?
Yes. Tell the workflow which channels to post to and it will fan the same summary out to each one. You can also route engineering alerts and support alerts to different channels.
Does this work if my engineering team uses GitHub Issues or Jira instead of Linear?
This version is built for Linear, but the same pattern works against any ticketing tool we support. Start from this prompt and swap the ticket step for the tool your team uses.
How fast will I hear about a failure?
Within the next scheduled run. Cap does not expose webhooks for transcription status, so the workflow polls every six hours by default. Lower the interval if you need a faster signal.

Stop letting failed Cap transcriptions slip through the cracks.

Connect Cap, Linear, and Slack once, and Geni will quietly watch for transcription failures, file the tickets, and tell your support team who to follow up with.