DEV Community

TechPulse Lab
TechPulse Lab

Posted on • Originally published at aiarmory.shop

Stop Building One Giant AI Assistant. Build Five Small Ones.

If you've spent more than a weekend building an AI-driven workflow, you've probably hit this wall: the same assistant that drafts your sales emails also tries to manage your calendar, review code, and triage support tickets — and it's mediocre at all of them.

The fix isn't a better prompt. It's a different architecture.

The problem with monolithic assistants

A single general-purpose assistant with a 2,000-word system prompt has to compromise on everything. You end up with:

  • Tone drift — the voice that works for internal briefings is wrong for customer responses
  • Context collisions — sales pipeline notes leaking into engineering reviews
  • Unbounded memory — one notes.md file that grows until retrieval is useless
  • No clear escalation — the assistant can't hand off to a specialist because there isn't one

The model isn't the bottleneck. The identity is.

Role-based agents: one mind per job

Instead of one assistant doing five jobs at 60% quality, run five small agents each doing one job at 95%. Each agent gets:

  1. A narrow role (Executive Assistant, Sales Closer, Project Manager, Customer Success, Data Analyst)
  2. Its own personality file (tone, communication rules, what it refuses to do)
  3. Its own memory directory (only the context relevant to its role)
  4. A daily loop (startup routine, scheduled check-ins, end-of-day review)

If you're running on OpenClaw or a similar agent runtime, the convention is two files per agent:

  • SOUL.md — who the agent is
  • AGENTS.md — what the agent does and when

Here's what that looks like in practice.

Example 1: The Project Manager agent

Let's call her Maven. Her job is to track tasks across every project, flag risk before it becomes failure, and produce status reports her human never has to rewrite.

SOUL.md (abridged):

# Maven — Project Manager

## Identity
I track work. I don't do the work.

## Core rules
- Every task has an owner, a deadline, and a status.
- Status is one of: ON TRACK / AT RISK / BLOCKED / COMPLETE.
- "In progress" is not a status. "In progress" tells me nothing.
- A task without an owner is a bug in the plan, not a task.
- A task without a deadline is a wish.

## Communication style
- Lead with status. Details after.
- Never soften bad news. "This slipped 3 days" is more useful than
  "We're tracking a minor timeline adjustment."
- When I escalate, I propose the next action, not just the problem.

## What I refuse to do
- I don't estimate for engineers. I ask them and record the answer.
- I don't negotiate deadlines with stakeholders. I surface conflicts and let humans decide.
Enter fullscreen mode Exit fullscreen mode

AGENTS.md (abridged):

# Maven — daily routine

## 09:00 — Startup
1. Read memory/TASKS.md — pull anything with status != COMPLETE.
2. For each task where deadline <= today + 2 days and status != ON TRACK,
   flag in memory/RISK.md with a proposed next action.
3. Generate morning brief: 3 sections (ON TRACK, AT RISK, BLOCKED) +
   today's decisions needed.

## 13:00 — Midday
- For any task touched since 09:00, confirm owner + status + next step.
- Update memory/TASKS.md revision timestamp.

## 17:00 — End of day
- Write memory/DAILY-<YYYY-MM-DD>.md: what moved, what didn't, why.
- Promote tomorrow's top 3 decisions to the morning brief.
Enter fullscreen mode Exit fullscreen mode

That's it. A PM agent is ~100 lines of plain markdown plus a disciplined memory layout. No framework, no vector DB, no tool calls that can't be explained in one sentence.

Example 2: The Sales Closer agent

Same pattern, completely different personality. Call him Hunter.

# Hunter — Sales Closer

## Identity
I close. I don't pitch.

## Core rules
- Every lead has a stage: NEW / QUALIFIED / PROPOSAL / NEGOTIATING / WON / LOST.
- Every interaction ends with a scheduled next step or the lead is LOST.
  "I'll follow up soon" means LOST.
- 5-touch follow-up cadence: +1 day, +3 days, +7 days, +14 days, +30 days.
  After touch 5 with no reply, the lead goes to LOST and I stop.

## What I refuse to do
- I don't discount to win a deal. I trade price for scope or terms, never for nothing.
- I don't write prose where a table would work. Proposals are tables.
- I don't send follow-ups that say "just checking in."
Enter fullscreen mode Exit fullscreen mode

Notice: Hunter's SOUL.md contradicts Maven's communication style in places, and that's the whole point. The PM should never try to close. The closer should never manage a Gantt chart.

Why this architecture holds up

A few things happen once you commit to one-agent-per-role:

1. Memory becomes tractable

Instead of one giant notes.md, each agent owns its directory:

workspace/
  aria/       # Executive Assistant
    memory/
      CALENDAR.md
      BRIEFS/
  hunter/     # Sales Closer
    memory/
      PIPELINE.md
      LOST-DEAL-ANALYSIS.md
  maven/      # Project Manager
    memory/
      TASKS.md
      RISK.md
      DAILY-2026-04-21.md
Enter fullscreen mode Exit fullscreen mode

Retrieval becomes trivial because each agent only reads its own directory. No embeddings, no RAG pipeline, no "why did the model pull that random note from three months ago."

2. Tone stays consistent per channel

Customer-facing output never comes from the internal project tracker. The Customer Success agent's SOUL.md explicitly forbids the PM's blunt style. You get the right voice automatically, not because you remembered to switch modes.

3. You can swap or upgrade one agent without breaking the rest

When you want to rebuild the Data Analyst to use a new tool or a better model, you touch exactly one directory. The PM, the EA, and the Sales Closer keep running unchanged.

4. Failure modes get smaller

A monolithic assistant with a bad day can ruin five workflows. A specialised agent with a bad day ruins one — and the others flag the gap in their next check-in ("Maven hasn't reported a status since yesterday, pipeline items tagged AT RISK in her domain").

Starting from scratch

If you're building this today, here's the minimum viable version:

  1. Pick one role that's eating your time. Don't build five agents in week one. Pick the most painful job and build one.
  2. Write the SOUL.md first. Identity before behaviour. Don't start with "here's what the agent should do" — start with "here's who the agent is, and here's what it refuses to do."
  3. Define the memory layout. Two or three files, each with a clear shape. TASKS.md, PIPELINE.md, BRIEFS/. Don't let memory grow organically — design it.
  4. Write the daily loop. Startup, midday, end-of-day. Three touchpoints max. Cron-driven.
  5. Run for a week before adding the second agent. You'll learn more from watching one agent work than from architecting five.

Going further

If writing five of these from scratch sounds like more yak-shaving than you have time for, I put together a drop-in pack of five business agent identities — Aria (EA), Hunter (Sales), Maven (PM), Haven (Customer Success), Sigma (Data Analyst) — each with a complete SOUL.md, AGENTS.md, daily routine, and memory layout. Designed to drop into an OpenClaw workspace and start running.

The pack is here: The Operator Pack — 5 Business Agent Identities.

But honestly, the patterns above are the important part. One role per agent. Identity before behaviour. Narrow memory. Disciplined daily loop. Whether you build it yourself or pick it up pre-built, the architecture is what changes the output.

Stop making one assistant do five jobs badly. Make five agents do one job each.

Top comments (0)