---
title: "I want AI to build me a landing page"
url: https://iwantaito.com/asks/build-me-a-landing-page/
summary: "Five plain-English prompts in a Claude chat made one page for a made-up class, with an 'I'm interested' form that opens an email. Upload it to GitHub and Cloudflare puts it live: free."
published: 2026-10-02
updated: 2026-10-02
author: "Jack Stovell"
publisher: "Adapt Progress Evolve Limited"
language: en-GB
---

# I want AI to build me a landing page

Five plain-English prompts in a Claude chat made one page for a made-up class, with an 'I'm interested' form that opens an email. Upload it to GitHub and Cloudflare puts it live: free.

> Saturday Sourdough: Made up for this demo. Ellie, her class, Elm Road Community Hall and ellie@example.com are invented. The screenshot we attached is of one of our own sites.

Run: 2026-10-02, claude-sonnet-5-5, Claude Code 2.1.287 (claude -p, file tools only: no terminal, no web), session 1a0167a4-f3fc-4f2f-b182-35c91bcfabb4. Claude's time: 2 min 41 s. Edited by hand: no. Full transcript: https://iwantaito.com/transcripts/build-me-a-landing-page.md

## Set up once

Step by step, with what each screen looks like: https://iwantaito.com/start/

1. **Get a free Claude account**. It's where you describe what you want and Claude makes it. The Free plan covers every guide on this site; for websites, Pro adds the shortcut where Claude saves changes to GitHub itself. Free (Pro is optional).
2. **Let Claude hand you files**. Everything on this site is a handful of files: a website, an app, an extension. With this switched on, Claude can make them and give them to you to download. Free.
3. **Get a free GitHub account and an empty repository**. A repository is a folder on GitHub that keeps every version of your files. It's the one place your site lives: you (or Claude) change the files there, and Cloudflare publishes whatever is in it. Free.
4. **Get a free Cloudflare account and connect it to your repository**. Cloudflare is where your site is live on the internet. Once it is connected to your repository, every change to the files on GitHub goes live by itself, in a minute or two. A site made of plain files costs nothing to host: Cloudflare says requests to static files are "free and unlimited". Free.
5. **Connect Claude to GitHub**. So Claude can read the files that are live now before it changes them, even in a brand new chat. On Pro, the same connection is what lets Claude Code on the web save its changes to your repository. Free.

## The prompts

### Prompt 1 of 5: Describe what you're launching, and ask how the sign-up will really work.

```text
I'm starting a beginners' sourdough bread class and I need one web page for it. Nothing big: just one page I can share in the local Facebook group and on a poster, that says what the class is and lets people tell me they're interested.

About the class:
- It's called "Saturday Sourdough". I'm Ellie and I've been baking sourdough at home for six years. This is my first class.
- Saturday mornings, 10am to 1pm, at Elm Road Community Hall.
- £35 a person, and that includes a jar of starter and the loaf you shape to take home.
- 6 places per class. I haven't set the first date yet.
- My email is ellie@example.com.

I don't have a website, a mailing list or any other accounts. I just want people to be able to say "I'm interested" and for me to end up with their name and email.

I'm not technical, and I want it to be free. Before you make anything, ask me anything you need to know, and tell me in plain English what you're going to make and how the "I'm interested" part will actually work.
```

What you should see: A plan and questions, and nothing made yet. Ours proposed one page with name and email boxes and an "I'm interested" button, and said a web page can't store anything by itself. Its first choice was a Google Form (it needs a free Google account); the alternative was a button that opens an email to you, which it called clunky. It asked six questions.

### Prompt 2 of 5: Choose how sign-ups reach you, and show it a page you like.

Attach: a screenshot of a page you like the look of

```text
Thanks, that's clear. My answers:

1. I'd rather not set up a Google Form today. Please make the "I'm interested" part work with the email way for now, so it works the moment the page is online, and tell me in plain English what I'd have to do later to switch to a Google Form instead.
2. Use ellie@example.com for now. I'll swap in my real one.
3. Just "Elm Road Community Hall" for now. I'll add the full address when the first date is set.
4. No photo yet.
5. Yes to "no experience needed". Yes to asking about allergies or anything else they want me to know.
6. No QR code yet.

I've attached a screenshot of a page I like the look of. I like the cream background, the big old-fashioned heading, the one dark green button and how calm it feels. Don't copy its words, just the feel.

Please make the page now. Keep it as simple as possible: just the files I'll need to upload, nothing I have to install. It must look good on a phone.
```

What you should see: One file to download, index.html: a cream page, a big serif heading, one dark green button and a form for name, email and allergies. Pressing the button opens the visitor's email app with a message to Ellie already written; they still have to press Send. It named that weak point itself, said it hadn't opened the page in a browser, and listed the steps for switching to a Google Form later.

### Prompt 3 of 5: Ask it to try to break the page like a visitor on a phone.

```text
I opened it by double-clicking and it looks lovely. Before I share it, please check it carefully, as if you were someone who saw my post on a small phone and as if you were trying to break it: the "I'm interested" part (what happens if they leave something out, type their email wrong, or don't have an email app), every button and link, anything that spills off the side of the screen, writing that's too small or too faint, and anything that would trouble someone who uses a screen reader or only a keyboard.

Tell me in plain English what you found, then fix it in the file.
```

What you should see: A plain-English list of fixes and an updated file. Ours found "one serious fault": its own script used a name browsers reserve, so the form's messages never appeared. It fixed that, tightened the email check, capped the box lengths, darkened faint text and the keyboard outline, and put the email address in one place. It said it checked by reading the code, not in a browser.

### Prompt 4 of 5: Change something, the way you will once it's live.

```text
Good news: I've set the first date. It's Saturday 14 November, same time and place.

Please put the date on the page, and make it clear that once 6 people have said they're interested in that date, anyone else goes on a waiting list for the next class.

Then tell me which files you changed, so I know what to upload again.
```

What you should see: The date at the top and in the details, the waiting-list rule next to the form, and the date in the email's subject line. Ours changed only index.html, and said plainly that the page can't count sign-ups: places go in the order emails arrive, and Ellie replies to say who has one.

### Prompt 5 of 5: Ask how to put it live from GitHub by clicking, and how to test the sign-up first.

```text
I've made free GitHub and Cloudflare accounts. On GitHub I made a new repository called saturday-sourdough (I switched on "Add README"), and in Cloudflare I went to Workers & Pages, Create application, Pages, Connect to Git, and picked that repository, so it should go live by itself whenever the files on GitHub change. I don't want to use the terminal or install anything.

Please tell me, step by step, how to get the page into my repository using the GitHub website, what I should see at each step, how I find the address I can share, and how I put a change live later (like when the class is full). And before I share the link, how do I check that the "I'm interested" button really works?
```

What you should see: Click-by-click steps and a test plan. Ours: put your real email on the "Questions?" line first; on GitHub, Add file, Upload files, index.html, Commit changes; framework preset None and a blank build command; find the .pages.dev address; later, edit the file on GitHub with the pencil icon. Then test on the live address: empty form, a bad email, a real sign-up to yourself, on a phone, and from inside the Facebook app.

## Before you start

You need three free accounts and nothing else. A Claude account with "Code execution and file creation" switched on (Settings, then Capabilities; it's on every plan, including Free), so Claude can hand you a file to download. A GitHub account with an empty repository, which is where your page will live. And a Cloudflare account connected to that repository, which puts whatever is in it on the internet. [The set-up page](/start/) walks through all three, once, in about 15 minutes.

Nothing to install, and no terminal. Everything below happens in a chat and a web browser.

Our example is Saturday Sourdough, a beginners' bread class run by Ellie. Both are made up. Saturday mornings, 10am to 1pm, at Elm Road Community Hall, £35 including a jar of starter and the loaf you shape, six places a class. Ellie has no website, no mailing list and no other accounts. She wants one page that says what the class is and lets people say they're interested. If you're launching one small thing, a class, a product or a newsletter, change the details to yours.

This is one page with one job. If you want several pages, such as a hobby site, see [I want AI to build me a website](/asks/build-me-a-website/).

## What happened when we ran it

We typed five plain-English prompts into one conversation with claude-sonnet-5-5 on 2 October 2026. One caveat: we ran them through Anthropic's command-line tool with only its file tools switched on, so Claude could save files into an empty folder, much like file creation on claude.ai. We didn't use the claude.ai website itself, so your screen will look different. The replies are published as they came back and we edited nothing by hand. Claude spent 161.1 seconds writing them.

The first prompt described the class and asked how the "I'm interested" part would actually work. Claude made nothing yet, and said what matters most on this page: a web page can't store anything by itself. Its first choice was a Google Form, which puts each sign-up in a Google Sheet but needs a free Google account. The alternative was a button that opens an email to you, which it called clunky. It asked six questions, from whether Ellie had a Google account to whether she wanted a QR code for the poster.

In prompt 2 we said no Google Form today: use the email route, and explain how to switch later. We attached a screenshot of one of our own sites and said we liked the cream background, the big old-fashioned heading and the one dark green button. Claude saved one file, index.html. The form checks the name and email, then opens the visitor's email app with a message to Ellie already written. They still have to press Send, and Claude named that weak point itself: some people won't, and some have no email app.

Then we tested it in a browser at laptop and phone size, opened from disk like a double-click. We filled the form in and caught the email the browser was asked to open. 38 of 48 checks passed. The email was right, but no message ever appeared on the page: not for an empty form, not for "hello@", and not after a good sign-up.

So prompt 3 asked Claude to try to break the page like a visitor on a phone. It found "one serious fault": its script used a name that browsers already reserve, so the messages were silently swallowed. We confirmed that was exactly the cause. It also tightened the email check, capped the box lengths, darkened faint text and the keyboard outline, and put Ellie's email address in one place. After that, 46 of 48 checks passed. The two that didn't are a missing skip link, and with no menu to skip, the first Tab lands on the "I'm interested" button.

Prompt 4 set the first date, Saturday 14 November, and asked for a waiting list after six. Claude changed the one file, put the date in the email's subject line, and was honest about the limit: the page can't count sign-ups, so places go in the order emails arrive and Ellie replies to each person.

Prompt 5 asked how to put the page live by clicking, and how to check the sign-up first. Claude's upload steps matched GitHub's and Cloudflare's documentation closely, and its test plan was good. It also got one thing wrong: it said a test sign-up would arrive from the address you typed in the form. It comes from the email account on the phone or computer that sends it.

## Put it live

These clicks follow GitHub's and Cloudflare's documentation. Claude's unedited page is live at [demo.iwantaito.com/build-me-a-landing-page/](https://demo.iwantaito.com/build-me-a-landing-page/) (we host it ourselves, with a thin bar on top saying it's a made-up example; its sign-ups go to the placeholder address); the screenshots are from our own machine.

1. Download index.html. Open it in a plain text editor (Notepad, or TextEdit with Format, then Make Plain Text) and find the line that starts "Questions? Email Ellie at". Change ellie@example.com to your address in both places on that line and save. We checked: that one line changes the address everywhere on the page.
2. On GitHub, open your saturday-sourdough repository and select Add file, then Upload files. Drag in index.html itself, not the folder it's in, and select Commit changes. The repository now lists index.html next to README.md.
3. If you left Cloudflare's "Set up builds and deployments" screen open, check the production branch is main, the framework preset is None and the build command is blank, then select Save and Deploy. If you'd already finished it, your commit starts a new deployment by itself.
4. In Cloudflare, open Workers & Pages, then your project. Its address ends .pages.dev and starts with the project name, which by default is the repository's name, such as saturday-sourdough.pages.dev. Decide on the name before you print a poster.
5. Before you share the link, test the sign-up on the live address. Press the button with nothing filled in, then with a bad email, then sign up properly with a real address of yours and press Send. Check your inbox, and your spam folder. Do it once on your phone, and once from inside the Facebook app, if that's where you'll share it. Delete the test emails so you don't count them.
6. To change something later, such as "class full", ask Claude in the same chat for the new file and upload it the same way, or open index.html on GitHub, select the pencil (Edit file), make the change and select Commit changes. Cloudflare publishes it by itself in a minute or two.

If you'd rather collect sign-ups in a spreadsheet, make a Google Form with name, email and allergies, then ask Claude to point the page at it. In Google's help, Responses, then Link to Sheets, sends every answer to a sheet; "Set close date or response limit" can stop the form after six; and Preview, then Copy responder link, gives you the link to send Claude.

## What it costs

Hosting is £0 a month. Cloudflare says requests to static files are free and unlimited, and GitHub's Free plan is enough to hold one file.

Claude's Free plan covered everything here. A Google Form is optional and free with a Google account. A domain is the only possible cost, and it's optional; the free pages.dev address works without one.

## For developers

If you're happy in a terminal, skip the upload page. With the repository connected to Cloudflare Pages, every push to main deploys:

```
git clone https://github.com/<you>/saturday-sourdough.git
cp index.html saturday-sourdough/
cd saturday-sourdough
git add index.html
git commit -m "Add the page"
git push origin main
```

The form needs no server because it builds a mailto: link in the browser. Storing sign-ups yourself would need code running on a server, which we didn't build here.

## What we tested

- PASS: Prompt 3 file opened by double-click, at laptop (1440x900) and phone (390x844) size in headless Chrome, with the form filled in for real. 46 of 48 checks passed: no errors, nothing loaded from other websites, no sideways scrolling, a label on every box, an empty form says 'Please add your name', 'hello@' gets a message about the email, good details open an email to ellie@example.com carrying the name, email and notes, and the page then says 'Press Send'
- PASS: Text size and contrast. Smallest text 15px; lowest text contrast 6.17:1 (the WCAG AA minimum is 4.5:1)
- FAIL: Skip link. There isn't one, so the first Tab lands on the 'I'm interested' button, with a visible outline (the 2 failed checks above). The page has no menu to skip, so we don't count this against it
- PASS: Prompt 4 file (date and waiting list added). Same 46 of 48; the email's subject reads 'Saturday Sourdough 14 November: I'm interested'
- PASS: Claude's instruction for using your real email, on a copy with only the 'Questions?' line changed. The form and every email link on the page use the new address. 2 of 2
- FAIL: Prompt 2 first build, same checks. 38 of 48: the email opened correctly, but no message ever appeared on the page, whether the form was empty, the email was 'hello@' or the details were good. Prompt 3 found and fixed the cause

## What it got wrong

- **Its first version said nothing.** The prompt 2 page used a name for its message box that browsers already use for something else, so 'Please add your name' and 'Press Send' never showed. Claude found this itself, but only because prompt 3 asked it to try to break the form. We confirmed the cause in a browser.
- **Who the email comes from.** In prompt 5 Claude said a test sign-up 'should be sent from the address you typed'. It won't be. The button opens the visitor's own email program, so the message comes from whichever account that program uses, whatever they typed in the box. The address they typed is in the message itself.
- **Google Form button names.** Claude's steps for switching to a Google Form said Responses, then the spreadsheet icon, and Send, then the link icon. Google's help says Responses, then 'Link to Sheets', and Preview, then 'Copy responder link'. Its step for email notifications matches. We didn't build a form, so we haven't checked the rest.
- **The class can't fill itself.** The page can't count sign-ups, which Claude said. It added that a Google Form would fix this. A Google Form can stop taking answers 'After a number of responses', but the words on Ellie's page still won't change by themselves.
- **The top gap is missing.** Claude gave the top of the page a 56px gap, but another of its own rules cancels it, so the small 'Beginners' sourdough class' label touches the top of the screen. Ask Claude for 'more space above the heading' if it bothers you.
- **Not tested on real phones or inside Facebook.** Our browser can't open an email program, so we caught the email it was asked to open instead. We didn't try a real phone's email app or Facebook's own browser. Claude's test plan in prompt 5 covers both: do it before you share the link.

Live demo (Claude's unedited files, a made-up example): https://demo.iwantaito.com/build-me-a-landing-page/

## From the same studio

Ours: made by the same studio that runs this site.

- [Launch Video Maker](https://launchvideomaker.com/): Turns a page like this into a short launch video to post alongside the link, paid once per video.
- [What is GEO](https://whatisgeo.app/): Once the page is live, a free guide to getting it read and cited by AI assistants.
- [Adapt Progress Evolve](https://adaptprogressevolve.com/): We build launch pages properly, if you'd rather not do it yourself.

## Related

- [I want AI to build me a website](https://iwantaito.com/asks/build-me-a-website/)
- [I want AI to build me a website for my business](https://iwantaito.com/asks/build-me-a-website-for-my-business/)
- [Do I need Wix or Squarespace, or can Claude and GitHub do it?](https://iwantaito.com/asks/website-on-wix-squarespace-wordpress-or-cloudflare/)

## Sources

- [Claude help: create and edit files with Claude (all plans; Settings > Capabilities)](https://support.claude.com/en/articles/12111783)
- [Claude docs: GitHub integration (every plan, reads files only)](https://claude.com/docs/connectors/github)
- [MDN: the a element (mailto: links open the user's email program)](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a)
- [Google Forms help: view and manage responses (Link to Sheets, email notifications, response limit)](https://support.google.com/docs/answer/139706?hl=en-GB)
- [Google Forms help: send your form (Copy responder link, Embed HTML)](https://support.google.com/docs/answer/2839588?hl=en-GB)
- [GitHub Docs: adding a file to a repository (Add file > Upload files; 100 files at once, 25 MiB each)](https://docs.github.com/en/repositories/working-with-files/managing-files/adding-a-file-to-a-repository)
- [GitHub Docs: editing files (the Edit file pencil, Commit changes)](https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files)
- [Cloudflare Pages: Git integration (Connect to Git; leave the build command blank; deploys on every push)](https://developers.cloudflare.com/pages/get-started/git-integration/)
- [Cloudflare Pages: serving pages (no 404.html means single-page app behaviour)](https://developers.cloudflare.com/pages/configuration/serving-pages/)
- [Cloudflare Workers pricing ('Requests to static assets are free and unlimited')](https://developers.cloudflare.com/workers/platform/pricing/)

## Questions people ask

### Can Claude build me a landing page?

Yes, a simple one. Five prompts in one conversation gave us a one-page site for a made-up class, with the details, a date and an 'I'm interested' form. After Claude checked its own work, the form behaved properly in our browser tests: it catches an empty name and a bad email, and writes the sign-up email for the visitor.

### How much does it cost to build a landing page with AI?

£0 in our run, as of October 2026. Claude's Free plan covered the chat, GitHub's Free plan holds the file, and Cloudflare says requests to static files are free and unlimited. A domain is optional and the only cost. If you later collect sign-ups with a Google Form, that's free with a Google account.

### How do people sign up if the page has no server?

A plain page can't store anything, as Claude said. Ours uses the email route: the button opens the visitor's own email program with a message to you already written, and they press Send. Nothing needs an account, but you won't hear from anyone who doesn't press Send. Claude's other suggestion, a Google Form, puts each sign-up in a Google Sheet and needs a free Google account.

### What prompt should I use to create a landing page with AI?

Say what you're launching, the facts you want on the page, what you want people to do (here: say they're interested), and that you're not technical and want it free. Then ask Claude to ask questions and explain how the sign-up will work before it makes anything. Our five prompts are above, word for word; change the details to yours.

### How long does it take to build a landing page?

Claude spent 161.1 seconds writing replies across all five prompts. Reading its answers, testing the form and uploading the file take longer, and we didn't time those. The free accounts take about 15 minutes to set up, once.
