Voiceover request and approval desk for your content team

By General Input

Your team requests narration, picks a voice, and generates takes in one place, so a reviewer can approve the final audio without a single email thread.

Integrations

  • Cartesia
  • Google Docs
  • Google Drive
  • Slack

Type

App

Categories

  • Marketing
  • Operations

Build me an internal voiceover production desk where my content and enablement team requests narration and a reviewer approves it, instead of passing scripts and mp3 files around over email. Nothing here runs on a schedule. People open this app and work out of it.

The main surface is a queue board grouped by status, with four columns: Requested, Take ready, Needs retake, and Approved. Each card shows the request title, who asked for it, the voice used on the most recent take, and how many takes exist so far. Moving a request across those columns is the entire job of the app, so the board should be the landing view.

Creating a request asks for a title, a due date, and the script. The requester either pastes the script text directly or points at a Google Doc. If they point at a doc, the handler pulls it with the Google Docs Get Document operation and flattens the document body into plain narration text. Either way, store the resulting script on the request record. That stored script is what makes a retake cheap, because nobody should ever have to retype or re-paste a script to generate another take.

Opening a request shows the detail view: the full script, a voice picker, an inline audio player for every take that has been generated, and a reviewer notes field. List takes newest first, and label each one with the voice name, the timestamp, and who generated it, so the take history reads like a record of the review rather than a pile of files.

Populate the voice picker from the Cartesia List Voices operation so the team picks from the voices actually available in our account, including any custom or cloned ones. Pressing Generate calls the Cartesia Text to Speech (Bytes) operation with the stored script and the selected voice, saves the returned mp3 as a new take against the request, and moves the request to Take ready.

Keep every take instead of overwriting. Each Generate appends a new take and never replaces an earlier one. This is the core of the app: a reviewer needs to play two different voices side by side and approve whichever read is better, which is impossible if a regenerate destroys the previous audio.

A reviewer has two actions on a request. They can send it back by leaving a note and marking it Needs retake, which keeps the stored script intact so someone can pick a different voice and generate again without retyping anything. Or they can approve one specific take, since approval applies to a chosen take and not to the request in general.

On approval, upload that take's mp3 to our shared project folder using the Google Drive Upload File (Multipart) operation. Multipart is capped at 5MB, so if the take is larger than that, fall back to the Google Drive Upload File (Resumable) operation instead. Then create a shareable link for the uploaded file with the Google Drive Create Permission operation, and post that link to our content channel using the Slack Send a Message operation. The Slack message should carry the request title, the voice name, and who approved it, not just a bare URL. Save the Drive link and the posted message back onto the request so the Approved column shows what already shipped.

Scope the board by role. A requester sees their own requests only. A reviewer sees the whole approval queue across everyone, and only a reviewer can approve a take or send one back for a retake. Anyone who can see a request can play its takes, since listening is how people discuss the work.

Persist requests, their stored scripts, every take with its voice and audio, reviewer notes, and the final Drive link. The take history is the memory of the app and should survive across sessions.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsA searchable RFP answer library your bid team drafts fromRun your weekly Lever pipeline review and decide in the appLinkedIn creator sourcing and vetting workbench for B2BWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollments