Skip to content

Marketing

Business-Gym drafts your marketing content, stages it as an approval, and publishes only after a person approves that specific post. Publishing is real: LinkedIn goes out through the official LinkedIn Marketing API, Facebook and Instagram through the Meta Graph API. What never happens is a post going out without a human decision behind it.

This page covers what is wired up today, what is deliberately dark, and where to look when you want to check what actually went out.

Can Business-Gym post to social media on its own?

Section titled “Can Business-Gym post to social media on its own?”

No. Nothing in the marketing pipeline publishes without a person approving that individual post. The content drafting step creates a staged send and a pending approval — it never calls a publish transport, and it cannot flip its own approval to approved.

The publish code path exists in one place and it runs only when an approval is decided by a person. That is the same hard floor described in autonomy and the hard floor: external send is human-approved, permanently.

What can Business-Gym actually publish today?

Section titled “What can Business-Gym actually publish today?”

Three destinations are wired end to end: LinkedIn (through Zernio, an official LinkedIn Marketing Partner, posting via LinkedIn’s official API), Facebook, and Instagram (both through the Meta Graph API, posted directly rather than through any browser automation).

Video placements are gated separately from feed posts, and a placement the platform will not accept — a reel or story routed to the wrong publisher — is refused with a stated reason rather than quietly downgraded to a feed post.

How does a post get from draft to published?

Section titled “How does a post get from draft to published?”

You draft or generate content at /marketing/content, and dispatching it as a send does three things: it resolves the audience with opt-outs hard-excluded, creates a pending approval carrying the recipient count and a preview of what will be published, and moves the send to staged.

The approval then behaves like any other item in the approval queue. When you approve it, the publish transport runs once. Approving the same item twice is a no-op — only a staged send transitions, so a duplicate approval can never double-post.

Editing channels and dispatching sends is owner or admin only. See who can approve and where for how those roles work.

Could a deploy switch sending on by accident?

Section titled “Could a deploy switch sending on by accident?”

No, and that is enforced rather than assumed. The marketing send gates are on a reviewed dark-by-design list: they are deliberately absent from every deploy manifest, and a CI test fails the build if anyone adds one.

That cuts both ways on purpose. A deploy cannot switch an external-send capability on, and a human decision to switch one off cannot be silently reverted by the next deploy. Turning a channel live is a deliberate per-environment act by a person, not a side effect of shipping code.

What does the ads budget guard do overnight?

Section titled “What does the ads budget guard do overnight?”

It reads the last seven days of Meta ad spend once a night and proposes a pause for any campaign that spent over the threshold (€50 by default) while getting zero clicks — money burned with no engagement. It stages one pending approval per campaign and stops there.

It never executes. The underlying write effectors are narrow by construction: the only verbs are pause, resume, and set daily budget. There is no create or delete path, a status write can only set paused or active, and a daily-budget change beyond ±50% of the current value is rejected with a stated reason rather than clamped.

At /outbound, which is the proactive mirror of your inbound queue: an in-flight queue plus a sent ledger, filterable by channel. Marketing analytics live at /marketing/analytics, and your connected ad and page data comes from the connectors listed on integrations.

The send status follows the real publish result. If the platform rejected the post, the token was missing, or the target page is excluded from your estate, the send is marked failed with the specific reason attached — never reported as sent.

The marketing pipeline does not learn from your edits. Approving, rewriting, or rejecting a draft is recorded, but it does not yet change what the next draft looks like — the same gap described in the inbound → approve → execute loop.

There is also no multi-step campaign autopilot. Each post is staged and approved on its own; a sequence of posts is a sequence of approvals, not one decision that unlocks the rest.