7 Claude Code Agents That Run My Entire 1-Person Agency

Abstract tech illustration: 7 Claude Code Agents That Run My Entire 1-Person Agency

Most Claude Code tutorials stop at the front door: landing page, cold email script, maybe a chatbot. Then a real client replies and you discover the actual job is qualifying, proposing, scoping, invoicing, chasing, and repurposing — and you still owe them the work they paid for. That isn't a Claude Code project. It's an operating system, and after 18 months running three production systems from one PC in my apartment, I can tell you the whole thing collapses down to seven agents.

Not seventy. Seven. Each one owns a single boring job, each one runs on a trigger you set once, and together they cover roughly 90% of the admin work a small agency generates. Here's the exact shape of it.

Agent 1: Inbox Triage — the one nobody builds first

This is the agent every solopreneur should build first, and almost nobody does. It hits the Gmail API every 10 minutes, classifies each new thread into about six buckets — hot lead, existing client, invoice question, vendor, newsletter, junk — and pushes the important ones to a Telegram channel with a one-paragraph summary and a suggested reply. You tap approve on your phone, it sends.

For a small consultancy this single agent clears about two hours a day. The trigger is a cron job, the classifier is a prompt with your definitions of "hot" (not Claude's defaults — Claude's defaults are useless for your business).

# /etc/cron.d/agents
*/10 * * * * lazar cd ~/agents/01_inbox && claude -p run.md >> logs/$(date +\%Y-\%m-\%d).log 2>&1

The prompt file references ../memory/clients.md so it knows which senders are existing clients vs cold prospects. Without that shared memory, every triage decision starts from zero.

What the classifier actually needs

  • A list of current client domains (so client emails never get triaged as "cold lead")
  • Your definition of a hot lead in one paragraph (budget signal, role, intent words)
  • A bucket of phrases that mean "junk" in your world (newsletters you actually read stay; cold pitches go)

Agent 2: Lead Qualifier — turning inbox noise into a ranked list

When a new contact form submission or a cold reply lands, this agent pulls the prospect's website, their LinkedIn if available, and any prior email history, then writes a short qualification memo: company size, likely budget band, fit score 1–5, recommended next action.

The output goes straight into a Notion database (a CSV works fine too — fancy CRM is not the point). The result: when you sit down in the morning you're not staring at raw inbox noise, you're staring at a ranked list.

# agents/02_qualifier/output_schema.yaml
company: string
employees_estimate: int
budget_band: [under_5k, 5k_25k, 25k_plus]
fit_score: 1-5
red_flags: [list]
recommended_action: [book_call, send_async_proposal, decline_politely, nurture]
memo: string  # 4-6 sentences

The structured output matters. If you let it return prose, you'll spend the saved time reading prose. Force a schema and the agent is forced to commit.

Agent 3: Proposal Writer — the two-hour job that becomes a fifteen-minute edit

Triggered manually after a discovery call. Drop the call transcript into ~/agents/03_proposal/inbox/, the agent reads it, pulls the client's stated goals and constraints, matches them against your service catalog in memory/services.md, and outputs a scoped proposal in your brand voice with three pricing tiers.

What used to be a two-hour writing job becomes a fifteen-minute edit. The trick: feed it a memory file with your past winning proposals — not your full archive. Three or four wins teach it your phrasing, your guarantees, your scope boundaries. Twenty proposals confuse it.

Without past-wins memory With past-wins memory
Generic three-tier output, hedged language Your actual phrasing, your guarantees verbatim
~45 min to edit ~15 min to edit
Reads like consultant-speak Reads like you wrote it tired but careful

The folder structure looks like this:

agents/03_proposal/
├── run.md              # the prompt
├── inbox/              # drop transcripts here
├── outbox/             # finished proposals land here
└── logs/

Agent 4: Invoicing — where solo businesses silently bleed money

This is the agent that pays for the whole stack. It runs on cron — first of the month plus weekly — and does three things:

  1. Generates invoices for recurring clients from a contract registry (memory/contracts.md)
  2. Sends them through your billing provider's API
  3. Chases late payers with escalating reminders at day 7, 14, and 21 past due

A setup like this comfortably handles north of 100 invoices a month with zero human touch unless something genuinely breaks. The escalation logic is the part nobody wants to build manually because it requires you to write the awkward "this is now 21 days overdue" email before you're emotionally involved with the specific client. The agent has no feelings, so it sends the email on day 21 every time.

# pseudocode for the chase loop
for invoice in get_open_invoices():
    days_late = (today - invoice.due_date).days
    if days_late in (7, 14, 21):
        template = load_template(f"reminder_day_{days_late}.md")
        send_email(invoice.client_email, template.render(invoice=invoice))
        log(f"reminder_sent_{days_late}", invoice.id)
    if days_late > 30:
        notify_telegram(f"MANUAL: {invoice.client} is {days_late} days late")

Note the day-30 handoff. The agent doesn't try to be a debt collector — it escalates back to a human for the genuinely difficult conversations. That boundary is what makes it trustworthy.

Agent 5: Content Repurposer — one input, three outputs

You record one long-form thing — a client call you have permission to repurpose, a Loom, a voice memo on a walk — and the agent fans it out into a LinkedIn post, a YouTube short script, and a newsletter section. Trigger is dropping the transcript into a watched folder.

The trick that makes this not feel like AI slop is memory/brand-voice.md: your actual past posts, the phrases you use, and the phrases you ban. Mine bans "game changer", "revolutionary", "in today's fast-paced world", and about a dozen other tells. Without a ban list, every output reads like a LinkedIn ghostwriter intern.

What goes in brand-voice.md

  • 5–10 of your best past posts (full text)
  • A "phrases I use" list (signature lines, callbacks)
  • A "phrases I ban" list (the AI tells)
  • Length and structure rules (e.g. "open with a concrete number, not a question")

Agent 6: Ops Dashboard — replacing the 20-minute morning ritual

Every morning at 7:00 this agent runs, pulls numbers from your billing system, CRM, and calendar, and posts a single Telegram message:

  • Revenue month-to-date
  • Overdue invoice total
  • Number of qualified leads in pipeline
  • Your three most important meetings today

One message replaces the 20-minute morning ritual of opening five dashboards. The reason it's a separate agent and not a feature of the others: it has a different failure mode. If the dashboard breaks, you miss a number. If the invoicing agent breaks, you miss revenue. Keeping them separate keeps the blast radius small.

Agent 7: The Self-Auditor — what separates a toy from a system you trust

This is the agent that separates a toy setup from one you can actually run a business on. Once a week it reads the logs of the other six agents, looks for failures, retries, weird outputs, anything skipped, and posts a report.

If the invoicing agent didn't send three invoices it expected to send, you find out on Sunday — not at the end of the month when a client says "I never got billed." If the triage agent has been silently misclassifying a vendor as a hot lead for two weeks, you find out before you've embarrassed yourself.

# Weekly Audit — Week of 2024-XX-XX
- 01_inbox: 1,247 emails processed, 4 errors (Gmail API timeouts, all retried OK)
- 02_qualifier: 38 leads scored, 1 manual override needed
- 03_proposal: 6 proposals generated
- 04_invoicing: 94 invoices sent, 7 reminders sent, ⚠️ 2 invoices SKIPPED — contract registry missing rate for ClientX
- 05_content: 12 outputs, 3 below quality threshold (flagged)
- 06_dashboard: 7/7 daily posts delivered

Without Agent 7, the other six become a black box. With it, you have a system that tells you when it's lying to itself.

The folder structure that lets them share memory

All seven agents live in one folder on one machine — in my case a home server running WSL Ubuntu, but a $5 VPS works fine. The shared memory/ directory is what stops you from having seven disconnected toys:

~/agents/
├── memory/
│   ├── clients.md         # current clients, domains, contacts
│   ├── services.md        # service catalog with pricing
│   ├── brand-voice.md     # for proposal + content agents
│   ├── contracts.md       # for invoicing agent
│   └── prospects.md       # qualifier writes here, triage reads it
├── 01_inbox/
├── 02_qualifier/
├── 03_proposal/
├── 04_invoicing/
├── 05_content/
├── 06_dashboard/
├── 07_auditor/
└── logs/

Every agent reads from memory/, some write to it. The qualifier writes new prospects; the inbox triage reads them so a hot lead from Monday is recognized as an existing prospect by Friday. This is the part most tutorials skip entirely, and it's the only reason the system compounds instead of fragmenting.

Why bizflowai.io helps with this

The seven-agent shape above is what we end up deploying for most clients at bizflowai.io — usually starting with agents 1 and 4 because they pay for themselves in the first month, then layering 2, 3, and 7 once the back-office plumbing is stable. The shared-memory folder pattern is the boring infrastructure piece that most teams underestimate; we treat it as the actual product and the agents as interchangeable workers on top of it.

Frequently asked questions

What is the 7-agent Claude Code stack for solo founders?

It's a back-office operating system made of seven Claude Code agents that automate roughly 90% of admin work for a solo agency or consultancy. Each agent owns one job: inbox triage, lead qualification, proposal writing, invoicing, content repurposing, an ops dashboard, and a seventh agent. Each runs on a set trigger (cron job, watched folder, or manual drop) so the founder can focus on client work.

How do I build an inbox triage agent with Claude Code?

Set a cron job to hit the Gmail API every 10 minutes. The agent classifies each thread into about six buckets — hot lead, existing client, invoice question, vendor, newsletter, junk — using a classifier prompt with your own definitions. Important threads get pushed to a Telegram channel with a one-paragraph summary and suggested reply that you approve with a tap. This typically saves a small consultancy about two hours per day.

How does a Claude Code invoicing agent stop late payments?

The agent runs on a cron schedule, usually first of the month and weekly thereafter. It generates invoices for recurring clients from a contract registry, sends them via your billing provider's API, and automatically chases late payers with escalating reminders at day seven, fourteen, and twenty-one past due. A setup like this handles north of 100 invoices a month with zero human touch unless something breaks.

Why does a lead qualifier agent matter for solo consultancies?

It converts raw inbox noise into a ranked decision list. When a contact form submission or cold reply arrives, the agent pulls the prospect's website, LinkedIn, and prior email history, then writes a qualification memo with company size, likely budget band, a 1-to-5 fit score, and a recommended next action. The output lands in a simple CRM like Notion so you start each day with prioritized leads.

How do I make a content repurposing agent avoid sounding like AI slop?

Feed the agent a style guide file containing your actual past posts, the phrases you commonly use, and phrases you explicitly ban. Trigger it by dropping a transcript — from a client call, Loom, or voice memo — into a watched folder. The agent then fans the source out into a LinkedIn post, YouTube short script, and newsletter section that match your real voice rather than generic AI phrasing.


Want more like this?

I publish practical AI automation, GenAI engineering, and faceless content workflows on YouTube every week.

Subscribe to bizflowai.io on YouTube — never miss a new tutorial.

Planning an AI automation project or need a second opinion on your architecture?

Connect with me on LinkedIn — Lazar Milicevic, GenAI Engineer & bizflowai.io Founder.

Visit bizflowai.io for our services, case studies, and AI consulting.

Frequently asked questions

What is the 7-agent Claude Code stack for solo founders?

It's a back-office operating system made of seven Claude Code agents that automate roughly 90% of admin work for a solo agency or consultancy. Each agent owns one job: inbox triage, lead qualification, proposal writing, invoicing, content repurposing, an ops dashboard, and a seventh agent. Each runs on a set trigger (cron job, watched folder, or manual drop) so the founder can focus on client work.

How do I build an inbox triage agent with Claude Code?

Set a cron job to hit the Gmail API every 10 minutes. The agent classifies each thread into about six buckets — hot lead, existing client, invoice question, vendor, newsletter, junk — using a classifier prompt with your own definitions. Important threads get pushed to a Telegram channel with a one-paragraph summary and suggested reply that you approve with a tap. This typically saves a small consultancy about two hours per day.

How does a Claude Code invoicing agent stop late payments?

The agent runs on a cron schedule, usually first of the month and weekly thereafter. It generates invoices for recurring clients from a contract registry, sends them via your billing provider's API, and automatically chases late payers with escalating reminders at day seven, fourteen, and twenty-one past due. A setup like this handles north of 100 invoices a month with zero human touch unless something breaks.

Why does a lead qualifier agent matter for solo consultancies?

It converts raw inbox noise into a ranked decision list. When a contact form submission or cold reply arrives, the agent pulls the prospect's website, LinkedIn, and prior email history, then writes a qualification memo with company size, likely budget band, a 1-to-5 fit score, and a recommended next action. The output lands in a simple CRM like Notion so you start each day with prioritized leads.

How do I make a content repurposing agent avoid sounding like AI slop?

Feed the agent a style guide file containing your actual past posts, the phrases you commonly use, and phrases you explicitly ban. Trigger it by dropping a transcript — from a client call, Loom, or voice memo — into a watched folder. The agent then fans the source out into a LinkedIn post, YouTube short script, and newsletter section that match your real voice rather than generic AI phrasing.