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.
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
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.
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.
