Use Cases
Marketing

How we draft social posts from our content calendar

The social-scheduler agent we run on Kortix — a daily agent that reads our Notion content calendar, drafts platform-appropriate posts for upcoming content, launches, and announcements, and holds them in Slack with the scheduled date for a human to approve and publish.

Case StudyEnterprise
TT
The Kortix Team
Kortix··4 min read

Our content calendar lives in Notion: what's shipping, what's launching, what we're announcing, and when. Turning each of those rows into an actual LinkedIn post, a tweet, and an Instagram caption is a separate manual step that happens later, usually the day of, sometimes not at all. The calendar says what should go out; nobody had turned it into copy yet.

We run a social-scheduler agent on Kortix that closes that gap every day. It reads the content calendar in Notion, drafts platform-appropriate posts for anything launching or publishing soon, and holds every draft in our marketing Slack channel with its scheduled date. It never posts anywhere itself — a person reviews, edits, and publishes.

TeamKortix
Runs onDaily cron
Connected systemsNotion · Slack
ModeFresh session · draft-only, human publishes

The problem

A content calendar tells you what and when, not the actual words that go on each platform. Writing the LinkedIn version, the X version, and the Instagram caption for every launch and announcement is a distinct task that someone has to remember to do, usually under time pressure right before the scheduled date.

The common fixes don't hold up. A scheduling tool queues posts, but someone still has to write them first. A shared doc of "posts to write" depends on someone checking it daily and drafting ahead of the date, not the day of. And because drafting keeps sliding to "later," launches and announcements regularly go out with no social post at all, or one written in five minutes right before it's needed.

What we built

On Kortix, a daily cron triggers an agent. It spawns a fresh session that reads our Notion content calendar for anything launching, publishing, or being announced in the days just ahead, drafts a platform-appropriate post for each one — LinkedIn, X, and Instagram get different lengths, tone, and structure — and posts the batch to our marketing Slack channel, each draft labeled with its scheduled date. Nothing is scheduled or published automatically; the drafts sit in Slack until someone approves them.

How it works

01

Run on a daily cron, fresh each time

A cron trigger fires the agent once a day. Each firing spawns a fresh session in its own sandbox — there's no memory to carry over, so the agent re-reads the calendar's current state every time rather than trusting what it drafted yesterday.

02

Give the agent the platform playbook

How each platform's copy should read — LinkedIn's longer, more explanatory tone; X's tight, single-idea framing; Instagram's caption-plus-hashtags structure — lives as a skill that travels with the agent. When we change our voice or add a platform, we edit the skill and every future draft follows it.

03

Connect the calendar and the approval channel

Through a scoped connector, brokered server-side so no raw token reaches the model, the agent reads the Notion content calendar for entries landing within the lookahead window. Through a channel, it posts the drafted batch to Slack. Neither connection touches any social platform.

04

Set the guardrails

The agent can read the calendar and write to one Slack channel. It has no connector to LinkedIn, X, Instagram, or any other social account, so there is no path from this agent to a live post — the guardrail isn't a rule the agent follows, it's a permission it was never given.

05

Hold every draft for approval

Each day's Slack post lists the upcoming calendar items with a drafted post per platform and the scheduled date attached. Someone on the team reviews each draft, edits it if needed, and schedules or publishes it through whatever tool they already use. The agent's job ends at the draft.

The pattern

A daily cron spawns a fresh session that reads the Notion content calendar through a scoped connector, drafts platform-specific copy using a skill, and posts the batch to Slack for approval. No connector to any social account exists, so nothing can go out without a human.

Guardrails

The agent drafts copy that will eventually represent the company publicly, so what it can do on its own is narrow:

  • No social connectors, period. The agent has no credential and no connector to LinkedIn, X, Instagram, or any other platform. Publishing isn't blocked by a rule — the capability doesn't exist in this agent's scope.
  • Draft only. The only output that leaves the sandbox is a Slack message containing drafts. Nothing is scheduled, queued, or posted anywhere.
  • Isolation. Every run happens in its own microVM sandbox, torn down when the run ends.
  • Scoped secrets. The Notion connector is brokered server-side; no raw token is ever shown to the model or written to logs.
  • Everything is code. The platform playbook, the lookahead window, and the agent's permissions are files in the repo, changed through a reviewed change request rather than a dashboard setting.

The outcome

Every dayUpcoming calendar items turned into drafted copy ahead of time
0 postsPublished automatically — every draft waits for a human
3 platformsLinkedIn, X, and Instagram drafted in one pass

Launches and announcements that used to get a rushed post the day of, or none at all, now show up in Slack days ahead with a draft ready for each platform. The agent turns the calendar into copy; the team still decides what actually goes out.

Loop Engineering

Engineer your first loop

Give your company a workforce of agents that run on a schedule, ship real deliverables, and improve one reviewed change at a time. Free to self-host, managed cloud from $20.

Open source · SSO · RBAC · on-prem · no lock-in

kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
kortix
How we draft social posts from our content calendar | Kortix