Client approval desk for every social post you schedule

By General Input

Open one queue each morning, see every post waiting on a client with its real per platform preview, and approve, edit, or reject it in place.

Integrations

  • bundle.social
  • Slack Bot
  • Google Sheets

Type

App

Categories

  • Marketing
  • Operations

I run social media for several clients and I want a client approval desk I open every morning. Build me an app whose home screen is a single review queue of every bundle.social post still sitting in draft or review status, so nothing publishes until someone has approved the exact wording.

Build the queue with the bundle.social Get post list operation, filtered by the team I pick and by the DRAFT and REVIEW statuses. A client switcher at the top selects the team, populated by Get list of teams, and Get team tells me which social accounts that client has connected so I know which platforms a post can target. Sort the queue by how many days a post has been waiting on the client, longest wait first, and put a clear flag on any post whose scheduled time is coming up soon while it is still unapproved. Track waiting time by storing the moment a post first appears in the queue, falling back to the post's own created date for posts that were already in review the first time I open the app.

Each queue item is a card that shows the post the way it will actually publish. bundle.social posts carry a shared payload plus a per platform data object for overrides, so show every platform variant separately and side by side, the LinkedIn version next to the Instagram version, rather than collapsing them into one caption. Media is referenced by upload id rather than a raw URL, so resolve the attached images and video through the Get upload list operation and show the thumbnails on the card beside the copy they belong to.

Every platform variant has its own approve, request changes, and reject controls, and its caption is editable in place. When a reviewer edits copy on a card, write it straight back to bundle.social with the Update post operation, changing the shared content or that platform's override as appropriate, so the version that goes out is the version that was approved rather than a caption someone re-pasted out of an email thread. Requesting changes requires a short comment, which stays pinned to that variant on the card.

Approving the last outstanding platform variant on a post schedules it: use Update post to set its target time and move it out of draft. Requesting changes leaves the post in the queue with the comment attached and its waiting clock still running, so it surfaces again the next morning. Rejecting removes the post with the Delete post operation, behind a confirmation step.

Every decision posts a short notice to that client's Slack channel through Slack Bot using the Send a Message operation: which post, which platform, what was decided, who decided it, and the comment if there was one. Let me map each client team to its Slack channel on a settings screen, picking from the workspace with List Channels.

Every decision also appends an audit row to a Google Sheet with the Append Values operation, carrying the post, the platform variant, the reviewer, the timestamp, the decision, and what text changed, including the previous caption and the new one whenever an edit was made. Compliance teams want that trail generated for them rather than typed up afterwards, so write it automatically on every approval, change request, and rejection with no extra step for the reviewer. Let me set the audit spreadsheet per client on the same settings screen.

Store approval state per post and per platform variant inside the app, since bundle.social has no field for it: which variants are approved, who approved each one, the outstanding change requests, and the full decision history for the card. Record the reviewer as whoever is signed in to the app. Show a header count of how many posts are waiting and how many are at risk of missing their scheduled time, so I can tell at a glance whether the morning is clear.

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