What the Three Commands Do
- /agency-avatar interviews you, scores 15 local trades, and locks one. Writes
avatar.md. - /agency-offer picks the one automation you build free, and puts a real dollar number on it. Writes
offer.md. - /agency-outreach scrapes the leads, verifies the emails, writes four emails, builds the campaign. Then stops.
Each one reads what the last one wrote. Run them in order or they won't work.
HOW TO INSTALL
Three Minutes, No Terminal Skills Needed
You need Claude Code. It's free to install and runs on Mac and Windows.
Open Claude Code in whatever folder you want your agency to live in. Then copy each of the three prompts below and paste them in, one at a time. Claude creates the folders and the files for you. You don't touch the terminal.
When all three are in, restart Claude Code, type a forward slash, and you'll see all three commands in the list.
Prefer doing it by hand? The files go at .claude/skills/agency-avatar/SKILL.md, .claude/skills/agency-offer/SKILL.md, and .claude/skills/agency-outreach/SKILL.md.
CONNECT FIRST
Two Required Connectors, One Optional
These are MCP connectors. You add them to Claude once and they work forever.
- Apify (required) - finds the businesses and digs the email off their website. Pay as you go, about a penny a lead.
- Instantly (required) - sends the emails, verifies them, warms the inboxes.
- Tavily (optional) - researches what owners in your trade actually complain about, so the offer is real instead of invented.
The commands check for these and tell you which one is missing. They won't silently fail.
DO THIS BEFORE ANYTHING
The Part That Decides Whether You Have a Business
- Get a separate sending domain. If your business is yourname.com, buy yournameHQ.com and send from that. A flagged cold campaign takes the whole domain with it, and you do not want your real inbox on the other end of that.
- Get 3 inboxes minimum. Each one safely sends about 30 a day. Three is 90 a day, which is your floor.
- Turn warmup on for 14 days before your first campaign. Not 3 days. Fourteen.
The third command checks all of this before it spends a cent on scraping. If you skip it, it stops you.
DON'T SKIP THIS
The Legal Footer Nobody Talks About
US law (CAN-SPAM) says every commercial email has to carry a real physical mailing address and a working opt-out. Fines run into five figures per email. Most cold email gurus never mention it.
The command asks you for both and puts them at the bottom of all four emails:
Your Name, Your Business
123 Street, City, State ZIP
Not interested? Reply STOP and I won't email again.
A home address or a registered mailbox is fine. Honor every removal request the same day. If you're emailing into Canada or the EU, the rules are stricter than the US and the command will tell you so.
STRAIGHT TALK
About That 40% Open Rate
I get 40%+ opens because the list is verified and the emails are plain text with no links and no tracking pixels.
Here's the catch nobody mentions. If you turn open tracking off, you can't see your open rate at all. The pixel is the thing that measures it.
So do this. Leave open tracking on for your first batch only, so you get a read on whether your list and subject line work. Once you trust it, turn it off for good and watch replies instead. Replies are the only number that pays you.
COMMAND 1 OF 3
/agency-avatar - Pick One Niche
Asks your country and who you know, scores 15 local trades on money and pain, and locks one trade plus one size of shop. Paste this into Claude Code:
Create a file at .claude/skills/agency-avatar/SKILL.md in this project, with exactly this content:
---8<--- START OF FILE ---8<---
---
description: "Step 1 of 3. Pick the exact type of local or home service business your AI automation agency will target. Trigger with /agency-avatar."
---
# /agency-avatar — Pick Who You Sell To
You are helping someone launch an AI automation agency that sells to local and home service businesses. This is STEP 1 of 3. Your only job is to lock in ONE avatar and write it to a file the other two steps read.
Do not skip ahead. Do not write emails here. Do not scrape anything here.
---
## Step 0 — Check the setup, then check for an existing avatar
This is the first of three commands. The other two need connectors, so say this once, up front, in a short list:
> This runs on three MCP connectors. Apify (required, finds the businesses), Instantly (required, sends the email), Tavily (optional, researches the offer). You don't need them for this step, but `/agency-offer` and `/agency-outreach` will.
Then look for `agency-config/avatar.md` in the current project folder.
- If it exists, show the user what is in it and ask: "You already picked {avatar}. Keep it or start over?"
- If they keep it, stop here and tell them to run `/agency-offer` next.
- If they start over, continue.
---
## Step 1 — Ask three questions, one at a time
Wait for each answer. Never dump all three at once.
**Question 1:** "What country are you selling into?"
That is the only geography question. Do not ask for a city. You are picking a country and a trade, nothing narrower. Step 3 handles the city list on its own.
If they name a country where you cannot send cold email without opt-in consent (Canada under CASL, most of the EU and UK under GDPR), say so in one line and ask if they want to switch to the US or proceed knowing the rule. Their call, but they need to know it before they buy inboxes.
**Question 2:** "Do you have any experience, family, or friends in a specific trade? Even loose. Plumbing, roofing, dental, legal, anything."
- If yes, that trade gets a big bump in scoring. Warm context beats cold math every time.
- If no, that is fine. Say so and move on.
**Question 3:** "Are you comfortable getting on a phone call with a business owner, or do you want to stay behind email as long as possible?"
- Phone-comfortable opens up higher-ticket trades like roofing and legal.
- Email-only pushes toward trades with office staff who actually read email.
---
## Step 2 — Score the candidate list
Use this list. Do not invent new trades unless the user names one.
| Trade | Avg job value | Volume of jobs | How bad their follow-up is | Easy to find on Maps |
|---|---|---|---|---|
| HVAC | High | High | Very bad | Yes |
| Plumbing | Medium | Very high | Very bad | Yes |
| Roofing | Very high | Low | Bad | Yes |
| Electrical | Medium | High | Bad | Yes |
| Garage door | Medium | High | Very bad | Yes |
| Pest control | Low, recurring | Very high | Bad | Yes |
| Landscaping / lawn | Low, recurring | Very high | Very bad | Yes |
| Pool service | Low, recurring | High | Very bad | Yes |
| Dentists | High | High | Medium | Yes |
| Med spas | High | High | Medium | Yes |
| Chiropractors | Medium, recurring | High | Medium | Yes |
| Personal injury lawyers | Very high | Low | Medium | Yes |
| Family / estate lawyers | High | Medium | Bad | Yes |
| Auto repair shops | Medium | Very high | Very bad | Yes |
| Moving companies | High | Medium | Very bad | Yes |
Score each candidate 1 to 10 on four things:
1. **Money per job.** Can they afford $1,500 a month without blinking?
2. **Pain level.** How much money are they leaking right now from bad follow-up?
3. **Findability.** How cleanly can you pull them off Google Maps across a whole country?
4. **Warm advantage.** Did the user say they know someone in this trade?
Add the four numbers. Show the top 5 in a small table with the total.
---
## Step 3 — Recommend one and explain it in plain words
Pick the winner. Say it in one line.
Then give three bullets:
- Why this one, in plain English. No jargon.
- Roughly how many of them exist in that country.
- The honest downside. Every trade has one. Say it.
Then ask: "Lock this in, or do you want a different one from the list?"
**Default when the user has zero warm advantage: HVAC.**
Reason: high job value, they run on emergencies, and almost none of them answer the phone after 5pm. That gap is the whole business.
---
## Step 4 — Write the file
Once they confirm, create `agency-config/avatar.md`:
```markdown
# Avatar
**Trade:** {trade}
**Country:** {country}
**Country code:** {two letter code, e.g. US}
**Google Maps search terms:** {3 to 5 exact search strings}
**Business size filter:** {review count range}
**Why this one:** {one sentence}
**Known downside:** {one sentence}
**Locked on:** {today's date}
```
Two things that decide whether the scrape works:
**Search terms.** Write the exact phrases a customer types into Google Maps, not the industry name. "air conditioning repair" pulls better than "HVAC services." Give 3 to 5 of them.
**Review count range.** Default 20 to 250 unless the user has a reason to change it.
- Under 20 reviews means they are too new and too broke to pay you.
- Over 250 means they already have an office manager and a system.
---
## Step 5 — Hand off
Say exactly this:
"Avatar locked. Next run `/agency-offer` to pick the one thing you will automate for them."
Then stop. Do not run the next step yourself.
---8<--- END OF FILE ---8<---
Create the folders if they don't exist. Don't change anything inside the file.
COMMAND 2 OF 3
/agency-offer - Pick One Thing to Fix
Reads what owners actually complain about, scores 5 automations you can build fast, and turns the winner into a free build with real dollar math behind it. Paste this in:
Create a file at .claude/skills/agency-offer/SKILL.md in this project, with exactly this content:
---8<--- START OF FILE ---8<---
---
description: "Step 2 of 3. Pick the ONE service to automate for your avatar, and turn it into a free-build offer that gets replies. Trigger with /agency-offer."
---
# /agency-offer — Pick The One Thing You Automate
This is STEP 2 of 3. Your job is to pick ONE automation, put a dollar number on it, and write it to a file. Nothing else.
Do not write emails here. Do not scrape here. That is step 3.
---
## Step 0 — Load the avatar
Read `agency-config/avatar.md` from the current project folder.
If it does not exist, stop and say: "Run `/agency-avatar` first. I need to know who you are selling to."
---
## Step 1 — Check what they actually complain about
Use Tavily to search for real complaints from owners in this trade. Run 2 searches:
1. `{trade} owners biggest problem missed calls leads {current year}`
2. `reddit {trade} business owner losing customers follow up`
Pull out 3 real quotes or pain points. Show them to the user as bullets. This is not optional. It keeps the offer honest instead of made up.
If Tavily is not connected, say so in one line and move on with the menu below.
---
## Step 2 — Score the automation menu
These five are the only options. They are proven, they are easy to build with AI, and a local business owner understands all of them in one sentence.
**1. Missed call text back**
- What it does: business misses a call, the caller gets a text in 30 seconds asking what they need.
- Why it wins: every trade loses money here and they all know it.
- Build difficulty: easy.
- Money it saves: highest of the five for phone-driven trades.
**2. After-hours booking bot**
- What it does: answers the website chat or the phone after 5pm and books the job.
- Why it wins: emergencies do not happen 9 to 5.
- Build difficulty: medium.
- Money it saves: high for HVAC, plumbing, garage door, moving.
**3. Quote follow-up sequence**
- What it does: sends a quote, then chases it automatically for 14 days.
- Why it wins: most owners send one quote and never follow up once.
- Build difficulty: easy.
- Money it saves: highest for roofing, moving, remodel, legal.
**4. Review request automation**
- What it does: texts every finished job asking for a Google review.
- Why it wins: more reviews means more Maps ranking means more calls.
- Build difficulty: easiest of the five.
- Money it saves: slow burn, but it is the easiest yes.
**5. No-show and reschedule recovery**
- What it does: reminds, confirms, and rebooks anyone who ghosts.
- Why it wins: empty chairs and empty truck slots cost the same as a lost sale.
- Build difficulty: medium.
- Money it saves: highest for dentists, med spas, chiropractors.
Score each on three things, 1 to 10:
- How much this specific avatar bleeds from it
- How fast you can build it (favor fast, the free build has to be quick)
- How easy it is to explain in one sentence
---
## Step 3 — Recommend one
Pick the winner. Say it in one line.
Then give:
- One sentence explaining what it does, the way you would say it to a guy in a truck.
- The dollar math. Show your work in plain numbers.
- What you actually need from them to build it. Usually just their phone number and their calendar.
**The dollar math has to be real.** Example for HVAC missed calls:
> "You miss about 10 calls a week. A service call is worth $350. If you win back just 2 of those 10, that is $700 a week. $36,400 a year."
Ask them to sanity check the numbers for their market. If they push back, adjust.
Then ask: "Lock this in?"
---
## Step 4 — Build the free-build offer
The offer is always the same shape:
> "I will build you one of these for free. If it works, we talk. If it does not, you keep it anyway."
Write these four things and show them to the user for approval:
1. **The one-line version.** What you build, free, for them. Under 15 words.
2. **The proof line.** The dollar number from step 3.
3. **The ask.** What you need to build it. Keep it to one thing if possible.
4. **The catch line.** Why it is free, said honestly. "I am building case studies" is fine. "I want testimonials from real shops in {country}" is better.
Do not make the free build bigger than 90 minutes of work. If it takes longer, it stops being free and starts being a job.
---
## Step 5 — Write the file
Create `agency-config/offer.md`:
```markdown
# Offer
**Automation:** {name}
**What it does (plain words):** {one sentence}
**Dollar math:** {the calculation, written out}
**Free build promise:** {one line, under 15 words}
**What you need from them:** {one thing}
**Why it is free:** {one honest sentence}
**Build time:** {under 90 minutes}
**Locked on:** {today's date}
```
---
## Step 6 — Hand off
Say exactly this:
"Offer locked. Next run `/agency-outreach` to find the businesses and build the email campaign."
Then stop.
---8<--- END OF FILE ---8<---
Create the folders if they don't exist. Don't change anything inside the file.
COMMAND 3 OF 3
/agency-outreach - Find Them, Write It, Stop
The big one. Checks your inboxes are warmed, scrapes Google Maps across your country, verifies every email, splits the list by whether it found a real first name, writes four emails, and builds the campaign paused. Paste this in:
Create a file at .claude/skills/agency-outreach/SKILL.md in this project, with exactly this content:
---8<--- START OF FILE ---8<---
---
description: "Step 3 of 3. Scrape local businesses with Apify, write a cold email plus 3 follow-ups, and build a PAUSED Instantly campaign for approval. Never sends without a human yes. Trigger with /agency-outreach."
---
# /agency-outreach — Find Them, Write It, Stop
This is STEP 3 of 3. You scrape the leads, write the emails, build the campaign in Instantly, and then **you stop**.
## The one rule that never bends
**You never call `activate_campaign`. Ever.**
You build the campaign paused, you show the user the emails and a sample of the leads, and you wait. Even if they said "go ahead" earlier in the conversation. The user clicks send themselves inside Instantly. A beginner who lets an agent auto-send cold email will burn their sending domain on day one and never recover it.
---
## Step 0 — Load the config
Read both files from the current project folder:
- `agency-config/avatar.md`
- `agency-config/offer.md`
If either is missing, stop and say which one, and which command creates it.
### Tool names
This skill needs the **Apify** and **Instantly** MCP connectors. The tool names below (`list_accounts`, `verify_email`, `create_campaign`, `add_leads_to_campaign_or_list_bulk`, `call-actor`, `fetch-actor-details`) are the defaults. If a name does not resolve in this session, search the available tools for the closest match rather than guessing or giving up. If a whole connector is missing, say which one and stop.
---
## Step 1 — Preflight the sending setup
Do not scrape a single lead until this passes. Scraping is cheap. A dead domain is not.
Call `list_accounts` on Instantly.
Check four things and report each as pass or fail in a short list:
1. **Do they have any inboxes at all?** If zero, stop. See the setup block below.
2. **How many?** Under 3 is not enough. Each inbox safely sends about 30 cold emails a day. 3 inboxes is 90 a day, which is the floor for this to work.
3. **Is warmup on for each one?** If warmup is off, stop. Tell them to turn it on with `accounts_warmup_enable`.
4. **How long has warmup been running?** Under 14 days means the inbox is not ready. Tell them the date they can start.
If any check fails, print this and stop:
> **Before you can send anything, you need this from Instantly:**
> - A paid Instantly plan. The Growth plan is the normal starting point.
> - At least 3 sending inboxes on a **separate domain** from your main one. If your business is `yourname.com`, buy `yournameHQ.com` or `getyourname.com` and send from there. Never send cold email from the domain your real mail lives on.
> - Warmup turned on for every inbox, running for 14 days before your first campaign.
> - A daily limit of 30 per inbox. Not 50. Not 100.
>
> Instantly can sell you the domains and pre-warmed inboxes directly under "Done For You" if you do not want to set it up yourself.
---
## Step 2 — Scrape the businesses
Ask one question first: "How many businesses do you want in this first batch?"
Recommend 200. Reason: at 90 emails a day it is a clean two-week campaign, and it is enough volume to tell you whether the offer works without spending real money.
### Build the city list first
`avatar.md` gives you a country, not a city. Google Maps search is geo-bounded, so you cannot query a whole country in one shot. You have to spread the batch across cities.
Generate the 15 largest metro areas in that country. Split the batch evenly across them. For a 200 lead batch that is about 13 businesses per city.
Why spread instead of draining one city: one city of HVAC shops runs out fast, and if the offer works you want room to scale without changing anything. It also keeps you from hammering the same market with four campaigns in a row.
Show the user the city list before you run anything. One line: "Pulling from these 15 metros. Want me to swap any out?"
Keep the list in the campaign name so you know what has been burned already.
### Then run the scrape
Use the Apify actor **`lukaskrivka/google-maps-with-contact-details`**. It is an official Apify actor with 87k users. It scrapes Google Maps, then visits each business website and pulls the email and socials.
Before your first run, call `fetch-actor-details` on it with `inputSchema: true`. The schema has 26 fields and changes over time. Do not run it from memory.
Run it once per city. If you are running more than 5 cities, use **`lukaskrivka/google-maps-scraper-orchestrator`** instead. It is a free official actor that runs many locations in parallel against a saved task, which is much faster than looping one at a time.
Core input, built from `avatar.md`:
```json
{
"searchStringsArray": ["{search terms from avatar.md}"],
"locationQuery": "{one city from the city list below}",
"maxCrawledPlacesPerSearch": {per city batch size divided by number of search terms},
"countryCode": "{country code from avatar.md}",
"language": "en",
"skipClosedPlaces": true,
"scrapePlaceDetailPage": true
}
```
Turn on the contact enrichment add-on so it crawls the websites for emails. Turn on the leads enrichment add-on so it tries to find a real named person at the business. Check the current field names in the schema you just fetched.
**Cost check, before you run anything.** Roughly $0.004 per business plus $0.002 to enrich, so 200 businesses is about $1.20. Show the user the estimate and wait for a yes. This is their money.
Always pass a hard spend cap so a bad input cannot run up a bill:
```
callOptions: { maxTotalChargeUsd: <2x your estimate, rounded up> }
```
If a run comes back with far fewer results than expected, stop and tell the user before launching more runs. Do not loop retries.
---
## Step 3 — Clean the list
Pull the dataset. Then throw things away. This is the most important step and the one people skip.
**Drop any record that:**
- Has no email at all
- Has an email starting with `info@`, `contact@`, `sales@`, `support@`, `hello@`, or `admin@` **only if** you have a better one for that business. If it is the only email, keep it and mark it generic.
- Falls outside the review count range in `avatar.md`
- Is a national chain or a franchise HQ
- Has a `.gov` or `.edu` domain
- Is a duplicate email or a duplicate domain
**Then verify every survivor.** Run each email through Instantly's `verify_email`. Keep only the ones that come back valid. Drop catch-all and risky ones for this first batch. You can test them later once the domain has a track record.
Expect to lose 50 to 60 percent of the scrape between the drops and the verify. That is normal and it is the point. Report the funnel to the user as four numbers:
> Scraped 200 → had an email 138 → passed the filters 96 → verified 71
---
## Step 4 — Split the list in two
Google Maps gives you a business name, not an owner's name. The enrichment add-on finds a real first name maybe half the time.
**Never send `Quick question {{firstName}}` with a blank first name.** A subject line that reads "Quick question ," is an instant delete and it tells them a robot sent it.
So split:
- **List A — has a real first name.** Subject: `Quick question {{firstName}}`
- **List B — no first name.** Subject: `Quick question about {{companyName}}`
Build two campaigns, same body, different subject. Tell the user how many landed in each.
Sanity check every first name before it goes in List A. If the enrichment returned "Manager", "Owner", "Service", "Info", or anything that is clearly not a human name, move that lead to List B.
---
## Step 5 — Write the emails
Four emails. First one on day 0, then one every 2 days.
Rules for all four:
- Under 90 words. Every one of them.
- Plain text. No HTML styling, no images, no links in email 1. Links in the first email hurt deliverability.
- Sixth-grade reading level. These are contractors, not marketers.
- No em dashes. They are the number one tell that a robot wrote it.
- No "I hope this email finds you well." No "I wanted to reach out."
- One idea per email. One ask per email.
- Write it like a text message from a person who is busy.
### The legal footer — not optional
Before writing anything, ask the user for two things and stop until you have both:
1. **A real physical mailing address.** A home address, an office, or a registered mailbox. It has to be real.
2. **How they want people to opt out.** "Reply STOP" or "reply and I'll remove you" is fine for this volume.
Put both at the bottom of **every** email in the sequence, on their own lines, small and plain:
> {Sender name}, {Business name}
> {Street, City, State ZIP}
> Not interested? Reply STOP and I won't email again.
This is US CAN-SPAM law: commercial email must carry a valid physical postal address and a working opt-out, and you must honor removals within 10 business days. Fines run to five figures per email. Instantly can auto-append this if the user sets it up under their workspace settings, but confirm it is there either way. Do not write a sequence without it.
If the avatar country is Canada (CASL) or in the EU or UK (GDPR), tell the user in one line that those regimes are stricter than CAN-SPAM and they should confirm their basis for contacting before launching. Say it once, then continue. It is their call, not yours.
Honor every removal request immediately. Add the address to Instantly's blocklist with `blocklist_create` the moment one comes in.
### Email 1 — day 0
Structure:
1. One line that proves you looked them up. Something real from the scrape: their review count, their city, a service they list.
2. One line naming the problem. Use the dollar math from `offer.md`, shortened.
3. The free build offer, in one line.
4. A tiny ask. "Want me to build it?" or "Worth a look?"
The ask has to be small. Not a call. Not a demo. Just a reply.
### Email 2 — 2 days later
Same thread, so no new subject. Add ONE piece of proof that was not in email 1. A specific number, or what the build actually includes. Re-ask.
### Email 3 — 2 days later
Flip it. Address the reason they did not reply. Usually "you probably already have something for this." Say that out loud, then give the one thing yours does that theirs does not. Re-ask.
### Email 4 — 2 days later
The breakup. Three lines maximum.
- You have not heard back, so you will stop.
- Leave the free offer open with no expiry.
- One line asking if there is someone else there who handles it.
Breakup emails get the second-highest reply rate of the four. Do not make it bitter or guilt-trippy. Keep it warm and short.
### Show the user before you build anything
Print all four emails in full. Then ask: "Want me to change anything before I load these into Instantly?"
Wait for a real answer. Do not proceed on silence.
---
## Step 6 — Build the campaign, paused
Call `create_campaign` once per list (A and B).
```
name: "{Trade} {Country} {batch date} - {Offer} - List A"
email_list: [the verified sending inboxes from step 1]
daily_limit: 30
email_gap: 12
stop_on_reply: true
stop_on_auto_reply: true
open_tracking: false
link_tracking: false
text_only: true
sequences: [{ steps: [
{ type: "email", delay: 0, variants: [{subject, body}] },
{ type: "email", delay: 2, variants: [{subject: "", body}] },
{ type: "email", delay: 2, variants: [{subject: "", body}] },
{ type: "email", delay: 2, variants: [{subject: "", body}] }
]}]
```
Why these settings:
- `open_tracking` and `link_tracking` off, `text_only` on. Tracking pixels and rewritten links are the fastest way into spam. You give up open rates. Replies are the only number that matters anyway.
- `stop_on_reply` on. Nothing worse than a follow-up landing after someone already said yes.
- Empty subject on steps 2 through 4 keeps them in the same thread.
- `email_gap: 12` spaces sends out so they do not fire in a burst.
Then `add_leads_to_campaign_or_list_bulk` with `skip_if_in_workspace: true` so you never double-email someone from a previous batch.
**A campaign created this way is inactive by default. Leave it that way.**
---
## Step 7 — Hand it over and stop
Print exactly this shape:
> **Built and paused. Nothing has been sent.**
>
> - Campaign A: {n} leads, subject `Quick question {{firstName}}`
> - Campaign B: {n} leads, subject `Quick question about {{companyName}}`
> - Sending from: {inboxes}
> - Pace: {n} emails a day. This batch takes about {n} days.
> - Cost of the scrape: ${n}
>
> **Do this now:**
> 1. Open Instantly and read the first email one more time out loud.
> 2. Send a test to yourself. Check it on your phone, not your laptop.
> 3. Hit Launch when you are happy.
>
> Check replies in 3 days. If you get under 2 percent replies, the offer is the problem, not the email. Run `/agency-offer` again and pick a different automation.
Then stop. Do not offer to activate it. Do not activate it if they ask in the same breath. Tell them to click it themselves.
---
## If they come back with results
- **Replies under 1 percent:** the offer is wrong. Back to `/agency-offer`.
- **Replies 1 to 3 percent:** normal for a first batch. Scale the list, keep the emails.
- **Replies over 5 percent:** the offer is working. Run this again with the next 15 cities down the list.
- **Bounces over 3 percent:** stop everything. The verify step got skipped or the list is stale. Do not send another email until it is under 2 percent.
---8<--- END OF FILE ---8<---
Create the folders if they don't exist. Don't change anything inside the file.
HOW TO RUN IT
Day 1 to First Replies
Day 1 Buy the sending domain. Set up 3 inboxes.
Turn warmup on.
Day 1 Run /agency-avatar. Takes 5 minutes.
Day 1 Run /agency-offer. Takes 5 minutes.
Day 2-14 Warmup runs. Build the free automation
you're giving away, so you can deliver
the same day someone replies.
Day 15 Run /agency-outreach. It scrapes, cleans,
verifies, and writes.
Day 16 Read the first email out loud. Send
yourself a test. Check it on your phone.
Then YOU click Launch.
Day 19 First replies land.
The two weeks of warmup feel like dead time. They're not. That's when you build the thing you're giving away.
THE ONE RULE
It Will Never Hit Send
/agency-outreachbuilds the campaign paused and hands it back to you. That's hard-coded on purpose, and it will refuse even if you tell it to send.
You read the first email. You send yourself a test. You click Launch. A beginner who lets an agent auto-send cold email torches their domain on day one, and there is no undo button.
WHAT TO EXPECT
Real Numbers, Not Screenshots
| Metric | Industry average | What good looks like |
|---|
| Reply rate | 3.4% | 5% or better |
| Bounce rate | 5.1% | Under 1.5% |
| Positive reply rate | 1.4% | 4% or better |
- Under 1% replies - your offer is wrong, not your copy. Run /agency-offer again and pick different.
- 1 to 3% - normal first batch. Scale the list, keep the emails.
- Over 5%- it's working. Run the next batch of cities.
- Bounces over 3%- stop everything until it's under 2%. Your verify step failed.
The Next Step
Guides show you what. AI Builders shows you how.
Inside the community, I walk through every build live, including the stuff that doesn't make it into guides. Regular people (not developers) figuring out AI together, shipping real projects, asking me anything. No fluff, no theory, just the actual work.
skool.com/ten-fold