This is a free AI prompt that builds an HVAC website. Not one prompt, three, run one after another in the same chat. The first interviews you, the second builds the site, the third adds a page for every town you cover.
You need a chat model, ChatGPT, Claude or Gemini, free tier is fine. Budget about 2 hours, and most of that is you answering questions about your own business.
This is not Lovable or Bolt
Those are app builders you subscribe to. Lovable’s free plan is 5 credits a day and Pro is $25 a month. Bolt is $25 a month once you pass the free tokens. Every edit spends credits, and your site lives on their platform.
These prompts do work in Lovable and Bolt if that’s what you already use. But that isn’t what this is. Here the model hands you the HTML file, you keep it, and you host it wherever you want for nothing. No monthly bill, and no editing budget to run out of.
Want to skip step 1? The HVAC website prompt generator asks these questions in a form and writes the finished prompt for you. Everything below is the long way, and the long way gets you a better brief.
Not a trade? The one-shot website prompt does this in a single paste.
Step 1. Gather what you already have
This one interviews you and turns your answers into a brief. Nothing gets built yet, and that’s on purpose.
Ask a model to “build me an HVAC website” and you get comfort, reliability, and trusted service since 1994. Give it your license number and your 6 towns and you get those instead.
You are helping me plan a website for my home service business. Before you write anything, interview me one question at a time and wait for each answer.
Ask me:
1. What trade are you in, and what is the business called?
2. What is your service area? List every town, suburb, or county you actually travel to.
3. What are your main services? For each one, tell me whether it is something you want more of or something you would rather stop doing.
4. What is your highest value job, and roughly what does it sell for?
5. Do you offer emergency or after-hours work? What hours, and is there a call-out fee?
6. What license, insurance, bonding, or manufacturer certifications do you hold? Give me the numbers you are allowed to display.
7. How long have you been trading, and how many people are on the team?
8. Where do your customers come from now? Word of mouth, Google, a home service marketplace, something else?
9. What do customers say when they choose you over a competitor? Quote them if you can remember the words.
10. Do you offer financing, maintenance plans, or annual service agreements?
11. What do you want a visitor to do on the site? Call, request a quote, book online, or something else?
12. Do you have photos of your own work, your vehicles, or your team? Roughly how many?
If any answer is thin, ask me one follow-up before moving on. Do not fill a gap in with an assumption.
When we are done, write me a project brief with these sections. Business summary, service area, services ranked by what I want more of, trust signals, the one action I want visitors to take, and the customer language worth putting on the page word for word.
Take question 3 seriously. A duct cleaning page you never wanted brings in duct cleaning calls, and then you’re talking people out of the job your own site sold them.
Slow down on question 9 too. “You were the only one who called back the same day” is a headline. “Quality workmanship you can trust” is filler.
Step 2. Build the homepage
Same chat, next prompt. Your brief is already sitting above it, so there’s nothing to paste back in.
Using the brief above, build my complete website as a single index.html file.
Structure, in this order:
- A header with the business name, the phone number as a tappable link, and the service area named in plain text.
- A hero section with a headline built from the customer language in the brief, a subheadline naming the service area, and 2 buttons. Primary is call, secondary is request a quote.
- A trust strip directly under the hero showing license number, insurance, years in business, and any certifications.
- A services section. One card per service, ordered by what I said I want more of. Each card names the service, says who it is for, and says what happens when someone books it.
- An emergency or after-hours block if the brief says I offer it, with the hours and the call-out fee stated plainly.
- A service area section listing every town by name.
- A why us section built only from the trust signals and customer language in the brief. Invent nothing.
- A financing or maintenance plan section if the brief mentions one.
- A quote request form with name, phone, address, service needed, and urgency. Use a mailto action pointed at a placeholder address I will replace.
- An FAQ section answering the 6 questions a homeowner asks before booking this trade.
- A footer repeating the phone number, service area, license number, and business hours.
Rules for the build:
- Everything in one file. CSS inline in a style tag, JS inline in a script tag.
- Responsive at 375px, 768px, and 1440px.
- Light theme. Near white background, dark text, one accent color. (Swap this line for "Dark theme. Deep near black background, light text, one accent color" if you want the dark version.)
- The mobile menu gets a solid opaque background in the page background color, full width, at a z-index above every other element on the page. It closes when a link is tapped. Open it at 375px and confirm you cannot see the page through it.
- The phone number is visible without scrolling on mobile, and it is a tel link everywhere it appears.
- Write real copy from the brief. No lorem ipsum, no placeholder sentences, no claims I did not give you.
- 8th grade reading level. Short sentences. Written for a homeowner reading on a phone in a hot hallway.
- Clean sans-serif type from Google Fonts. Strong contrast. Nothing decorative.
- Leave every image as a labeled placeholder div that says what photo belongs there, sized correctly, so I can swap in my own.
Put the entire index.html file inside ONE single fenced code block so I can copy it in one click. Do not split it across several code blocks and do not write anything before or after it. If you run out of room, stop mid line and wait. When I say continue, resume in one new code block from the exact character you stopped on and repeat nothing.
Keep that last paragraph. Without it ChatGPT splits the file across several code blocks and you have to stitch it together by hand.
Ask for labeled placeholders, not stock photos. A box that says “photo of your van outside a job” is hard to walk past. A smiling stranger pointing at a thermostat is easy to leave there forever.
Step 3. Add a page for every town you cover
The homepage is for someone who already knows your name. Town pages are for someone typing “AC repair” and wherever they live.
Now build one page per town in my service area, matching the homepage design, fonts, colors, and layout exactly.
Each town page needs:
- A headline naming the service and the town.
- 2 or 3 paragraphs written about that town specifically. Reference real local details from the brief where I gave them, such as housing age, common system types, or how far it is from my base. Where you do not have a real detail, write about the service instead of inventing a local fact.
- The same trust strip as the homepage.
- The services I offer in that town.
- Response time or travel time to that town if the brief covers it.
- The same quote form and phone number.
- A link back to the homepage and links to the 2 nearest town pages.
Name each file after the town, lowercase with hyphens. Example, ac-repair-fairfield.html
Output one complete file at a time, each inside a single fenced code block with nothing written before or after it, and wait for me to say next before writing the following one.
Waiting between files matters. Otherwise the model runs out of room around page 5 and quietly shrinks 6 and 7.
Step 4. Put your own photos in
You already have the photos. They’re on your phone.
A finished install, a van with the wrap on it, and one of you at a job site covers most of the placeholders. Shoot in daylight, hold the phone level, and get closer than feels right.
For the few you don’t have, a generated image works fine in a background or a section where nobody’s face shows. The trick is asking for a real room instead of a clean one.
A photo of a real basement utility room in a 1990s suburban house. A gas furnace and a water heater against the back wall, copper lines and flex duct overhead, a floor drain, dust and a few scuffs on the concrete, a coiled hose in the corner. Shot handheld on a 35mm lens at f/4 from standing height. Mixed light, one small window on the left and a bare bulb on the ceiling. Slight grain, mild vignetting, imperfect white balance. No people, no text, no logos.
Ask for clean and well lit and you get a showroom nobody believes. The dust and the bare bulb are what make it look like a house.
Leave people out, because a fake technician is worse than no photo. Leave text out too, because models still can’t letter a sign.
To swap a photo in, tell the same chat which picture goes where and let it replace the placeholder for you.
Step 5. Put the site online free
You’ve got a folder of HTML files now. Putting them online costs nothing and takes about 2 minutes.
- Open a plain text editor. Notepad, TextEdit, whatever is already on the machine.
- Paste each page and save it with the filename the model gave it. The homepage has to be called index.html.
- Put every file and every photo into 1 folder.
- Go to app.netlify.com/drop.
- Drag the folder onto the page.
You get a live URL in about 11 seconds. The address is odd and auto-generated, but it’s real, and you can send it to somebody today.
Claim it before you close that tab. Dropped without an account the site is temporary, so Netlify puts a password on the URL and eventually deletes it. Claiming means a free account, which is a Google login or an email address, and then it stays up.
Free hosting has one ceiling worth knowing. The plan runs on 300 credits a month, about 15GB of traffic, and it’s a hard cap you can’t top up. Run out and every site on the account goes dark until the next billing cycle.
With normal photos on the page that’s around 15,000 visits, so you’ll never see it. Two things get you there early. Photos straight off the phone at 5MB each cut it to about 3,000, and publishing costs 15 credits every time, so 20 republishes in a month spends the whole month on its own. Shrink the photos, and move to the $9 plan the day you start buying ads.
Step 6. Point a domain at it
That free URL works. It just doesn’t look like a business.
A domain from Namecheap is about $12 a year. Get the .com of your business name. If it’s taken, add your city rather than a hyphen. Fairfield HVAC beats hvac-services-inc.
You connect it in Netlify under domain settings, and it walks you through the 2 records to change at Namecheap. Give it a day to work everywhere.
Step 7. Getting into the Google map results
Your site won’t put you in the map pack on its own, and the map pack is where somebody with a dead system looks first.
Claiming your Google Business Profile is what does that, and it’s free. Put your service area, hours, phone, and photos in there, and match your website exactly, down to the punctuation in the address.
Then get reviews. A profile with 41 beats a profile with 4 almost every time. Ask the day the job finishes, with a link, while they’re still happy about having heat.
Your site’s job is catching the person who found you there and wanted to check you were real. That’s worth doing. It just comes second.
Fixing what came back wrong
One round of feedback in the same chat handles most of it.
The layout is close. Tighten the spacing between sections, increase the size difference between headlines and body text, make the phone number bigger on mobile, and give the call button more contrast against the background.
When the copy is the problem, give it more of your own words instead of asking it to try again. “Rewrite the hero using this sentence a customer said last month” works. “Make it better” gets you the same thing in a different shirt.
What this won’t do
It won’t tell you if your prices are right. It’ll write confident copy around whatever margin you’re running.
It won’t get you in the map pack. That’s your Google Business Profile and the reviews under it.
And it won’t keep itself current. Add a service or drop a town and you have to open that chat and ask. It’s 12 minutes twice a year, and it’s the thing you’ll forget until somebody calls about a service you quit doing in the spring.