Defining a capstone with the Capstone Planner, building it in small milestones, learning only what each milestone needs, and publishing the proof. Screenshots sit behind the same "More detailed info" toggles the other field guides use.
Short version: this tool puts the Product-Based Learning blueprint into practice. The project decides what you learn, and anything you learn has to end up in the project.
Self-study usually runs the other way around: courses first, "just in case", with a project promised for later. Later rarely comes, and the course material fades because nothing ever needed it. The blueprint flips the order. You commit to one concrete output on day one, and theory is pulled in only when the project needs it.
The tool enforces that with three rules:
Everything runs in your browser and nothing is sent to Deliberate Learners. The plan is saved in the browser you used, so Part 4 covers keeping a backup.
Define the capstone. Everything below happens inside capstone-planner.html, entirely in your browser.
Three steps, top to bottom: define the capstone, build it in milestones, show the work.
The tool saves as you type, so you can close the tab and come back to the same plan in the same browser. ๐ switches between light and dark mode, and โบ starts over after asking first. Just exploring? Load an example capstone fills in a sample project so you can see every part working. It only appears while the planner is empty.
Describe what will exist when you finish, not what you'll study. At least four words.
| Instead of | Write |
|---|---|
| Learn Python | A price tracker that emails me when a product I watch drops below my target price |
| Get better at SQL | A dashboard that answers five questions about my own cycling history |
| Study network security | A hardened home lab with a written report of every service I closed and why |
Pick something you would use, or someone you know would use. A real reason to finish is what carries you through the middle, when the project is no longer new.
Three to five things someone else could check. "Sends one real email alert", not "I understand email".
These are your finish line. Without them, a project either never ends or quietly shrinks until it's easy. Type each one and press Enter or Add. Later, tick each box when it's genuinely true. The ticks feed the "done means met" count and the README.
Real data, a real user, a real device, a budget, or a deadline. This is what makes it more than a tutorial project.
Tutorials work because everything is clean and prepared. Real projects teach you because nothing is: real shop pages change their layout, real bank exports have odd dates, free hosts have limits. One constraint like that forces the learning the tutorial skipped.
Once all three chips turn green, step 2 unlocks. Until then, it shows a reminder of what's missing.
The tool can write a prompt that asks your own AI assistant for three project briefs matched to your skill, level and time, then fill the planner from the one you pick.
Build in milestones. Small working slices, two at a time, with learning attached to the slice that needs it.
Each milestone is something you could demo: "Show one real price on screen", not "Set up the database".
A slice goes all the way through the project, thinly: a little input, a little processing, a little output, working together. Layers ("the database", "the UI") and chores ("install everything") can take weeks without producing anything you can show. The tool refuses milestones that start with set up, install, configure, learn, study, read, watch or research, and asks for a slice instead. The setup and learning go inside it.
New milestones go to the Backlog. Use โ and โ to put them in build order. Click a milestone's title to rename it.
A sprint holds at most two milestones. Ship one before starting another.
โ Move to sprint means "I'm building this now". The limit of two is deliberate: five half-built milestones feel busy but produce nothing you can show. A week is a good sprint length for most people, though the tool doesn't track dates. If a milestone turns out to be bigger than it looked, โ Back to backlog and split it into two smaller ones.
Under each milestone: "+ What do you need to learn for this?", with an optional link to the resource.
This is the heart of the method. Before you open a course or a tutorial, ask which milestone it's for. If you can't name one, it's "just in case" learning, so don't start it yet. Add a resource link (a docs page, a video, a chapter) and the topic becomes a clickable link.
Once you've applied it, type where: a file, a function, a commit, or a link. Then press "Used โ".
"Used in" is your proof that the learning turned into output. Items still waiting for it have an orange edge and count as theory debt (Part 3). Undo reopens an item if you marked it too early.
"โ Ship itโฆ" asks for a link to the commit, a demo, a screenshot or a file that shows it working.
A milestone can't be shipped without proof. That's what separates "I think it works" from something a stranger could check. If any learning item on the milestone isn't marked as used yet, the form tells you. You can still ship, but those items turn red and count as theory debt until you close or delete them. Reopen sends a shipped milestone back to the sprint and clears its proof.
Read the numbers. Four counts at the top of step 2 tell you whether you're building or just collecting.
| Count | What it tells you |
|---|---|
| Milestones shipped | Shipped out of total. The only progress number that matters here. |
| In this sprint | How many milestones you're building now, out of the limit of two. |
| Theory debt | Things you set out to learn that haven't been used yet. Green at zero, amber for one to three, red for more than three or for anything unused on a shipped milestone. |
| "Done means" met | How many finish-line criteria you've ticked. The capstone is done when this is full. |
Stop adding things to learn and build with what you already have.
A few unused items on milestones in progress is normal: you're learning them right now. Debt that keeps growing means you're drifting back into "just in case" study. A red item on a shipped milestone means one of two things. Either you used it and forgot to say where, so add it, or you didn't need it after all, so delete it. Learning you didn't apply isn't part of the capstone.
If every milestone is shipped but not every "done means" box is ticked, the tool says so. Either the capstone needs one more milestone, or it's time to tick the boxes.
Show the work. The README is your portfolio page. The backup keeps the plan safe.
Download README.md, or copy it, and put it at the top of your project's repository.
The README updates as you plan. It lists the goal, your status, the "done means"
checklist, the constraints, every milestone with its proof link, and a table of
what you learned and where you used it. On GitHub, a file named
README.md at the top of a repository is shown on its front page, so
anyone looking at your work sees the story behind it. This is the "Capstone
Portfolio" from the blueprint.
The plan lives in this browser only. Export backup saves a .json file you can import anywhere.
Clearing your browser data, using a private window, or switching to another device or browser means starting with an empty planner. Export backup downloads the whole plan as a file named after your capstone and the date. Import backup loads one back, after asking before it replaces anything. A good habit is exporting whenever you ship a milestone, and committing the file to the project's repository alongside the README.
No project idea yet? Let the AI assistant you already use draft three briefs, then paste the one you pick back in.
What you want to learn, your level, hours per week, how many weeks, and optionally your interests.
Interests make a big difference. A price tracker for things you actually buy, or stats from your own cycling rides, gives you a reason to finish that a generic "todo app" never will. Build my prompt writes the prompt. It asks for three briefs, each with a real constraint and milestones written as working slices, in a fixed format this tool can read.
"Copy & open" copies the prompt and opens your assistant. Paste, send, and read the three briefs.
Pick the brief you'd be most annoyed not to finish, not the most impressive one. If
none fits, reply in the same chat: Make brief 2 smaller,
Use my own bank exports as the data, or Give me three more.
The assistant is told not to write any code, because building it is your job.
Copy one whole brief, from CAPSTONE down to the last milestone, into the box and press "Fill the planner with this brief".
The tool reads the capstone, the "done means" and constraint lists, and each
milestone with its | learn: topics already attached. Everything lands in
the backlog, ready for you to reorder and edit. It copes with the bold text,
headings and checkboxes assistants like to add. If you paste all three briefs, it
uses the first and tells you. If your planner already has a capstone, it asks before
replacing it.
CAPSTONE: A price tracker that emails me when a product drops below my target price DONE MEANS: - Tracks 5 real product pages - Sends one real email alert CONSTRAINTS: - Uses real shop pages MILESTONES: 1. Fetch one real price | learn: HTTP requests; HTML parsing 2. Save a price history | learn: SQLite basics
Nothing is stored on Deliberate Learners. Clearing site data, a private window, or a different device or browser means an empty planner. Export a backup whenever you ship a milestone (Part 4, step 02).
Match the symptom to the likely cause.
| Symptom | Likely cause and fix |
|---|---|
| Step 2 stays locked | One of the chips under step 1 is still grey: the sentence needs at least four words, and you need at least one "done means" item and one constraint. |
| "That sounds like preparation" | The milestone starts with a chore word like set up or learn. Name the working result instead, and put the setup inside it as a learning item. |
| "A sprint holds at most 2 milestones" | Ship one, or move one back to the backlog, first. |
| "Used โ" or "Ship" does nothing | They need text first: where you used it, or a proof link. The cursor jumps to the empty box and a message explains. |
| The plan is gone | Browser data was cleared, or you're in a different browser or a private window. Use Import backup with your latest export. |
| "No CAPSTONE: line found" | The pasted text is missing the brief's first line. Copy from CAPSTONE: down to the last milestone. |
| "Not a Capstone Planner backup" | The file is a different JSON file, or it was edited. Export a fresh backup from the tool. |