AI Agents

How I built a team of AI personas that runs my work while I sleep

A multi-agent Discord setup for content ops, client work, and everything else

  • Date: 24 Apr 2026
  • Role: AI Automation Engineer

When the wall came down

For twelve years I’d been on the marketing side of the wall.

That’s the side where you spec out what you want built — a dashboard, an integration, a scraper, a plugin — and you wait for an engineer to build it. Or you don’t get it built at all, because engineers are busy and your idea lands in their backlog behind six other things. I’d worked around it for a long time — I learned enough Python to be dangerous, taught myself enough SQL to pull my own data, hacked things together with Make and n8n. But the wall was always there.

In early 2025 the wall came down.

Vibe coding — sitting with Claude (or Cursor, or Claude Code) and describing what you want in plain English while the model writes the actual code — went from “neat party trick” to “this genuinely works.” Within a few weeks I’d shipped things I’d been wanting to ship for years. A WordPress plugin that turned a client’s dormant custom post type into a full SEO-optimized directory. A Python pipeline that scraped a client’s content archive to reverse-engineer their writing voice. A content pipeline that chained three AI tools together to produce bulk article drafts.

For the first time, I was the one building the things I’d been specifying my whole career.

The second wall

But vibe coding has a ceiling. And I hit it fast.

The ceiling is this: Claude Code only works when you’re sitting in front of it. It’s reactive. You prompt, it responds. The moment you close the laptop, it goes to sleep. And it turns out a lot of the most valuable work isn’t reactive — it’s the stuff you want happening when you’re not there.

A morning content brief waiting for me at 6am. A weekly content review queued every Sunday. A client recap drafted at 6pm so I could review it over dinner. None of that fits into the “open Claude Code and vibe” pattern. I still needed to be the button someone pushed.

I was building faster than ever, but I was still the bottleneck.

Enter OpenClaw

Then I came across OpenClaw and something clicked.

OpenClaw is an open-source “agent gateway” — think of it as the plumbing that lets an LLM live permanently on a server, respond to Discord messages, run on a schedule, and call external tools. It handles the things you don’t want to write yourself: session management, Discord integration, cron scheduling, hooks, the Model Context Protocol for tool use.

I didn’t build OpenClaw. What I built is what lives on top of it: a team of AI personas with their own jobs, voices, and schedules — all sharing one chassis, all running whether I’m at the keyboard or not.

This is what an actually autonomous AI workflow looks like. Not “I prompted Claude to do a thing.” It’s “I woke up to three pieces of finished work waiting for me to review.”

The team

Instead of spinning up separate agents for every workstream, I kept it simple: one agent:main process, four personas, each living in its own set of Discord channels. Each one has its own “soul file” — a markdown document describing who they are, how they think, what they do, what their voice sounds like.

  • Mustapha — the coordinator. Strategic integrator, project quarterback, fractional-CMO mode when needed. Handles cross-client context and general ops.
  • Vonnegut — the content creator. Weekly content reviews, storytelling angles, long-form planning. Has a completely different voice from Mustapha — warmer, slower, more reflective.
  • Dalio — a market research analyst I use for my own investing research. (Side project, not the main story.)
  • Reactivation — a sales persona powering a lead reactivation system for service businesses (pre-launch).

537 lines of personality spec across the four files. Swapping a persona’s voice isn’t a deploy — it’s a text edit.

How routing works (one agent, seven channels)

The same agent process becomes a completely different person depending on which Discord channel you post in.

Drop a message in #axia and Mustapha wakes up in fractional-CMO mode, pre-loaded with that client’s context. Post the same message in #vm-content and Vonnegut picks it up with storytelling context loaded instead. In #thesis, Dalio takes over.

The switching happens at the channel level via per-channel system-prompt overrides. No manual /agent command, no mental context-switching for me. I just post wherever the context belongs and the right voice answers.

The memory problem

The hardest part of any multi-persona setup isn’t the personalities. It’s memory.

Every LLM has a context window. When it fills up, something has to go — older messages get summarized or dropped. Without a memory strategy your agents forget what they did yesterday, which is worse than useless. You end up re-explaining everything every session.

I built three layers to solve this:

  1. Pre-compaction flush — when a session approaches the context limit, a silent agent turn writes key facts to memory/YYYY-MM-DD.md before compaction happens. Important things survive.
  2. Session-memory hook — on any /reset or /new, the current state auto-saves. No manual export.
  3. Rolling summarization — a 275-line Python script on a 4-hour system cron reads recent session transcripts, calls a summarization model, and appends to the shared memory file.

Two months in, that has produced 43 automatic memory snapshots. Any persona can look them up before answering. Context across the team is preserved without me babysitting it.

What this architecture powers

OpenClaw isn’t just a chat bot in Discord. It’s the nervous system for everything I build — the persistent layer that makes all my other systems and automations feel like they’re running themselves.

Scheduled workflows (running nightly)

The jobs that execute without any input from me:

  • Sunday 6pm PT — Vonnegut’s weekly content scan. Gap analysis, new angles, planning output for the week ahead.
  • Every 4 hours — the memory summarizer, keeping team context fresh.
  • Daily, late-night UTC — content archive sync for each client whose voice model we maintain. Keeps the voice current as they post new things.
  • Every 30 minutes, business hours — the lead-reactivation campaign runner (more on that below).
  • Weekdays, 3x daily — Dalio’s market briefs. Personal-use side project.

Systems I operate from this same chassis

The real leverage isn’t the crons. It’s what Mustapha (the coordinator persona) lets me run with a single Discord message:

  • An AI content engine for an M&A advisory client. Scrapes their full social archive (8 blog posts, 100+ LinkedIn posts, 80+ tweets), reverse-engineers their founder’s writing voice into a versioned voice-model doc, and drafts LinkedIn and Twitter posts in that voice on demand. “Mustapha, give me 5 LinkedIn posts on [topic]” → 10 minutes later, 5 drafts are staged in Typefully for review. The founder ships without me being in the loop on most days.

  • A 150-site WordPress portfolio management system for a digital marketing client. Connected via the AI Engine MCP across the full network, giving Mustapha admin-level access (posts, themes, plugins, settings, database queries) to every site at once. Audits, content publishing, plugin deployments, and SEO monitoring run in parallel across the portfolio instead of site-by-site.

  • A custom PE firm directory plugin. WordPress plugin for the same M&A advisory client — custom post types, custom archive and single templates, JSON-LD schema (Organization, ItemList, FAQPage), lead capture forms wired to the client’s email provider, mobile-first CSS. 18 private equity firms researched and populated with 400-600 word SEO-optimized profiles. Plugin code, content, and deploy all shipped through Mustapha.

  • A lead reactivation system for service businesses. Supabase-backed (5 tables), FastAPI webhook bridge, 7 SMS templates, AI-powered inbound conversation handler. Currently running on a demo account and a live campaign runner cron while we finalize the messaging provider for launch.

  • A faceless short-form video pipeline. Claude API → ElevenLabs voice cloning → Remotion (three programmatic video templates: data-card, voiceover B-roll, slideshow) → Postiz distribution. All 1080×1920 30fps. Infrastructure complete and render-verified; waiting on a couple of API keys before the first test sprint.

Each of these plugs into the same chassis — same persona system, same memory layer, same human-in-the-loop review workflow. That’s the point: I didn’t build five different automation stacks. I built one, and it runs all of this.

One thing I learned the hard way: cron sessions default to the first messaging provider you configured, which for me was Telegram. For the first week, Vonnegut’s content reviews were being silently delivered to a Telegram channel I never check. Every cron payload now has an explicit Discord routing guard. Two days of debugging, one line of fix.

Design decisions I’d defend in an interview

  • One agent, many personas — not four separate agents. A shared chassis means shared memory, shared cron, shared integrations. Adding a fifth persona is a config edit, not a deployment.
  • Personality as markdown, not code. Voice drift is inevitable. The faster you can correct it, the better the output. Opening a soul file and rewriting three lines is a 30-second fix.
  • Staging, not direct publishing. Content crons write drafts into Typefully and markdown review folders — never directly to LinkedIn or a live site. I review in 15-minute batches each morning. That’s what made autonomous execution actually trustworthy — not full autonomy, but batch approval of staged overnight work.

Where this is today

The system’s been in production since early February. 4 scheduled workflows across 7 Discord channels with 4 personalities, 43 auto-generated memory snapshots, zero downtime. The Sunday content scans actually happen now instead of being “I’ll get to it this week.” Client context stays warm across sessions. I spend 15 minutes in the morning reviewing staged work and the rest of the day on the work that actually needs me.

I’m the operator now, not the bottleneck. That’s the thing I wanted.

What this means for your team

The pattern isn’t specific to me. Any team juggling multiple workstreams and losing quality in the switching cost can use this model:

  • A marketing team that wants daily competitor scans, weekly content reviews, and monthly trend reports — each in the right voice, each on a schedule, each waiting for you when you show up.
  • A founder managing client work plus content plus ops, where each stream has its own context and none of them can drop.
  • A growth team that wants research or outreach prep done overnight so the mornings are for conversations, not keyboard work.

If that sounds like something you’d want running in your business — I build those. And if you’re hiring an AI Automation Engineer or Marketing Engineer, this is the kind of work I’d do in your first 90 days.


Framework credit: this system runs on OpenClaw by ClawHub. The agent gateway, Discord integration, cron scheduler, and MCP plumbing are OpenClaw. The persona designs, memory architecture, workflow prompts, routing guards, and workspace system are mine.

DietMenus.com
Programmatic SEO

DietMenus.com

Programmatic SEO directory to find restaurant meals that fit your dietary needs.