<Back to Revision Websites

Build a Revision Site

What to type into Claude Code, in order, to build a revision website from your child's exam specification, pitched at the level they are working at.


~

What this is

These prompts were written while building a revision site for one sixteen-year-old taking A Level Maths; the subject-specific parts are blanks, so they work for any subject at GCSE or A Level, with any exam board.

What this looks like in your subject

Maths, sciences

Questions marked instantly, then the working with the mark each step earns, and the slips the examiners' reports say students keep making.

Essay subjects

Model answers set against the board's own level descriptors, what moves an answer up a level, and a checklist to mark yourself against — never a pretend mark.

Languages

Vocabulary and phrase practice, the site reading the language aloud in the browser's own voice, and recording your child speaking so they can play it back beside it.

Sources, data, case studies

The board's own stimulus material — extracts, graphs, case studies — with the question types it attaches to them.

Automatic marking is only honest where an answer can genuinely be checked: a number, a short answer, a choice. For extended writing and for speaking, the site shows a model and a checklist. It cannot mark an essay or judge an accent, and the prompts tell Claude not to pretend it can.


Part 1

Ten prompts

Ten prompts, in order. The site runs on the computer where Claude Code is running; nothing is online at this stage.

Two things to find out first

Neither can be guessed reliably, both come from the school or from a past paper, and everything else in the guide follows from them.

1

The specification code

It's on the front of any past paper, in the school's options booklet, or one message to the teacher away. It looks like 9MA0, 1MA1, 8300 or J560.

2

The target grade

— and, for GCSE maths, sciences and languages, which tier your child is entered for. This sets how deep the site goes. It is not a prediction: there is no point drilling grade 9 vocabulary with a student for whom a 5 would be a good result.

How to work with Claude

One prompt at a time. Read the reply before pasting the next. Claude will often ask you something; answer it.

Search each block for [ before you paste. A bracket left behind is a blank you haven't filled in.

Claude asks permission before it changes anything — say yes. When it offers "don't ask again for this command" for the testing and site-starting commands, take it. Otherwise the long step 6 stops dead the moment you walk away from the keyboard. (The "Accept edits" setting stops it asking about file changes; it does not stop it asking about commands.)

Claude can't see your other windows. When it asks you to do something in a browser and come back, type done or paste what you see.

The site updates instantly as Claude works. If you glance at it mid-change and see a red error box, wait until Claude says it's finished before reporting it.

If the site "disappears" — the session ended, the machine slept, or the conversation filled up — nothing is lost. It all lives in the folder. Open Claude Code on that folder again and paste the re-entry prompt near the end of Part 1.

Undo. "Undo that" works within the same conversation. In Part 1 there's no history across conversations and only one copy of the site — "Keeping it going" has a backup prompt, and Part 2 adds a proper history.

Paste them one at a time, in order, reading each reply before you send the next.

The prompts

Ten of them, in order. Fill in the [HIGHLIGHTED] parts — the worked example under the first prompt shows what a finished one looks like. Type each prompt into Claude exactly as it is printed: the wording is deliberate.

1

Tell Claude who it's for, and have it fetch the real documents

The second paragraph is the important one: it makes Claude work from the board's own documents rather than from memory.

prompt
I want to build a revision website for my child, [CHILD'S NAME], studying [SUBJECT] at [GCSE or A Level] with [EXAM BOARD], specification code [SPEC CODE]. The exam is on [EXAM DATE]. Target grade: [TARGET GRADE]. [ANYTHING ABOUT HOW THEY LEARN — for example "has ADHD and gives up on long pages". Delete this if there's nothing.]

Before anything else, find [EXAM BOARD]'s official documents for [SPEC CODE] on the board's own website and download them: the specification, any formula booklet or data sheet issued in the exam, and the most recent past papers, mark schemes and examiners' reports. Tell me the exact title, issue number and date of the specification you found, and wait for me to confirm before going further. Everything on the site must come from those documents, not from memory. If you cannot download something, say so — I will attach it.

One rule for the whole project: never install anything globally on this computer. If you need a tool, use npx, or tell me exactly what to install and where, and wait for me.

Worked example — A Level Maths

worked example
I want to build a revision website for my child, Sam, studying Mathematics at A Level with Pearson Edexcel, specification code 9MA0. The exam is on 9 June 2027. Target grade: B. He has ADHD and gives up on long pages.

Before anything else, find Pearson Edexcel's official documents for 9MA0 on the board's own website and download them: the specification, any formula booklet or data sheet issued in the exam, and the most recent past papers, mark schemes and examiners' reports. Tell me the exact title, issue number and date of the specification you found, and wait for me to confirm before going further. Everything on the site must come from those documents, not from memory. If you cannot download something, say so — I will attach it.

One rule for the whole project: never install anything globally on this computer. If you need a tool, use npx, or tell me exactly what to install and where, and wait for me.

Claude should come back with something like "Pearson Edexcel Level 3 Advanced GCE in Mathematics, Specification Issue 4, February 2020" and the formula booklet's name.

[✓]

What to check

Search the web for "[EXAM BOARD] [SPEC CODE] specification" and open the PDF. The issue number on the cover matches what Claude said. If Claude couldn't download it, download it yourself and attach it to the chat.

2

Plan, don't build

prompt
Don't build anything yet. Propose how the site should work and wait for me to agree. I want:

- Every topic and numbered point from the specification, in the board's own numbering, with a plain-English summary of what the exam expects.
- Practice questions. Where an answer can be checked automatically (numbers, short answers, multiple choice), check it instantly and then show the working. Where it cannot (longer writing), show a model answer and a self-marking checklist — never pretend to mark it.
- Mark-scheme guidance in the convention this board uses for this subject: find out from the mark schemes you downloaded whether it marks step by step (then label each step with its mark) or by levels (then show the level descriptors and what moves an answer up a level).
- Pitched at [TARGET GRADE] — depth, not prediction. I'll say exactly how in a later step.
- Progress saved in the browser, so it opens where [CHILD'S NAME] left off with no sign-in.
- Works on whatever they actually use — phone, tablet or laptop — and quick on a small screen, in short sessions, with one obvious thing to do on the front page.
- Tests you run yourself. Never tell me a step is done if a test is failing.

It only needs to run where I am for now; nothing goes online yet. Make every technical decision yourself and just tell me what you chose. Only ask me questions a parent could answer. Keep the plan to a page.
[✓]

What to check

The list of topics matches the contents page of the specification PDF. Answer any questions it asks, then say "agreed".

3

Build the topic map and open the site

prompt
Build the site and the full topic map: every topic and numbered point from the specification, each with its summary and a short "in the exam" note on where the marks usually are. Keep the board's numbering exactly — I'll check it against the PDF. Set up the tests and run them. Then start the site and tell me the address to open on this computer.
[*]

What to expect

Claude will say the site is at http://localhost:3000 or give you a link to open. If Claude Code shows a preview, it appears there; otherwise paste the address into your browser. The first time you open each page it takes a few seconds — that's normal before it's online, and it goes away in Part 2. If Claude asks to download a browser so it can take screenshots, say yes.

[✓]

What to check

Ask "How many topics and numbered points did you make?" and compare with the PDF's contents. Pick one numbered point at random from the PDF — it should be on the site with the same number.

Optional · two minutes

Seeing it on another device in the house

If the site is running on your own computer, it can usually show itself to a phone, tablet or second laptop on the same wifi. It depends on your router and your firewall, and it only lasts while the computer is awake. If it fights you, skip it — Part 2 is the reliable answer.

prompt
Stop any old copies of the site, start it again, and tell me the address to type on another device on our home wifi. If my firewall is going to get in the way, tell me exactly what I'll see and what to press.

Then turn that device's wifi off and reload: it must not load. That's the proof it only works at home, and the reason Part 2 exists. Progress is kept separately for each address, so what they answer there and what you answer on the computer stay apart until sign-in in step 2.4 joins them up.

4

Pitch the content at their level — one topic first, then the rest

Asking Claude to "hide the A* material" would make it invent which content belongs to which grade. This works from question demand in the past papers instead, and does one topic for you to agree before the rest.

prompt
Pitch the whole site at [TARGET GRADE]. This is about depth, not prediction: I want [CHILD'S NAME] working on what is within reach, not being shown material meant for someone two grades above. Do not hide or drop any topic — the specification does not say which content belongs to which grade.

If this qualification has tiers, tell me what each tier covers, and I will tell you which one the school has entered [CHILD'S NAME] for; do not guess.

Work it out from question demand instead, using the past papers and mark schemes you downloaded: the questions and question parts a [TARGET GRADE] candidate must get every time are the standard; the final parts of the longest questions are stretch. [GCSE only: Content the specification marks as Higher-only is stretch for a Foundation target and required for a Higher target. Delete this sentence for A Level.]

For every topic write two lines: "For a [TARGET GRADE] you must be able to…" and "Stretch: …". Do ONE topic first, tell me which past-paper questions you based it on, and wait for me to agree before doing the rest.
[✓]

What to check

The two lines make sense to you, and the past-paper questions it names exist in the papers you can open. Then say "agreed, do the rest", and look at a topic in your browser when it's finished.

5

Ask for what your subject needs

Before the questions get written, not after. Claude will not add audio, diagrams or source extracts unless you ask.

prompt
Before you write any questions: what does [SUBJECT] need that a generic revision site wouldn't have? Look at the past papers you downloaded and tell me what those questions actually put in front of a candidate.

Then add whatever applies: [KEEP THE ONES THAT FIT — spoken audio, and a way to record my child speaking and play it back; diagrams to label or complete; a quotation bank; source extracts, graphs or case studies to work from; a reference sheet of formulae or key terms; anything else you found in the papers.]

Use what's already built into the browser rather than anything I have to pay for or sign up to. If something can't be done well that way, say so plainly and tell me what the honest version looks like instead. Don't approximate it, and don't offer to mark anything you can't really mark.
[✓]

What to check

What it proposes matches what you see when you open a past paper yourself. If it offers to mark speaking or extended writing automatically, say no and ask for a model answer and a checklist instead.

6

Practice questions, marked automatically where they can be

The longest step, so it runs one topic at a time. Stay at the keyboard — Claude needs permission for each command and will stop without you. If it offers "don't ask again" for the testing command, take it.

prompt
Add practice questions for every numbered point, one topic at a time. After each topic, tell me it's done and continue with the next without waiting for me. Every question that can be checked automatically must be. Add a test that proves every question marks its own correct answer as correct — a site that tells a child they're wrong when they're right is worse than no site. Each five-question session should be three or four questions at [TARGET GRADE] level and at most one stretch question, labelled as stretch. Run the tests before you tell me you've finished.
[✓]

What to check

Answer three questions yourself. Type the answer from the worked solution — it must be marked right. Type rubbish — it must be marked wrong. If Claude stopped part-way, paste: "Carry on adding questions where you left off. Tell me which topics are done and which remain."

7

Mark-scheme working in the board's own convention

Mark schemes award marks for method as well as for the answer, so a right answer with no working can still drop marks. A textbook rarely says which step earns which mark; the board's mark schemes do.

prompt
For every question, show the working the way this board's mark schemes do — [step by step with the mark each step earns / against level descriptors — whichever you found in step 2] — with one line on why each mark is given. Say which marks an answer at [TARGET GRADE] must secure and which it can afford to drop. Add the mistakes the board's examiners' reports say students make on each topic, taken from the reports you downloaded; if you can't find a report for a topic, say so rather than inventing one.
[✓]

What to check

In one worked solution, the marks per step add up to the question's total. The examiner-mistake notes name a year or a paper.

8

Make it easy to come back to

prompt
Now make it the site [CHILD'S NAME] will open every day, not once. Front page: one clear thing to do, opening on whatever topic they practised last. Sessions of five questions with a clear finish. Never use "overdue", "due", "behind" or anything that makes revision sound like a debt. Fold long explanations away behind a tap. Quick on a small screen, readable in light and dark. No analytics, no tracking, no third-party scripts. [ANYTHING ABOUT HOW THEY LEARN, or delete.] Then look at the front page, a topic page and a question at phone width and on a tablet-sized screen, and tell me honestly what still looks wrong.
[✓]

What to check

Hand your child the device they'll actually use, give them five minutes and don't help. Count the taps to the first question: it should be one. Close the browser and reopen it at the same address: same topic. Switch to dark mode: still readable. The second visit to a page should be quick; the first is always slower before Part 2 puts it online.

9

Check the content against the documents

Do this once everything is built, and again every few weeks.

prompt
Go through every piece of content on the site and check it against the documents you downloaded — every claim about what is examined, what is given in the exam, and what a grade needs. List what you found and fixed, naming the page and the document you checked it against. Then add tests that stop the site contradicting itself in future — for example, one page saying a formula is given in the exam and another saying it must be memorised.
[✓]

What to check

The list names specific pages and specific documents.


Keeping it going

Short prompts for the ongoing job. Paste one whenever it applies.

prompt
[CHILD'S NAME] found [TOPIC] confusing today. Add a second explanation that comes at it from a different direction, and a quick self-check.
prompt
They're doing [TOPIC] in class this term — make it easy to find from the front page.
prompt
The exam is in [NUMBER] weeks. Suggest a plan, and put a gentle countdown on the front page — no pressure language.
prompt
Add a page where I can see what's been practised this week and which topics are going well.
prompt
Re-check everything on the site against the specification and tell me what you'd change.
prompt
Zip up the site without the installed packages, small enough to copy to a USB stick or a cloud drive. Tell me where it is, and how I'd restore it somewhere else.

That last one matters until you've done Part 2. Until then there is only one copy of everything you've built.


If something goes wrong

prompt
Stop any old copies of the site, start it again, and tell me the address to open — here, and on another device on our wifi.
prompt
The site won't start. Here's what it says: [PASTE WHAT YOU SEE]
prompt
The site shows [PASTE WHAT YOU SEE]. Find out why, fix it, then tell me in plain English what happened.
prompt
The tests failed.
prompt
Undo the last change you made.

Starting a new conversation

Starting a new conversation. A chat can fill up or end, and a new one starts with no memory of the old one — but everything is in the folder. Open Claude Code on that folder and paste this:

re-entry prompt
Read the site as it stands and tell me what is done and not done from this list:

1. Topic map from the specification, in the board's numbering
2. Site runs and I can open it
3. Pitched at [TARGET GRADE], with "must be able to" and "stretch" lines per topic
4. Whatever this subject needs beyond text — audio, diagrams, quotations, source extracts, a reference sheet
5. Practice questions for every point, auto-marked where possible, with a test that every question marks its own answer correct
6. Mark-scheme working in the board's convention, with examiners' report mistakes
7. Front page opens on the last topic, five-question sessions, no debt language, dark mode
8. Content checked against the specification, with tests against self-contradiction

Then start the site, tell me the address, and carry on from the first thing not done.

Part 2

Online, a domain, and sign-in

Four steps. Each works on its own, and you can stop after any of them. They add, in order: a copy of the site held off your computer with a version history, a public web address, an address you own, and sign-in so progress follows your child between devices.

What each step adds

2.1

GitHub

Free, 15 minutes.

A copy of the site that isn't on your computer, and every version kept so anything can be undone.

2.2

Vercel

Free, 10 minutes.

A real web address that works on their own device anywhere, and updates itself whenever Claude saves.

2.3

A domain

Costs money, 15 minutes.

An address of your own instead of one ending in .vercel.app.

2.4

Sign-in

Free, about an hour.

Progress follows your child between devices, and more than one child can use the site.

One thing to know before you start. The progress your child has built up on the home address does not travel to the new online one — a browser keeps progress separately for each address. Step 2.4 is what fixes that permanently. If they've done a lot of practice in Part 1, it's worth going straight through to 2.4.

2.1

A safety copy and a history — GitHub

One free account. The site survives a dead laptop, every version is kept, and once 2.2 is done the online site updates itself whenever Claude saves. On a Mac, the first time Claude uses it your computer will offer to install its "command line developer tools": press Install, wait, then tell Claude you're done.

First, in your browser:

  1. 1Create an account at github.com.
  2. 2New repository. Name it revision-site, choose Private, press Create repository.
  3. 3Copy the address of the page you land on.
prompt
Set this folder up on GitHub in my private repository at [PASTE THE ADDRESS], and save everything to it. Walk me through anything you need me to do in the browser, one step at a time; I'll say done after each. Don't save any passwords or keys.

New habit from here on. After any change you want to keep, say "save this to GitHub". That one sentence is what protects your work — and, after the next step, what puts it online.

[✓]

What to check

Refresh the GitHub page: the files are listed, and it says Private next to the name.

2.2

Put it on the internet — Vercel

Free. This is the step that puts the site on a public address.

First, in your browser:

  1. 1Go to vercel.com → Continue with GitHub.
  2. 2Add New Project, find your repository. If Vercel asks for permission to see it, press Install.
  3. 3Deploy. Leave every setting exactly as it is.
  4. 4Wait one to three minutes for a green Ready. The address ends in .vercel.app.
  5. 5Red Error instead? Copy the text of the log and paste it to Claude with "The deployment failed".
prompt
The site is online at [PASTE THE .vercel.app ADDRESS]. Open it and check the front page and a topic page work the same as they do on my computer. Tell me if anything differs.

From now on, every time you say "save this to GitHub", the online site updates itself about two minutes later.

[✓]

What to check

Open the address on your child's own device, away from your home wifi — mobile data, or a friend's wifi. That's the opposite of the check in Part 1, and the whole point of this step. Add it to their home screen or bookmarks.

2.3

A domain of your own

Optional · costs money. A name like yourchild-maths.co.uk instead of the .vercel.app one. Around £10 a year.

First, in your browser:

  1. 1Buy the domain from any registrar.
  2. 2In Vercel: Settings → Domains → Add, type it in.
  3. 3Vercel shows you what to set at the registrar. Paste that into Claude if you'd like it explained.
prompt
I've bought the domain [DOMAIN] and Vercel is asking me to change settings at the registrar. Here's what it says: [PASTE WHAT VERCEL SHOWS]. Tell me exactly what to type in, in plain English.
[✓]

What to check

The domain opens the site. It can take a few hours. If you do step 2.4 before this one, come back and redo its URL screen afterwards with the new address.

Read before starting

[!]

You'll need a Supabase account (free) and an email-sending service such as Postmark (free tier). Most sending services need an email address on a domain you own — not a Gmail-style address — and new accounts start restricted until approved. Check the current rules before you begin.

[!]

Once sign-in is on, everyone must sign in to the online site. Your child needs an email address they can open on the device they'll be using. School addresses often block outside mail.

[!]

This applies to the online site only. The copy on your computer carries on exactly as before, with its own separate progress.

[!]

Supabase's free projects pause after a period unused. Sign-in then fails until you press Restore in the Supabase dashboard. This will happen during a school holiday.

Why this is safe. The first paragraph of the prompt sets rules for the whole project. Keys are like passwords for the database. One of them — the "anon" or "publishable" key — is designed to be public, and is the only one that goes anywhere. The "service role" key can read everything and is never needed; if anything ever asks for it, something is wrong. What actually protects your child's data is a database rule that each account can only see its own rows, and the prompt asks Claude to prove that with a test.

2.4

Sign-in, so progress follows them

The fiddliest step, and the only one that makes progress follow your child between devices or lets more than one child use the site.

Claude will walk you through these, in this order. Type done after each.

  1. 1Paste the database setup Claude gives you into Supabase's SQL Editor and run it.
  2. 2Authentication → Emails → SMTP Settings: your email sender's details. Supabase's own sender is rate-limited to a handful of emails an hour — check the current figure on the screen — which is why this is needed. The sender's token is typed into this screen and nowhere else.
  3. 3Authentication → Rate Limits: raise the email limit. Setting up the sender does not lift it on its own.
  4. 4Authentication → URL Configuration: your online address — copy it from the browser's address bar rather than typing it — as the Site URL and as a redirect URL. If you've done step 2.3, add the domain as well.
  5. 5Edit the sign-in email template to the address Claude gives you. This is what makes a link requested on one device work when it's opened on another.
  6. 6Two public values — Supabase → Project Settings → API (the key is labelled "anon" in older projects and "publishable" in newer ones) — go into Vercel → Settings → Environment Variables. Then Deployments → … → Redeploy. They do nothing until the site is rebuilt.
prompt
Rules for the whole project: never put any secret key in the code, in a file, or in this chat. The only Supabase key that goes anywhere is the public one the dashboard calls "anon" or "publishable" — it is designed to be public. The "service role" key is never needed; if something seems to need it, that is a mistake. The data must be protected by row-level security so one child can never see another's progress, and I want a test that proves it.

Add sign-in by email link (no passwords) with Supabase, for the online site only — the copy on my computer should keep working as it does now. Walk me through the Supabase dashboard one screen at a time; I'll type "done" after each.
[✓]

What to check

Yours, not Claude's. On the computer, open the online address and request a sign-in link. Open the email on the device they'll use: it must work. Sign in with two different email addresses and confirm each sees only its own progress. Ask Claude "What is the name of the test that proves one account cannot read another's?" — it should exist and pass.

Then

prompt
Sign-in is set up and the site has been redeployed. Add a page that says in plain English exactly what is stored — name every field, including the answers themselves and the scores, not a summary — and says that whoever administers the database can read all of it. Add a "Delete my data" control on every page that removes it immediately without asking anyone. Then save this to GitHub.

If something goes wrong online

prompt
The deployment failed. Here is the log: [PASTE THE LOG]
prompt
The online site is showing [PASTE WHAT YOU SEE] but it works on my computer. Find out why.
prompt
Save this to GitHub.

Sign-in stopped working after a quiet spell? Open the Supabase dashboard. If the project says Paused, press Restore. It works again within a minute or two. No prompt needed.


A note on your child's data

In Part 1, and online before you add sign-in, nothing leaves the device. Progress is kept in that browser, at that address, and no one — including you — can see it from anywhere else. Clear the browser's data and the progress is gone; the site is not.

With sign-in, more is stored than you might expect: an email address, every answer given, whether it was right, how long it took, and the score for each session. That is what makes the progress pages work.

Signed in, each account can only read its own rows — one child can never see another's. You are the exception. You set up the database, so you can read all of it from the Supabase dashboard: every answer, every score. That is worth deciding on deliberately, and worth telling your child, rather than discovering later. Deleting it is a button on every page.

If your child is under 18, whether they sign up with their own email address is your call as the parent.

Written from building mathsalevel.ai for one student. The example values throughout — Pearson Edexcel, A Level Mathematics, 9MA0, grade B — are that project's real ones. Everything else is yours to fill in.


~await consultation

Would you rather we built it for you?

This guide is yours to use, free, for as long as you like. If you would sooner have a bespoke revision platform built, tested and maintained for you, that is what we do.

[ Talk to MXMG ]