Turn your top support questions into explainer videos

By General Input

See which questions your customers keep asking, then record a short avatar explainer for the ones actually worth answering on video.

Integrations

  • HeyGen
  • Zendesk
  • Google Sheets
  • Slack Bot

Type

App

Categories

  • Customer Support
  • Operations

Build me a studio app that my support lead opens every couple of weeks to decide which repeat customer questions deserve a short explainer video, and then makes those videos. It uses Zendesk for the ticket data, HeyGen to render the videos, Google Sheets as the video registry, and Slack Bot to tell the support team when a video is ready. Nothing runs on a schedule, everything happens when someone opens the app and presses a button.

The main view is a ranked board of recurring questions for a chosen time window. A window selector offers the last 14, 30, or 90 days, defaulting to 30. When the window is set, a handler pulls the tickets in that window from Zendesk using Search Tickets with a created-date query (paging through with List Tickets when I need the raw recent set), and also pulls the immediately preceding window of the same length so the board can show a trend. An embedded agent reads those tickets and clusters them into themes, naming each theme as the plain customer question behind it, for example "How do I change the card on file?" rather than a category label.

Each row on the board shows: the question, the ticket count in the window plus a bar showing that theme's share of total ticket volume, the trend versus the previous window (up or down with a percentage, or a New badge), a representative ticket (subject, requester, date, a one line snippet, and a link out to the ticket in Zendesk), a coverage badge that reads No video, Video ready, or Video out of date, and a Make explainer button. Sort by ticket count descending by default, and put a summary line at the top of the board: total tickets in the window, number of themes, and the percentage of ticket volume covered by an existing video that is not out of date. That coverage percentage is the number my support lead is really managing.

Persist themes with stable ids keyed to a normalized version of the question, so that ticket counts, exclusions, drafts, and attached videos survive a re-cluster and the board keeps its history across visits. When the agent produces a fresh cluster, match it back to an existing saved theme where the question is the same rather than creating a duplicate row. Cache the clustering result per window so opening the board does not re-run the agent every time, and give me an explicit Recluster button plus a visible "last analyzed" timestamp.

Clicking a theme opens a detail view showing every ticket in that cluster with subject, date, status and a link, the current script draft, the attached video if there is one, the registry entry, and the per theme controls: exclude this theme, mark the video stale, and re-record.

Pressing Make explainer starts a background agent in two stages. Stage one is the script: the agent reads the real tickets in that cluster and drafts a 45 to 90 second spoken answer script in plain language, covering what the customer is trying to do, the answer, the exact steps, and one caveat worth calling out. It writes the script back into the app as an editable draft attached to the theme, with the status Draft ready for review. Nothing renders at this point. The support lead reads and edits the script in the app, then presses Render.

Stage two is the render. The background agent calls HeyGen Generate Avatar Video with the approved script and the configured avatar and voice, then polls Retrieve Video Status / Details every 10 seconds until the video is completed or failed. Renders typically take 30 to 180 seconds, so show the theme row as Rendering with a live status and let the person keep using the board meanwhile; if the render fails, put the failure reason on the row with a Retry button. When it completes, call Retrieve Shareable Video URL and attach the video id, the share URL, the render date, and the exact script that was used to the theme row, flipping its coverage badge to Video ready.

On a successful render, append a row to a Google Sheets registry with Append Values, with columns for render date, question, ticket count in the window, window start and end, representative ticket URL, video id, share URL, and the script text. Read the registry back with Get Values to power a Video library tab in the app and to avoid appending a duplicate row for a video id that is already recorded. This registry is how other agents and teammates find the links to drop into macros and help center articles. Then post a note to the support channel with Slack Bot Send a Message containing the question, the ticket count that justified it, the share link, and a line telling the team to use it in saved replies and help center articles.

HeyGen share links expire after about seven days, so treat the video id as the permanent handle and refetch the share URL with Retrieve Shareable Video URL whenever the board or the video library renders a link, instead of trusting a stored URL.

Three nuances matter to me. First, let me exclude themes that should never get a video, for example password resets we deliberately handle in-product or one-off billing disputes; excluded themes drop into a collapsed Excluded section at the bottom, stay out of the ranked board and out of the coverage percentage, and can be restored. Second, mark an existing video as stale when its cluster spikes again after the video was made: store the theme's ticket count at the moment of render as a baseline, and flag the video as Video out of date when the current window's count exceeds that baseline by a configurable percentage, defaulting to 25 percent, with a manual Mark stale control as well. Re-recording a stale theme creates a new version and resets the baseline. Third, always show ticket volume per theme prominently, as a count and a share of total, so it is obvious which explainer is worth making next.

Give me a small settings view for the default time window, the HeyGen avatar and voice, the target script length, the registry spreadsheet id and tab name, the Slack channel, and the spike threshold that triggers staleness.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board