Every agency has the same workflow and nobody chose it. Someone writes the posts. Someone screenshots them. The screenshots go in an email or a chat. The client replies to one of them. Half the feedback arrives as voice notes. Then somebody retypes the approved version into the scheduler and hopes it matches.
What goes wrong
- The approved text and the scheduled text are two different objects, kept in sync by hand
- Feedback lives in a thread nobody can find in two weeks
- Nobody can answer "is this approved?" without reading a conversation
- The person who approves is not the person who publishes, so mistakes are found after they are public
Approval as a state, not a conversation
The alternative is simple enough to sound obvious: the post itself has a state. An editor writes it and it waits. Someone with authority releases it. Until they do, the publisher will not touch it — not because of a convention, but because the worker only picks up posts in the released state.
That single change removes the retyping step, which is where errors actually enter, and makes the question answerable at a glance.
Roles worth having
- Owner — everything, including who else is here
- Admin — approves posts, manages connected accounts
- Editor — writes; their posts wait for approval
- Viewer — can look, cannot touch
The important part is that the check is enforced where the data is, not in the interface. Hiding a button is a courtesy; refusing the request is the actual rule.
