Custom AI Dashboard logoCustom AI Dashboard
Case Study: 342-Page Local SEO Site Built in One Week with AI Website Builder
TL;DRHow we built Services Victoria — a programmatic local SEO site covering 30 services across 10 west Melbourne suburbs with hub-and-spoke architecture, geo schema, and form-only conversion. 342 pages, $3.45 total Anthropic spend.

Case Study: 342-Page Local SEO Site Built in One Week with AI Website Builder

This is a working example of what happens when you point the AI Website Builder at a local-SEO problem: a real, live site at servicesvictoria.com.au, 342 pages, hub-and-spoke architecture, geo-coordinate schema on every page, form-only conversion path, and a total Anthropic API spend of about $3.45.

We're publishing the build process because most "AI built me a site" demos are 5-page brochureware. This isn't that — it's a genuine programmatic-SEO play with the same structure marketing agencies charge $15,000+ to deliver, shipped in a week by one person directing the AI Builder.

The Brief

A west-Melbourne operator wanted to capture buyer-intent search traffic for local services — "lawn mowing werribee", "handyman point cook", "window cleaning sunshine west" — and run leads through a form-only contact system (he's hands-on and doesn't want a phone ringing during jobs).

The constraints:

The Architecture

We built a classic hub-and-spoke structure — the same pattern enterprise SEO agencies deploy, but generated programmatically:

servicesvictoria.com.au/                  (homepage, conversion-focused)

├── /lawn-mowing/ (30 service pillars — head terms)
│ ├── /lawn-mowing/werribee-3030/ (300 service × suburb spokes)
│ ├── /lawn-mowing/sunshine-west-3020/
│ └── ...
├── /suburbs/werribee-3030/ (10 suburb pillars — area terms)
├── /services/ (full service index)
└── /suburbs/ (full suburb index)

Total: 342 unique pages, each with genuine local data, FAQ schema, and a working quote form.

What the AI Builder Did

1. Project bootstrap

The Builder spun up a Vite + React + Tailwind project scaffold, generated a brand-aligned landing page (hero, services grid, suburbs grid, quote form, FAQ, footer), and attached it to a Vercel production deployment with auto-SSL — all from a description in conversation.

2. SEO content generation

Service pillar pages were generated using Claude Sonnet 4.5 (~24 pages via API, ~$3-5 spend). The remaining 316 pages — suburb pillars + 300 service-suburb spokes — were assembled via JavaScript template generation with real local data injection (postcodes, councils, landmarks, adjacent suburbs, soil notes per suburb).

This is the critical difference between this build and the "788 doorway pages" approach Google's Helpful Content System penalises: every page has ≥30% genuinely unique content driven by per-suburb data, not just a name swap.

3. Schema.org JSON-LD embedded

Every page emits four schemas:

That last one is important — most SEO sites skip FAQPage schema and lose the SERP rich-result expansion.

4. Sitewide internal linking

27 internal links in the footer of every page. Adjacent-suburb links generated geographically (not alphabetically — Google reads geographic clusters as topical signals). Cross-service links within each suburb. /services/ and /suburbs/ index pages built as crawl-path hubs.

The Form-Only Conversion Pattern

One design choice worth highlighting: no phone number is displayed anywhere on the site. Every CTA goes to a single form that posts to the AI Leads Manager on customaidashboard.com.

This works because:

The site's FAQ page #1 addresses this explicitly: "Why a form and not a phone number?" — turning what could be a friction point into a trust signal.

The Cost

ItemCost
Anthropic API (24 service pillars via Sonnet)~$3.45
Replicate (4 hero image candidates via Flux 1.1 Pro)$0.20
Hand-written pages by the AI Builder (6 service pillars + 10 suburb pillars)$0
Pure-JS template generation (300 spokes + 2 index pages)$0
Vercel hostingFree tier
Domain (.com.au)$25/yr at registrar
Total cash out<$30

The Numbers

What's Live Right Now

Each page renders as fully static HTML at deploy time — no JavaScript required for Google to read it. This matters: Googlebot crawls JS inconsistently, and static HTML guarantees 100% content visibility.

The Honest Limitations

What This Means for the AI Website Builder

The case for the AI Website Builder isn't "AI makes a pretty landing page." That's table stakes. The case is: the kind of work an SEO agency bills $15,000-30,000 for can be directed and shipped in a week by one operator who knows what to ask for.

Programmatic SEO with hub-and-spoke architecture, schema markup, geo coordinates, form integration, sitewide footer optimization, sitemap submission, JSON-LD validation — none of this is glamorous. All of it gets the job done. And the AI Builder is the tool that compresses what used to be a 200-hour build into a series of 15-minute conversations.

We'll publish a follow-up in 90 days with the actual GSC + GBP rankings data so we can show what the architecture produces in market, not just on paper.

Try It Yourself

Sign up for the AI Website Builder free trial and point it at a local-SEO problem you've been putting off. If you want to see the structure in detail before you start, every page on servicesvictoria.com.au is browsable — that's the architecture we'd suggest replicating for any local-services play.

Frequently Asked Questions

Was the content all generated by AI?

No. The 24 service pillar pages were generated via Anthropic API (Sonnet 4.5). The 10 suburb pillars and the 6 missing service pillars were hand-written via the AI Builder conversation interface — meaning the AI Builder author (me, the Claude instance you're talking to) wrote them directly, not by calling another API. The 300 spokes were pure JavaScript template generation using real per-suburb data, with zero LLM calls.

How is this different from JT Handyman Solutionz (788 pages, ranks for handyman near me)?

JT's 788 pages are ~15% unique each — essentially "name swap" templates. We benchmarked their Melton page; it literally contains the line "this launch version keeps JT visible on the original indexed URL while richer suburb-specific CMS content is connected behind the scenes" — i.e. dev note left in production. Services Victoria's pages are 60-70% unique per page, with real postcode/council/landmark/adjacent-suburb data injected into the prose. The Helpful Content System penalty that's coming for JT shouldn't apply to us.

What's the form-submission backend?

Every form on servicesvictoria.com.au posts to login.customaidashboard.com/api/public/forms/submit — the same lead-capture endpoint used by every site built on the platform. Submissions flow into AI Leads Manager with email alerts to the operator. No setup required beyond defining the form fields in the dashboard.

Can the AI Website Builder do this for other types of business?

Yes. The pattern (hub-and-spoke + schema + form + sitewide footer + index hubs) is the same for any local-services or programmatic-SEO play. We'll be running this for several more verticals over the next 90 days — see our /showcase/ for the running list.

What about the 7-day OAuth issue with Google Search Console?

Google's OAuth Testing mode revokes refresh tokens after 7 days — caught us early on the AI Builder's GSC integration. Fix is publishing the OAuth consent screen in Google Cloud Console, which makes tokens persistent. Documented in our SEO Manager docs.

Related

Ready to build with AI?

Custom AI Dashboard generates full-stack apps (UI + backend + auth + Stripe) from a chat prompt. Deploy in 60 seconds.

Start building free → See product features

Free tier · No credit card · Deploy in 60 seconds