Build a Small Business Website With Claude Code in a Day
Piotr Olszewski explains his process for auditing, building and improving a local service business website with Claude Code.
Update (9 Nov 2026): Claude Fable 5.2 and Mythos 5.2 are out - prices, access and benchmarks are in my Claude Fable 5.2 guide.
👁 113 reads
Many local business websites take several seconds to load, are awkward to use on a phone and do not show prices. I have rebuilt sites for businesses including an HVAC contractor, a window-cleaning company, a law firm and a catering business. With Claude Code, I can complete the production work in a day. Here is my process, from a one-hour audit and an interview with the owner to the build, local SEO and Google Business Profile.
What I charge for a local business website (October 2026)
- Service business brochure site, 5-10 pages: Pricing not listed in this edition.
- Site with service and neighbourhood pages for local SEO: Pricing not listed in this edition.
- Maintenance plan (hosting, content changes, report and Google Business Profile): Pricing not listed in this edition.
- Website and Google Business Profile audit with an improvement plan: Pricing not listed in this edition.
What a local business is really buying
Business owners are not interested in the technology. They pay for phone calls and enquiries from Google. Before I build anything, I check why the old site is not bringing them in.
An HVAC company’s old website near Warsaw looked impressive: background video, counters and partner logos. It had no keywords in Google’s top 100 results. The homepage weighed 6.2 MB, and its largest element took 7.8 seconds to load on a phone.
A window-cleaning company’s site was more modest: a single page and a gallery. From September 17 until the audit, it had received three clicks from Google. I rebuilt both sites, and started each project the same way: with an hour-long audit.
Step 1: Audit the old website in an hour
The audit tells me what needs fixing and gives the owner a reason to discuss a new site. An hour is enough if I follow a set order and avoid making changes along the way:
| Minutes | What I check | Tool |
|---|---|---|
| 0-10 | URLs, robots, sitemap, title, description, H1 and form | My own script |
| 10-25 | Mobile speed and page weight | PageSpeed Insights |
| 25-40 | The site on a phone: menu, form and pages | My own phone |
| 40-50 | Indexing and keywords | site: search, Search Console |
| 50-60 | A “problem and impact” table, then my verdict | Notes |
The first ten minutes are much the same every time, so I put them in a Python script with no extra libraries. The key part checks whether every version of the URL leads to the same page:
# python audit.py example.com
import sys, urllib.request
d = sys.argv[1].removeprefix("www.")
destinations = set()
for url in (f"http://{d}/",
f"http://www.{d}/",
f"https://{d}/",
f"https://www.{d}/"):
try:
response = urllib.request.urlopen(
url, timeout=20)
print(url, response.status, response.geturl())
destinations.add(response.geturl())
except Exception as e:
print(url, "ERROR", e)
print("destination URLs:",
len(destinations))
The full version in my course also checks HTML page weight, title and description length, H1 headings, tel: links, structured data, images embedded as base64 and external scripts. Here is what it found on two old sites:
- For the HVAC company, http, https, and versions with and without www all returned status 200. The
/index.htmlpage was a duplicate of the homepage. That made five versions of the same site. The robots file and sitemap returned 404. - The same site’s title was 88 characters long and its description was 266 characters. Google would truncate both. Its H1 read “More than 25 years” followed by the company name, without a keyword people search for.
- The form sent data to an external US service, without consent or a privacy policy.
- The window-cleaning company’s homepage contained 133 KB of HTML, including 113 KB from two images embedded in the code.
Step 2: Get the whole website’s content from an interview
I do not make up the content. I have a list of 25 questions for the owner: what services they actually provide, what they cost, where they work, how they differ from competitors and what customers most often ask on the phone. Their answers become the basis for the whole site.
The structure of a service business website is usually much the same: a homepage, services, pricing, service area, about, contact and FAQ pages. I always include pricing, even if it is a range. When customers can see a ballpark figure before calling, they get in touch with a specific question about availability.
I turn my interview notes into draft copy with Claude. The model gets the owner’s exact answers and instructions to avoid brochure language such as “comprehensive services at the highest level”. I then rewrite every paragraph until it sounds like that particular person. Read more in my guide to writing website copy with AI.
Step 3: Build the site with Claude Code
I do not use WordPress. A local business needs a few pages that load quickly on a phone, not a system with plugins to update. I build a static site: content in Markdown, a simple script to turn it into HTML and an instruction file for the agent.
This file guides Claude Code through the project. Here is an excerpt from one job:
# CLAUDE.md - business website
- content only from /content/*.md
- no CSS frameworks
- WebP and AVIF images, lazy loading
- JavaScript only for the form
- tel: button on every page
- title under 60 characters: service+city
- after every change: run PageSpeed
on mobile, target 95+
I design the look without a premade template, choosing colours, typefaces and layout to suit the industry. Without instructions, an agent can produce a site that looks like a thousand others, so I spell out what it should avoid. I build the form without plugins, add spam protection and test that submissions reach the owner’s real inbox.
Step 4: Local SEO and Google Business Profile
I create service and neighbourhood pages only when each has its own content: different projects, different questions and different travel costs. Twenty pages that differ only by city name are spam, not local SEO.
Every site gets LocalBusiness structured data. Here is the shortest version I put in the page header:
{
"@context": "https://schema.org",
"@type": "HVACBusiness",
"name": "Business name",
"telephone": "+1 555 000 0000",
"address": {
"@type": "PostalAddress",
"addressLocality": "Piaseczno",
"postalCode": "05-500"
},
"areaServed": "Piaseczno",
"openingHours": "Mo-Fr 08:00-17:00"
}
The name, address and phone number must match on the website, Google Business Profile and business directories. In the profile, I first update the primary and additional categories, services, description and photos of completed work. I do not use AI-generated photos for a local business profile. Customers want to see the real team and the real windows after they have been cleaned.
Launch without losing rankings
I publish the new site on the client’s hosting or on static hosting. Before switching the domain over, I list the old URLs and set up 301 redirects to their new equivalents. Then I add the site to Search Console, submit the sitemap and set up tracking for phone clicks and form submissions. Those are the only numbers the owner will look at.
Website costs for a business
I charge a price for a service business brochure site with 5-10 pages, and a higher price for a version with service and neighbourhood pages for local SEO. Ongoing maintenance covers hosting, content changes, Google Business Profile updates and a short report. Prices are not listed in this edition.
A maintenance plan turns a one-off project into recurring monthly revenue. With ten clients paying 150-300 a month, that would be 1,500-3,000 a month before building another website. That is my calculation, not a promise of earnings.
I look for clients by starting with an audit. A business with a slow website in Google Maps gets a “problem and impact” table from me. It is a better offer than any presentation.
Course: Build a local business website in a day
I have laid out the full process in my course, Build a local business website in a day: 27 lessons across 7 modules, with about 8 hours and 27 minutes of learning. It includes the full audit script, a list of 25 questions for the owner, a service website built from an empty folder with every prompt, local SEO, Google Business Profile, and templates for a contract and maintenance plan. The first lesson, on completing an audit in an hour, is free.
The course is also available in my kombAIn preorder with 27 other courses. The preorder price and dates are not included in this edition. For an overview of website-building tools, from website builders to vibe coding, see my article on AI tools for building websites.
Frequently asked questions
How much does a business website cost?
I charge one rate for a local service business brochure site with 5-10 pages and a higher rate for a version with service and neighbourhood pages. Post-launch maintenance is a monthly plan. Prices are not listed in this edition.
Can you build a website in one day?
The production work, yes, if the scope is settled in advance: the number of pages, materials from the client and deadline. The audit, owner interview and revisions after their feedback happen on separate days.
WordPress or a static site for a small business?
For a service website with a few pages, I choose a static site: it is faster on a phone, does not need plugin updates and is harder to break. WordPress makes sense when a business publishes a lot of content itself.
Do I need to know how to code?
No. Claude Code writes the code to your instructions, while you write the specification and check the result on a phone. Basic HTML helps with edits, but it is not essential.
Can AI write a website’s content for the owner?
It can draft copy from interview notes. The owner has to provide the facts, prices and way of speaking. I still rewrite every paragraph so it sounds like that business, not a brochure.
Google · Your sourcesQuantslant higher in your Google - one clickAdd to preferred sources →Sources and date checked
Information checked on October 26, 2026.


