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
Before any of the steps — this is what the agent produces.
Example outputA 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 →
Worth knowing before you start, because it's the whole point.
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.
Two kinds of box, and only one of them is an instruction.
Navy outline. Copy the whole thing into Claude Code exactly as written and click Approve. Never edit what's inside.
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.
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 minApify 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.
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.
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 minNew empty folder in VS Code, open the Claude Code panel, paste:
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 secAdd 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.
It defaults to 0. Leave it out and every generated site loses its testimonials — which are the best thing on them.
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 minAdd 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.
max_tokens: 32000 without streaming throws "Streaming is required for operations that may take longer than 10 minutes." Hard stop, no output.
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.
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:30What 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:30Anyone 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.
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 minInstall @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.
site-scout → Private → Create.ANTHROPIC_API_KEY and APIFY_TOKEN before deploying.By here they've seen it work and have one running. That's when pricing means something.
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 minIf you reshoot this with Codex later, only these four rows change. Apify, GitHub, Vercel and Blob are identical.
| Piece | Claude version | OpenAI version |
|---|---|---|
| Builder | Claude Code | Codex — npm i -g @openai/codex, then codex auth |
| Package | @anthropic-ai/sdk | @openai/agents |
| Agent loop | Tool Runner — betaZodTool + toolRunner() | new Agent({...}) + run() |
| Web search | web_search_20260209 server tool | webSearchTool() |
| Key | ANTHROPIC_API_KEY | OPENAI_API_KEY |
@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.