# Agencies

The rest of this wiki is written for the creator running their own agent. This page is for the operator running agents that belong to someone else — an agency with several clients under one connection. Everything else (building, measuring, improving) works the same; this covers only what changes when the clients are many and none of them is yours. To work on a specific client, name them by their Instagram @handle (see [connecting](connecting.md)).

The requests on this page are a proven starting point: copy them as-is, or edit and improve them for your case.

---

### Onboard a new client

**What you get:** an agent that's live before the window closes. A client who doesn't see their agent running within the **first 48 hours** almost never gets it running later — activation isn't decided by conviction, it's decided by inertia.

**Just say:**
> New client: @[handle]. Pull everything from their onboarding — the processed bio, their posts, the sample conversations, and the sign-up form. Tell me what we ALREADY know and what's genuinely missing: 5 questions max, not twenty. If you can infer something from their posts, infer it and mark it as inferred.

**Tips:**
- The goal of onboarding isn't a perfect agent — it's an agent that's alive, however small, before the window closes.
- The Day 2 wiring (contact limit, follow-up, operator alert) gets set up in one go — see [automation & follow-ups](automation-and-follow-ups.md).

<details>
<summary>View details</summary>

**When to use it:** the day the client signs. Not the following Monday.

**What happens:** Claude builds the brief without making the client answer twenty questions, and the calendar follows from there. **Day 1:** ask for the Meta account linking — it's the only step you can't do for them (it requires their direct authorization, takes two minutes) and it's the task that sinks the most onboardings: request it the day they sign and don't let it go. **Day 2:** write the agent — archetype by price point, voice cloned from their real DMs (see [creating agents](creating-agents.md)) — and decide the one thing Claude can't guess: **what THIS client's conversion event is** (booked a call? bought? left a phone number?). All the wiring hangs off that. **Day 3:** five synthetic conversations, read by hand ([test it before real people see it](analyzing-and-improving.md)). **Day 4 and every day of the first week:** the daily loop — quick diagnostic, read the last 24 hours of real conversations in full, and check that your automations actually fired.

#### Step by step: the daily loop of the first week (day 4 onward)

Publishing isn't finishing. The publish saying "verified" means exactly one thing: **the messages are alive** — not that the system is complete. Before entering the loop, one day-1 item that can't be left hanging: **confirm the Meta linking actually got done before you go to sleep** — send them the link and the walkthrough; the client puts it off not because it's hard but because they can, and the 48-hour clock keeps running anyway.

The daily ritual is three steps, **in this order**:

1. **Quick diagnostic.** Free, thirty seconds: ask for the score out of 100 and what's left unwired. It tells you, defect by defect, what's missing around the messages. The full production prompt is in [Recipes](recipes.md#the-full-agent-x-ray-in-thirty-seconds).
2. **The last 24 hours of real conversations, read IN FULL.** Not the summary: in full. Three questions while you read — did the agent do anything odd? did it deliver the resources it promised? does the tone sound like the client? This is where the things no synthetic showed you surface.
3. **Automation activity over the last 7 days.** Did they actually fire, or are they on and sitting at zero? An automation that never fired is a safety net that doesn't exist (see [automation & follow-ups](automation-and-follow-ups.md)).

Always close with a ONE-line verdict: is the agent healthy, or is there something I have to fix today?

</details>

---

### Launch in stages

**What you get:** a launch that doesn't break the client's trust in the first week. Turning everything on at once means the agent starts receiving things that were never in the script — and the model improvises in front of the client.

**Just say:**
> We're launching @[handle] in stages: this week, turn on the keywords only. Track which odd scenarios actually show up, so we can wire the limits for them next week.

**Tips:**
- Loose on purpose: it's better for the agent to enter and get cut off cleanly by a limit than to lose a good lead to a filter that's too strict.

<details>
<summary>View details</summary>

**When to use it:** on every new client launch. There is one legitimate exception — a big account, a tightly segmented audience, a client who knows what they're doing — but it's the exception, not the default.

**What happens:** **week 1** — keywords only: the traffic coming in is traffic you already understand, and the number of things that can go wrong is small. **Week 2** — the limits for the scenarios that actually appeared with this client, instead of imagining them. **Week 3** — all messages, with a **loose** intake filter, and only if the first two weeks' numbers hold up.

</details>

---

### Which clients can I operate on

**What you get:** the map of your connection — which clients you can manage, and which Instagram and WhatsApp accounts each one has connected.

**Just say:**
> Which clients can I operate on with this connection? And for @[handle]: which Instagram and WhatsApp accounts do they have connected, whether or not they're attached to an agent?

**Tips:**
- Careful: two similar questions return different things — the accounts **of the client** (everything they've linked, attached or not) and the accounts **of an agent** (what that agent has attached). On a freshly created agent, the second one comes back empty, and that does **not** mean the client has nothing connected. Always ask for the *client's* accounts when you're setting up.

<details>
<summary>View details</summary>

**When to use it:** when you start, and every time you set up a new agent. This is where the number-one onboarding confusion lives.

**What happens:** Claude lists your clients by @handle and each one's Meta accounts.

**More tips:**
- With an agency connection, every request will ask you to say which client you're operating on. That's not a nuisance: it's exactly the mechanism that lets you read from one client and publish to another.
- Before writing an agent from scratch, ask "what changes did other agents in this niche make this month?" — it brings you what already worked for a peer.

</details>

---

### The daily portfolio audit

**What you get:** today's flags across your ENTIRE portfolio — which client is at risk, what the concrete problem is, and what fixes it — without opening the accounts one by one. You find out the same day, not when the client writes in angry.

**Just say:**
> Audit my WHOLE portfolio with the last 7 days of metrics — with an agency connection that comes back in a single call, one row per client, don't loop client by client. Flag the ones with high risk or a sharp drop versus last week, run the quick diagnostic on the 3 worst, and check for all of them whether the automations actually fired. If a client is healthy, don't mention them: I want the list of what needs action, not a report on everything.

**Tips:**
- The exit criterion matters as much as the sweep: ask only for what needs action. A report on fifteen healthy clients is noise you'll stop reading by tomorrow.
- With Claude Code, this same request gets scheduled every morning at 8 — the flags are waiting, written, before you open your laptop.

<details>
<summary>View details</summary>

**When to use it:** every morning. It's literally how the Ninjo team runs its own portfolio internally.

**What happens:** Claude sorts the portfolio by risk score, runs the quick diagnostic (free — see [the agent X-ray](analyzing-and-improving.md)) on the worst ones, flags in red any automation that's on but never fired — a safety net that doesn't exist — and closes with "today, tackle these 3, in this order."

</details>

---

### One report per client, scheduled

**What you get:** a weekly report for every client — a self-contained HTML file, ready to send them — that builds itself every Monday. The report that currently eats your first Monday of the month, built once and forever.

**Just say:**
> Build me the weekly report for each client in my portfolio: volume, funnel by stage, performance by source, objections, the comparison against last week with the change, and the hot leads who never booked — the money left on the table. One self-contained HTML file per client, with their name and the generation date clearly visible. If a data point doesn't come through it goes in as "no data" — don't estimate a single number, the client sees this. Leave it scheduled for every Monday at 8 and tell me exactly what you created and how I turn it off.

**Tips:**
- It needs Claude Code (see [connecting](connecting.md)) to leave the routine scheduled.
- The two honesty rules always go in the request: "if a data point doesn't come through it goes in as no data — the client sees this" protects the relationship, and "tell me what you created and how I turn it off" lets you stop the routine without archaeology.
- The hot leads who never booked are the section the client reads most: it's visible money, not a metric.

<details>
<summary>View details</summary>

**When to use it:** as soon as your portfolio passes two clients.

**What happens:** Claude Code pulls each client's data, builds one file per client with the data baked inside, and leaves the routine scheduled. Every Monday the reports wake up fresh, with the week-over-week comparison and a closing "what we do this week" — 2 or 3 concrete actions, not a summary.

</details>

---

### Replicate your best-performing agent

**What you get:** three days of onboarding work turned into one afternoon. When an agent works for one client, the thing that works is **an asset of yours** — and a single connection lets you read it from one client and publish it to another.

**Just say:**
> I want to replicate what's already working for one client onto @[destination]. Step 1: pick the winner with data, not my intuition — which of my clients has the best booking rate over 30 days? Step 2: read its full configuration and tell me in 5 points WHAT makes it win — when it sends the link, how it opens, how it handles "it's expensive," how it qualifies. Step 3: write the new agent taking the winner's STRUCTURE, but with the destination client's program, price, links, and voice (I'll paste their real DMs). Don't copy the winner's content as-is. Before publishing: show me the conceptual diff — what I took from the winner and what's the destination's own — and run 5 synthetics that I'll read myself.

**Tips:**
- The ethics rule goes in the request explicitly, because without it it gets broken on its own: success stories, personal history, and testimonials belong to each client. Copying them from one to another isn't a shortcut — it's a lie the lead discovers on the first call.
- A replicated agent without its wiring (contact limit, follow-up, operator alert) is half an agent — wire it the same as the winner (see [automation & follow-ups](automation-and-follow-ups.md)).

<details>
<summary>View details</summary>

**When to use it:** with every new client in a niche where you already have an agent that converts.

**What happens:** Claude picks the model agent with metrics, distills what makes it win, and rewrites for the destination client using their own onboarding context. What travels is **the structure that already proved it converts** — the flow, the link timing, the objection handling. The content doesn't travel.

</details>

---

### Prove how much money the agent touched

**What you get:** the number that retains clients: "of everything you billed this month, the agent touched this much." In three tiers — booked via the agent, talked to the agent and bought without booking, no contact — so the number survives any objection.

**Just say:**
> I'll paste my buyer list for the month (name, email, Instagram, phone, amount paid). Cross it against my contacts — try by email, then by Instagram username, then by phone — and tell me what percentage of the month's revenue the agent touched, in three tiers: booked via the agent, talked to the agent and bought without booking, no contact. Minimum bar to count: 5 agent messages and first contact before the purchase date. If a buyer doesn't match, they go in "no contact" — don't force it. And never say "the agent closed the sale": say "the agent worked the buyer."

**Tips:**
- The framing is mandatory: the agent qualifies and warms, the human team closes. "Worked the buyer," never "closed the sale."

<details>
<summary>View details</summary>

**When to use it:** before every renewal, and every time the client asks "is this actually working?". Answering with conversations and bookings is answering with exactly what doesn't move their needle.

**What happens:** Claude deduplicates the buyers, looks each one up among your contacts, verifies the agent genuinely talked to them and did so *before* the purchase, and returns the dollar total per tier, the share of the month's revenue, and the 10 biggest buyers with their tier.

**More tips:**
- The finding that reframes everything: in a real case, the strict cross against bookings alone showed 34% of revenue — the full cross showed 69%. Plenty of people buy over DM without ever booking (the second-biggest buyer that month: 104 messages with the agent, zero calls). Measuring bookings alone hides half the value.

</details>

---

← Back to the [wiki home](index.md)
