Today, across every client
Example
- 09:00Bakery (sample)Autumn menu carousel · BlueskyPublished
- 10:30Bike shop (sample)Workshop open day · MastodonLink preview rejected. Retry is ready.Failed
- 14:00Bakery (sample)Weekend opening hours · TelegramScheduled
- 16:15Studio (sample)New team member · SlackScheduled
- UnsetBike shop (sample)Spring service offer · DiscordDraft
Built toward one promise: show every client what their retainer delivered this month.
Each step below says plainly whether it works today. Nothing is listed as live until it is.
Keep each client apart
One space per client with its own channels, media and team. No client can see another.
LiveWrite and check
One post, per-channel text, and a check against each platform’s rules before it can be scheduled.
LiveSchedule and publish
A week, month and list calendar. Each channel shows its own status, and a failed post says why and retries without posting twice.
LiveGet client approval
Send a draft for approval and keep a record of who decided, and when.
PlannedTrack the month
Set each client’s monthly plan and count what actually published. Scheduled or failed posts never count as delivered.
PlannedReport to the client
A read-only monthly report with planned against delivered work and only the metrics a platform really provides.
Planned
Channels
Twelve channels are in scope. Each one is added only after it works end to end.
- Publishing now
- Bluesky, Mastodon, Discord, Telegram, Slack
- Waiting on platform review
- LinkedIn, Pinterest, Facebook Pages, Instagram, Threads
- Coming with video
- YouTube, TikTok
Open source, and built to be checked
- Sandbox mode runs posts through the whole pipeline for demos and testing, and never publishes for real.
- Your clients stay apart. Every query is checked against the client it belongs to, in the app and again in the database.
- AGPL-3.0. Read the code, or host it yourself.