Operations classIntermediate/8 min read

How to design an AI social media approval workflow

Design an approval workflow for AI-drafted social posts: the states a post moves through, what an automated check can catch, and where sign-off breaks.

Kavish Shah

Founder of Cadencz. Writes the Academy from the work of building it.

Published Updated

Class notes

What you will be able to do

  • Write the workflow down as states and transitions first; the tool comes second.
  • Let software check what has a right answer against the source, and keep judgment calls with a person.
  • Tie sign-off to one frozen version, so any later edit sends the post back.
  • Plan for the post that fails after it was approved: an expired token is the most common case.
  • Match the number of people involved to the risk of the post, not to the org chart.

An approval workflow for AI-drafted posts is a small state machine with one rule: a post only becomes public after a named person accepts that exact version. Everything else is detail about who moves a post from one state to the next and what evidence they need.

Most workflows don't fail at the approve button. They fail just before it, when the draft rests on a stale source, or just after it, when someone edits the caption, the slot passes, or the account token expires. This guide is about designing for those edges. If you want the product page for Cadencz's version instead, it is linked at the end.

Draw the states before you choose a tool

Write each state a post can be in, then write who or what is allowed to move it to the next one. If you cannot name the mover, the transition will happen by accident.

A minimal state model for AI-drafted social posts.
StateWhat is true in this stateWho moves it onExit
BriefA source, a reader, and a destination are namedThe requesterDrafting starts
DraftingThe model is writing; nothing can be signed off yetSoftwareDraft, or failed generation
DraftEditable text exists for each destinationThe approverApproved, or rejected with a reason
ApprovedOne version is frozen with its account, media, and timeThe schedulerPublishing at the slot
PublishingThe request is with the platformSoftwarePublished or failed
FailedThe text is intact and the error is storedThe publisherRetry, edit, reconnect, or cancel

How Cadencz implements those states

A worked example helps, so here is how Cadencz's own code models this, read from the backend on October 19, 2026. A planned post is `rendering` while the writer works, then `draft`. Trying to approve a card that is still rendering is refused with a message that it is still being written. Approval is also refused, with a clear error, when none of the post's target platforms has a connected account, because there would be nowhere to send it.

Approving does three things at once. It creates one copy of the post per connected channel, and one per part if the post is a thread, with thread parts spaced 30 seconds apart so replies attach in order. It sets each copy to `scheduled` if a time was chosen, or leaves it as `draft` with no slot. And if the planned slot has already passed by the time someone signs off, it moves the post to at least five minutes from now rather than publishing into the past.

After that, the publisher moves each copy to `publishing` and then `published` or `failed`. A failure keeps the post body and stores the error text on the row. If the platform rejects the credentials, the channel is marked as needing reauthorization so the app shows a Reconnect prompt instead of retrying a dead token. If an admin pauses a channel, scheduled posts stay scheduled and go out once it is back on. A setting to skip review entirely exists ("schedule straight to the calendar"), and it is off by default.

The Cadencz Queue with the tabs Upcoming 3, Drafts 0 and Posted 0, listing scheduled LinkedIn, Bluesky and X posts
Approved posts in the Queue: three scheduled copies, one each for LinkedIn, Bluesky and X, with Edit, Check, Publish now and Delete on each. Demo workspace on the Pro plan, drafts generated from cadencz.com. The connected accounts are demo accounts.

What an automated check can catch

Software is good at checks that have a right answer against the source material. It is bad at checks that depend on what is happening in the world this week. Design the automated pass around the first kind and leave the second to a person.

Cadencz's Critic is one concrete version of this. It is a second model that reads each draft and returns at most three issues, each tagged hard or soft. Hard issues are the ones that would make the post wrong to publish: an invented fact or a number the source does not support, a sentence reused from the creator's already published posts, a banned or promotional phrase, or copy over the platform's character limit. Only a hard issue sends the draft back to the writer, and the loop stops after two attempts so a bad prompt cannot spend credits forever. Formatting, hook strength, and tone are soft: they are shown to the person, who is a better judge of taste. The Critic runs on paid plans only.

Notice what that list cannot cover. The Critic compares the draft with the source, so a wrong source produces a confidently wrong post that passes. It cannot know that a customer withdrew permission to be named, that a launch slipped a week, or that the subreddit you are posting to banned self-promotion last month. Those are the checks your human pass exists for.

Order the human pass by cost of being wrong

Check in this order: truth (facts, numbers, dates, links, customer details), then whether the reader gets something before the product asks for attention, then voice, then platform fit, then delivery (account, time, media). The order matters because a failed truth check makes everything after it wasted work. Polishing the hook of a post whose central claim is false is the most common waste in any review queue.

Match the path to the risk of the post

A routine build note and a regulated customer claim should not go through the same path. One process will be too slow for the first and too thin for the second. Decide the risk level in the brief, before anyone drafts. Raising it after a post is scheduled means the record shows sign-off from someone who never saw the claim that needed them.

Four sign-off models, matched to the type of post.
ModelUse it forRequired decisionHow it usually fails
Self-reviewRoutine founder education and low-risk build notesA second look at truth, on a different day from draftingDrafting and sign-off happen in the same sitting
Single approverProduct updates and ordinary brand contentOne named person accepts the exact versionA team is named instead of a person
Parallel reviewClaims needing product plus legal or security inputEvery specialist sees the same frozen versionFeedback lands on different copies
Sequential reviewRegulated, contractual, crisis, or executive postsEach stage has a distinct job and a deadlineStages are added without authority to say no

Where approvals break in practice

Edits after sign-off. Someone fixes a typo, and in passing changes "up to 40%" to "40%". If the sign-off is not tied to a version, nobody notices. Rule: any change to text, media, link, account, or time reopens the checks that change affects, and the old decision stays in the history.

Sign-off in chat. A thumbs-up in Slack is not evidence, because nobody can prove which revision it referred to. Record the decision where the post lives.

Passed slots. A post approved Wednesday for a Tuesday slot has to go somewhere. Cadencz moves it forward to the soonest sensible time. For a time-sensitive post, such as a webinar reminder, the better design is to let it expire and say so.

Dead credentials. The approved post fails at publish time because a token was revoked. The failed state must keep the exact text, show the platform's error in plain words, and offer the one action that fixes it, which here is reconnecting the account, not retrying.

Silent automation. Turning off review for a recurring low-risk format is reasonable once the workflow has a record of clean weeks. Turn it on per format, keep an off switch, and keep posts with no connected channel waiting as drafts instead of dropping them.

Write rejection reasons that change the next draft

Store rejection reasons and read them monthly. If the same reason keeps coming back, fix the source note, the voice rules, or the brief, and the editing cost stops recurring.

Weak feedback

Too salesy. Try again.

Actionable rejection

Rejected: the opening claims this is the fastest workflow without evidence, and the reader gets no usable idea before the product link. Keep the onboarding example, drop the superlative, and lead with the three-question test.

Name who decides what

On a team, five jobs need an owner: the requester who supplies the source, the fact owner who confirms product, legal, or customer claims, the editor who owns voice and platform fit, the approver who accepts the final version, and the publisher who watches delivery and handles failures. Give each stage a backup for absence and a deadline. A status with no due time is a label, and silence should never count as a yes unless a written standing rule says it does.

A solo founder holds all five jobs. Keep the states anyway, and sign off on a different day from the one you drafted on. The separation is what stops a fresh draft from feeling finished.

Measure whether the workflow is helping

Look at quality and speed separately each month, so a fast process cannot hide mistakes and a careful one cannot hide avoidable waiting.

A small monthly scorecard for the approval process.
MetricHow to calculate itWhat it reveals
Median time to decisionTime from draft ready to approved or rejectedWhether the normal path is predictable
Deadline breach rateLate decisions divided by decisions dueWhere ownership or capacity is unclear
Revision roundsChange requests before final sign-offWhether briefs and rejection reasons are improving
Post-approval change rateApproved posts edited before publishingWhether sign-off happens too early
Preventable incident ratePosts corrected or removed for issues the checklist coversWhether the workflow protects the account
False-friction rateLow-risk posts escalated without a policy reasonWhether the process is heavier than the risk

The checklist to copy

If you would rather not build this from a project board, Cadencz's product page describes how its draft queue, Critic, and scheduler fit together, and the automation guide covers which steps are safe to hand to software.

  • Source attached and current
  • Reader outcome named
  • Claims match the source, and the source is still true
  • Customer details cleared for use
  • Community rules checked for the destination
  • Account, date, time, link, and media confirmed on the frozen version
  • Someone owns the post if it fails

Sources used

Sources and freshness

Last updated . Sources are listed below. Product features, prices, and platform rules change, so check the source before relying on a volatile detail.

  1. 01Spam policy and authentic participation guidanceReddit Help

Keep learning

01Sprout Social approval workflow vs Cadencz for founders and small teamsChoose Cadencz or Sprout Social from the workflow and governance your team actually needs.
02Social media metrics for founders: what to measure before product-market fitBuild a weekly scorecard from the four signals that matter before product-market fit.
03How to turn one product update into a week of social contentBuild a complete week from one real product insight.