Field guide

From "I should learn this" to one project you actually ship

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.


Optional ยท About this tool

Why one project, and why is there no study list?

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.

More detailed infoLess info

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:

  • One capstone. One project, a checklist of what "done" means, and at least one real-world constraint.
  • No orphan theory. You can only add something to learn by attaching it to the milestone it unblocks. There is no "study later" list anywhere in the tool.
  • Input must equal output. Each thing you learn is closed by saying where you used it. Learning you never used shows up as theory debt.

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.

Part 1

Define the capstone. Everything below happens inside capstone-planner.html, entirely in your browser.

01

Open the tool

Three steps, top to bottom: define the capstone, build it in milestones, show the work.

More detailed infoLess info

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.

The Capstone Planner on first load, with the capstone form and the AI helper collapsed
The tool on first load
02

Write the capstone in one sentence

Describe what will exist when you finish, not what you'll study. At least four words.

More detailed infoLess info
Instead ofWrite
Learn PythonA price tracker that emails me when a product I watch drops below my target price
Get better at SQLA dashboard that answers five questions about my own cycling history
Study network securityA 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.

03

Say what "done" means

Three to five things someone else could check. "Sends one real email alert", not "I understand email".

More detailed infoLess info

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.

Step 1 with the capstone sentence and one done-means item filled in, and the constraint list still empty
Partly filled in: the chips at the bottom show what's still missing
04

Add at least one real-world constraint

Real data, a real user, a real device, a budget, or a deadline. This is what makes it more than a tutorial project.

More detailed infoLess info

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.

Step 2 locked, with a message listing what step 1 still needs
Step 2 stays locked until step 1 is complete
Step 1 complete: capstone sentence, four done-means items, two constraints, all three chips green
A complete capstone
Optional ยท No idea yet?

Don't know what to build? Skip to Part 5

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.


Part 2

Build in milestones. Small working slices, two at a time, with learning attached to the slice that needs it.

01

Add milestones as working slices

Each milestone is something you could demo: "Show one real price on screen", not "Set up the database".

More detailed infoLess info

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.

A milestone called Set up the database rejected with a message asking for a working slice
Chores are turned away

New milestones go to the Backlog. Use โ†‘ and โ†“ to put them in build order. Click a milestone's title to rename it.

Step 2 with the example capstone: summary numbers, one milestone in the sprint, two in the backlog and one shipped
The whole board: this sprint, the backlog, and what's shipped
02

Move one or two into the sprint

A sprint holds at most two milestones. Ship one before starting another.

More detailed infoLess info

โ†’ 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.

03

Attach what you need to learn to that milestone

Under each milestone: "+ What do you need to learn for this?", with an optional link to the resource.

More detailed infoLess info

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.

04

Close each item with "used in"

Once you've applied it, type where: a file, a function, a commit, or a link. Then press "Used โœ“".

More detailed infoLess info

"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.

A milestone in the sprint with one learning item used in db.py and another with templates/history.html typed into its used-in box
One item closed, one about to be
05

Ship it, with proof

"โœ“ Ship itโ€ฆ" asks for a link to the commit, a demo, a screenshot or a file that shows it working.

More detailed infoLess info

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.

The ship form open with a commit link typed in and a warning that one learning item is not marked as used
Shipping, with a warning about one unused item

Part 3

Read the numbers. Four counts at the top of step 2 tell you whether you're building or just collecting.

CountWhat it tells you
Milestones shippedShipped out of total. The only progress number that matters here.
In this sprintHow many milestones you're building now, out of the limit of two.
Theory debtThings 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" metHow many finish-line criteria you've ticked. The capstone is done when this is full.
The four counts, with theory debt in red and a note that one thing learned for a shipped milestone was never used
Red theory debt: something was learned for a shipped milestone and never used
Optional ยท Reading theory debt

What to do when the debt climbs

Stop adding things to learn and build with what you already have.

More detailed infoLess info

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.


Part 4

Show the work. The README is your portfolio page. The backup keeps the plan safe.

01

Publish the README with your project

Download README.md, or copy it, and put it at the top of your project's repository.

More detailed infoLess info

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.

Step 3 with the README preview and the Download README.md, Copy README, Export backup and Import backup buttons
The README preview and the backup buttons
02

Export a backup now and then

The plan lives in this browser only. Export backup saves a .json file you can import anywhere.

More detailed infoLess info

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.

Step 2 on a phone-sized screen
It works on a phone too

Part 5

No project idea yet? Let the AI assistant you already use draft three briefs, then paste the one you pick back in.

01

Open "Don't have a project yet?" and describe yourself

What you want to learn, your level, hours per week, how many weeks, and optionally your interests.

More detailed infoLess info

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.

The AI helper with Python web scraping entered, the generated prompt, and a pasted brief ready to fill the planner
The prompt, and a brief pasted back in
02

Run it in your assistant and pick one brief

"Copy & open" copies the prompt and opens your assistant. Paste, send, and read the three briefs.

More detailed infoLess info

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.

03

Paste the brief back and fill the planner

Copy one whole brief, from CAPSTONE down to the last milestone, into the box and press "Fill the planner with this brief".

More detailed infoLess info

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
Amber ยท proceed with care

Your plan lives in this browser only

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).

Rust ยท troubleshooting

If something isn't working the way you expect

Match the symptom to the likely cause.

More detailed infoLess info
SymptomLikely cause and fix
Step 2 stays lockedOne 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 nothingThey 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 goneBrowser 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.