An internal tool by The Observable

SocialAgents

AI-assisted social content, with human control at every step

SocialAgents is a multi-agent pipeline we built and run internally. A single Slack command starts a workflow that drafts, reviews, checks compliance, and renders a finished video — which we publish directly to our Instagram. Three mandatory human approval gates ensure nothing goes live without sign-off.

SocialAgents is used internally by The Observable and is not available as a standalone product. We are happy to discuss building something similar for your team.

It starts with a Slack command

The entire pipeline is triggered from a single message in our Slack workspace. No dashboards, no separate tools — the team stays in the workflow it already uses.

# create-content

You — Today at 9:14 AM

create instagram video content for home loan interest rate update

Optional flags: , max 3 limits review iterations. video or slides constrains the output mode.

How the pipeline works

Five AI agents and three mandatory human approval gates run in sequence. Teal arrows and highlighted boxes mark the gates — the pipeline stops at each one until a team member reacts ✅ in Slack.

SLACKcreate instagram video content for [topic]Request TunerGPT-4o-mini · Structures the Slack request into a content briefContent AgentGPT-4o · Generates script, caption, and hashtagsReview AgentClaude Sonnet · Reviews quality, brand tone, and accuracy↻ needsrevision✓ ApprovedMeta Compliance CheckClaude + Meta API · Validates draft against live Meta policiesHuman Approval ✅Team reviews content in Slack — react to continueCover AgentGPT-4o-mini + Gamma · Renders branded 9:16 cover imageCover Approval ✅Cover image reviewed and approved in SlackVideo RenderHeyGen · AI avatar video with brand kit, captions, and intro cardFinal Approval ✅Video reviewed and approved in Slack before publishingINSTAGRAMVideo published to our Instagram account

Tools and integrations

Each tool has a specific, bounded role. Nothing runs without engineer-defined configuration and guardrails.

Slack

Command interface and approval gates throughout the pipeline

OpenAI GPT-4o

Content generation, script writing, and brief structuring

Anthropic Claude

Draft review, quality checks, and policy compliance

Meta Policies API

Live policy fetch and validation before human review

Gamma

Branded 9:16 cover and carousel image generation

HeyGen

AI avatar video rendering with brand kit and captions

Instagram

Final publishing endpoint — where content goes live

Runs on a Raspberry Pi 4

The entire pipeline — Slack bot, job queue, five AI agents, video stitching — runs as a persistent service on a single Raspberry Pi 4 sitting in our office. No cloud server required.

PM2 keeps the service alive across crashes and reboots. A GitHub Actions self-hosted runner on the same Pi handles auto-deploy: every push to main pulls the latest code and restarts the service automatically.

This is a deliberate choice. A multi-agent AI pipeline does not need heavyweight infrastructure — it needs reliable process management and stable network access, both of which a Pi handles well.

DeviceRaspberry Pi 4 (Linux ARM64)
RuntimeNode.js 22 + Yarn
Process managerPM2 — survives crashes and reboots
DeployGitHub Actions self-hosted runner, auto-deploys on push to main
Video processingffmpeg for intro card stitching
StateSQLite job store + per-job log files

Why not n8n, Make, or a similar platform?

Platforms like n8n are excellent for simple, stable integrations — webhook to email, form to spreadsheet. This pipeline has different requirements: AI-driven loops, structured model output, typed state, and per-step model economics. Here is why code is the right tool for those.

The review loop needs code

An AI-driven loop that iterates until a model approves — passing structured feedback back as context each time — requires conditional branching on typed output. In a visual tool you end up writing code inside every node anyway, with the overhead of the platform and none of the benefit.

Typed state between agents

Every step passes strongly-typed data. A malformed draft cannot propagate silently — TypeScript catches it at build time. Visual tools pass loosely-typed JSON between nodes, which turns data errors into runtime surprises.

Testable and reviewable

Pipeline logic, agent prompts, and guardrails live in Git. Changes go through code review and run against a test suite before deploy. Visual tool workflows have no diff, no unit tests, and limited audit trail.

Per-step model economics

We use GPT-4o-mini for cheap structuring tasks, GPT-4o for content generation, and Claude Sonnet specifically for review and compliance. That per-step model selection is hard to control in a platform where AI nodes often share one configured model.

No platform dependency

n8n is a full web application — its own database, web server, and credential store. Our pipeline is a single Node.js process on a Raspberry Pi with no subscription, no vendor lock-in, and a much smaller attack surface.

Custom approval UX

The Slack ✅ reaction gates are a deliberate UX choice — the team approves without leaving Slack. Implementing this in n8n still requires custom webhook code; you would just be wrapping it in more layers.

See it in action

A walkthrough of the pipeline from Slack command to published Instagram video.

Video coming soon

Interested in something similar?

SocialAgents is internal, but the approach is transferable. If you want a governed, AI-assisted content workflow for your team, we are happy to discuss building one.