SocialOps

A multi-agent command center for small businesses: comments and assets are routed to specialist agents, and a person approves everything before it posts.

Year
2026
Role
Architecture and build
Team
Cloud computing course project, in progress
Stack
FastAPI, Next.js, Pydantic AI, PostgreSQL, Redis, Terraform, AWS
Link
Repository on GitHub

How it works

Comment: Love the new menu!

Approved by a person

  • Triage scores sentimentdone
  • Response drafts a replydone
  • Media checks brand ruleswaiting
  • Content writes posts per platformwaiting
Agent at workApproval stampDead letters wait for a retryThe orchestrator routes, the agents draft, a person decides.

The system

Every brand feeds one queue, and a person signs off Comments and uploaded assets from several brand accounts go through a stateless FastAPI API into one arq job queue on Redis; a worker runs pydantic-graph pipelines that call the Triage, Response, Media and Content agents, drafts wait for a person to approve before the outbox publishes them, and jobs that fail three times land in a dead-letter queue that can re-enqueue them. draft, pending after 3 tries re-enqueue Brand A comments, assets Brand B comments, assets More brands same pipeline Stateless API FastAPI /ingest/comments /assets commit, then enqueue Job queue arq on Redis SQS in a later phase process_comment process_comment process_asset process_comment open slot 4 jobs, one per row Worker container orchestrator.py · pydantic-graph 1 job at a time, est. 300 comments in 15 to 20 min Comment pipeline, reply only if needs_reply Ingest Triage Respond Persist Asset pipeline IngestAsset Media Content PersistContent Analytics agent, phase 2+ Dead-letter queue failed_jobs table Failed Jobs panel Person approves PATCH /reply_drafts nothing posts before this Publish via outbox drain_outbox Legend Agent, one model call Graph step Optional or later Human gate Phase 1 in progress, runs locally

The job

Small brands hit the same walls: comments pile up after a post spikes, content goes out inconsistently, and nobody has time to see what works.

The agents

An orchestrator routes each item to triage, response, content or media agents. Triage scores sentiment, response drafts replies in the brand's voice, content turns one asset into posts per platform, and media checks images against brand rules.

Built right, then moved

Phase one is already stateless with a queue backed worker, so the move to AWS is re-platforming rather than a rewrite: Postgres to RDS, disk to S3, the Redis queue to SQS, Compose to ECS.

Status today: phase 1 runs locally on Docker Compose, with the ingest endpoints, the arq worker and its pipelines, and a dead letter queue that retries a job three times before parking it.

Next, Ebosi →