Dr. Erin Jacques · Tutorial

Site Scout

An agent that finds local businesses with no website, researches each one, and builds them a draft site — so a web designer can call and say "I already made you something."

Two videos  ·  Built with Claude Code  ·  ≈ 10 min each after the cut

See one first

Before any of the steps — this is what the agent produces.

Example output

A complete website for a real local business, built in about three minutes from four facts: a name, a category, an address and a phone number.

The listing said "no reviews." The agent went and found nineteen on a site nobody told it to check, along with her specialty, her training and her full treatment list — then flagged that the address on the listing was wrong. Open it →

Where it becomes an agent

Worth knowing before you start, because it's the whole point.

→

Step 5 is the moment

Steps 1–4 build something that talks. Useful, but it's the custom GPT everyone already has.

Step 5 is where it changes, and not because it gets a tool — because of how the tool is aimed. You don't tell it "run one search and stop." You tell it keep going until you have 10 businesses with no website. If a search comes back short it widens — a neighbouring town, a related category — and tries again.

One search with a limit of 10 is an automation. Deciding how to reach 10 is an agent. That's the whole distinction, and it's one line in a prompt.

Step 6 is where it gets proof of it. Given a business with four facts and no reviews, the agent found her specialty, her training, her languages, her full treatment list, and 19 reviews on a site nobody told it to check. Nobody wrote logic saying "search now" — it decided that was the next thing worth doing.

How to read this

Two kinds of box, and only one of them is an instruction.

Paste this

Navy outline. Copy the whole thing into Claude Code exactly as written and click Approve. Never edit what's inside.

Just so you know Gold. Context, warnings, and why something is the way it is. Nothing here gets pasted anywhere.

What you need

One paid account. Everything else is free.

Video One

Build an AI Agent That Builds Websites

Seven steps. Runs on your laptop. No terminal anywhere. Ends with a folder of finished websites and the phone numbers to go with them.

1

Install Claude Code

VS Code
  1. Open VS Code. Free at code.visualstudio.com.
  2. Extensions tab in the left sidebar.
  3. Search Claude Code.
  4. Install, then sign in.

Two names, one setup — VS Code is the editor, Claude Code is an extension inside it. Worth separating out loud; people hear "Claude Code" and think it's a second app.

The extension brings everything with it. No terminal in this build.

≈ 2 min
2

Get an Apify token

apify.com
  1. apify.com → Sign up. Free, no credit card.
  2. Settings in the left sidebar.
  3. API & Integrations.
  4. Copy the Personal API token.

Apify is an app store for scrapers — thousands of small programs that go collect data from a site, built by other developers. You don't write one, you rent one per run.

Free plan is $5/month of credit. The scraper charges $0.004 a place, so that covers roughly a thousand businesses a month.

The scraper we use — and why

compass/crawler-google-places  ·  575,000 users  ·  4.70 stars  ·  36 million runs  ·  97% success rate

It reads Google Maps listings and returns about 30 fields per business — name, category, phone, full address, rating, and review text. Crucially it has a no-website filter built into its input, so you ask for only the businesses that need what you're selling.

Apify's store also has actors named things like "businesses without websites." Check ratings before trusting a name — the obvious-sounding one has 1.88 stars and 753 users. Compass costs the same and is maintained by people with 36 million runs of feedback.

You don't have to go find it. Its name goes in the prompt in step 5, and you never open the Apify site again.

≈ 90 sec
3

Get an Anthropic key

console.anthropic.com

console.anthropic.com → API Keys → Create Key. Copy it — it's shown once.

This is the only thing in the build you pay for. A run of ten businesses lands around $1–2.

≈ 1 min
4

Set up the project

Claude Code

New empty folder in VS Code, open the Claude Code panel, paste:

Paste this

Set up a Next.js app with TypeScript called site-scout in this folder. Run npm install @anthropic-ai/sdk@latest zod — install the latest, don't write versions into package.json.

Create lib/agent.ts with a system prompt for an agent that helps web designers find local businesses without websites. Use model claude-opus-5. No tools yet.

Add .env.local with ANTHROPIC_API_KEY and APIFY_TOKEN.

Approve when it asks, then paste your two keys into .env.local.

Run it. It talks, and that's all it can do — no searching, no data, nothing outside the conversation.

Measured: 3 min 56 sec
5

Give it the finder

Claude Code
Paste this

Add a tool called find_businesses that takes a business type and a town. It calls the Apify actor compass/crawler-google-places using APIFY_TOKEN, with this input:

{
  "searchStringsArray": ["dentist"],
  "locationQuery": "White Plains, NY",
  "website": "withoutWebsite",
  "maxCrawledPlacesPerSearch": 10,
  "maxReviews": 10,
  "reviewsSort": "highestRanking"
}

Return name, phone, address, rating, category and review text for each business.

searchStringsArray and locationQuery come from the tool's own inputs, not hardcoded — "dentist" and "White Plains, NY" above are just examples of the shape.

The agent's goal is a target, not one call: keep going until it has 10 businesses with no website. If a search comes back short, widen it — a neighbouring town, a related category, a larger limit — and try again. Stop at 10, or after 5 attempts.

Use the Tool Runner: betaZodTool from @anthropic-ai/sdk/helpers/beta/zod, run through client.beta.messages.toolRunner().

Run it and ask for dentists in your town. Real businesses come back, with real phone numbers — and if the first search is short, watch it widen and go again.

Don't drop maxReviews

It defaults to 0. Leave it out and every generated site loses its testimonials — which are the best thing on them.

Nothing to edit after this You never touch that JSON again. To scout somewhere else you just ask — "plumbers in Yonkers", "hair salons in New Rochelle" — and the agent fills in the search and location itself. That's the difference between running a tool and having an agent that runs it for you.
≈ 4 min
6

Give it eyes

Claude Code
Paste this

Add Anthropic's server-side web search tool — { type: "web_search_20260209", name: "web_search" } in the tools array.

Then add a custom tool read_page that fetches a URL and returns its text.

Update the system prompt so the agent researches each business it finds before doing anything else.

read_page is about twelve lines. You describe what a tool does, and the agent decides when to use it.

This step is what makes the sites real. Apify finds who to build for; the search finds what to say. Skip it and you're generating templates with names swapped in.

≈ 5 min
7

Make it build the sites

Claude Code
Paste this

Add a tool save_site that writes an HTML file to /output.

After researching each business, the agent writes a complete single-file website using their real name, services, phone and address, with only 4-star-and-up reviews as testimonials. Placeholder imagery, never their photos. Omit hours rather than inventing them. If nothing verifiable exists for a section, leave the section out.

Also write output/index.html — a leads sheet listing every business with its phone number, category, and a link to the site you built them.

Set stream: true on the tool runner.

Run it on a real town. Open output/index.html — every business, every phone number, and a link to the site built for each one. Then open one of the sites.

stream: true or it crashes

max_tokens: 32000 without streaming throws "Streaming is required for operations that may take longer than 10 minutes." Hard stop, no output.

≈ 5 min

Video One ends here

"You've got a tool that makes websites for local businesses. That alone is a business — and that's the next video."

Video Two  ·  stands alone

How to Sell an AI Agent

Assume the viewer has never heard the word "agent" and has nothing built. Show it working before you explain anything, and name the money before you ask for four minutes of building.

1

Start with the finished website

A real business's site, built from nothing, before any explanation. No definitions first — people understand what an agent is by watching one work.

The framing: nobody spoke to this business. Ninety seconds, and not a line of it written by hand.

0:00 — 0:30
2

Name it, then name the money

What it is, in one sentence: it finds local businesses with no website and builds each one a site.

Then the folder — eleven finished websites, eleven phone numbers. A web designer charges around $1,500 for one of these. Making all eleven cost under a dollar.

0:30 — 1:30
3

Build it fast

Claude Code

Anyone who already has the agent running skips ahead. Anyone starting cold gets one in about three minutes.

Paste steps 4 through 7 merged into one prompt. Fast-forward the install. Don't explain the tools here — that's Video One's job, and this viewer doesn't need it yet.

Never say "part two" No "like I showed last time," no "as you saw in the first video." Anyone landing here cold has a working agent by 4:00 and never feels behind.
1:30 — 4:00
4

Put a page on it

Claude Code
Paste this

Add a chat page at / with a box for business type and town. Stream the agent's progress so every step shows as it happens, and list the finished sites with links to open them.

Quick. It exists so a customer can use this without ever opening Claude Code.

≈ 3 min
5

Give every site a real link

Browser, then Claude Code
  1. Vercel dashboard → Storage → Create → Blob.
  2. Set it to Public. You can't change this later.
  3. Open the store's Projects tab → Connect to Project.
Then paste this

Install @vercel/blob. Change save_site so instead of writing to /output it uploads each site with put() using public access, and returns the URL.

Now each website has an address you can text to the owner. That's the whole difference between a folder on your laptop and something you can sell.

Why not a database Blob is already inside Vercel — no new account. 1GB is roughly 20,000 sites, and it's free.
≈ 4 min
6

Put it online

Browser
  1. github.com/new → name it site-scout → Private → Create.
  2. In Claude Code: "Push this to my GitHub repo site-scout."
  3. vercel.com/new → Import your repo.
  4. Open Environment Variables and add ANTHROPIC_API_KEY and APIFY_TOKEN before deploying.
  5. Deploy. Live URL in about a minute.
Don't skip step 4 Your keys live on your laptop, not in the code. Deploy without them and the page loads but the agent fails. This is the most common thing that breaks here.
≈ 4 min
7

The two ways to get paid

By here they've seen it work and have one running. That's when pricing means something.

Model 1 · you offer the service You're the web designer. The agent is your private tool. You sell websites to plumbers at $1,500 a job. No login, no payments, no support — you just need clients. Everything they need for this, they already built.
Model 2 · you sell the agent Your customers are other designers. They pay you monthly for access and go find their own clients. That means accounts, billing, support — a real product.

Model 1 you can start this week with what you've already built. Model 2 needs logins and payments — that part lives in the community.

≈ 2 min

Same build, OpenAI

If you reshoot this with Codex later, only these four rows change. Apify, GitHub, Vercel and Blob are identical.

PieceClaude versionOpenAI version
BuilderClaude CodeCodex — npm i -g @openai/codex, then codex auth
Package@anthropic-ai/sdk@openai/agents
Agent loopTool Runner — betaZodTool + toolRunner()new Agent({...}) + run()
Web searchweb_search_20260209 server toolwebSearchTool()
KeyANTHROPIC_API_KEYOPENAI_API_KEY
Codex install trap It's @openai/codex, not codex. The unscoped package is an unrelated project from 2012 and people install it by mistake constantly.

Two things worth being upfront about. The business data comes from public Google listings — against Google's terms, though not illegal. And the draft sites will get some details wrong, which is fine: "here's a draft, tell me what I missed" opens a conversation that a cold pitch never does.

On costs. A ten-business run is about 7¢ of Apify plus $1–2 of API — under two dollars for ten finished websites. The free Apify credit covers roughly a thousand places a month. Worth stating the real numbers; people assume this is expensive and it isn't.

Verified 25 Aug 2026. The Apify actor and its input, the review filter, the tool runner, a full site build, and step 2's prompt driven through Claude Code itself — all run end to end. Every number on this page is measured.