# Social posts from Slack, in the web app

This page is for people. You set up the whole workflow by clicking in the web app. It takes about 20 minutes. You need an OpenAI API key (images need OpenAI), a Slack workspace where you can add apps, and a WoopSocial account with an API key, a project id and at least one connected social account.

If you would rather let your own Claude Code or Codex do it, see [the recipe](/docs/recipes/social-workflow-add-to-slack).

## 1. The board

1. Click **New board** and name it, for example "Social posts".
2. Shape the columns from each column's menu and **Add column**: Briefs, Drafting, AI check, Done. Done always stays last. Approved cards are delivered when they reach Done.

## 2. Your AI key

Open **Settings**, **AI accounts**, pick OpenAI, paste the key and click **Connect**. Wait for **Working**. The first working key is used by every agent that has no account of its own.

## 3. Two agents

Open **Agents**, **New agent**, and make:

- **Carousel maker** on this board. What it does, in plain words, for example: "Turn the brief into a 3-slide carousel: one image per slide and a caption. Put the caption in a fenced block tagged bakedbrie-captions as JSON with caption and hashtags." Set **Make images** to Allowed. Keep the default model.
- **Post checker** on this board: "Check the caption and slides against the brief and the board guidelines. Pass only if they are on brief, correct and ready to post; otherwise say exactly what to fix."

The fenced `bakedbrie-captions` block is how the caption reaches WoopSocial ([details](/docs/recipes/woopsocial)).

## 4. Agent rules

On the board, open **Automate**, then **Agent rules**, **Add an agent rule**:

1. When a card is in **Drafting**, Carousel maker works on it, then it moves to **AI check**.
2. When a card is in **AI check**, Post checker works on it. If the check fails, it goes back to **Drafting** (at most 3 rounds); if it passes, it moves to **Done**. Turn on **People review**, so a person approves the result before it moves on and is delivered.

Save and turn each rule on.

## 5. Slack

1. Open **Settings**, **Members** and click **Add to Slack**, then **Allow** in Slack. Only workspace owners and admins can do this.
2. In Slack, make a channel for briefs (a private one is fine) and type `/invite @BakedBrie` in it.
3. On the board, open **Automate**, **Cards from Slack**, pick the channel and choose **Drafting** as the column new cards start in, so the Carousel maker starts at once.

## 6. Where approved posts go

Open the board menu, **Board settings**, **Destinations**:

1. **Connect Slack**: pick the same channel. This is where drafts are posted for approval.
2. **Connect WoopSocial**: your WoopSocial API key, project id and the social accounts to post to, the time zone and daily posting times. Click **Test**.
3. Click **Deliver this board here** on WoopSocial, so approved cards are scheduled there.

Back in **Automate**, under **When things happen on this board**, choose Slack for:

- **Work is ready for review**: Post it for review with Approve and Request changes buttons.
- **A review is decided**: Update the review message with the decision.
- **A post goes live**: Reply in the card's thread.

## 7. The first brief

Post one message in the channel, for example "Carousel: 3 tips for keeping houseplants alive in winter. Friendly tone." A card appears in Drafting, the agents draft and check it, and the draft is posted in Slack. Click **Approve** there (the first time, BakedBrie sends you a private link to connect your Slack account; open it signed in to BakedBrie). The post is scheduled in the next free slot, or at the time you asked for ("post this Friday at 2pm"; the review shows it before you approve), and the link comes back in the Slack thread when it is live.

If something stops, open the card: it says what happened in plain words. Every send has a receipt.
