Step 2: Define Scope and Non-Goals
This is the most valuable and most skipped step. Non-goals — the things you are deliberately not building — protect you from an AI that loves to add "helpful" extras.
For our book tracker, scope might be:
- In scope: add a book, mark it as reading/finished, see a list, rate finished books.
- Out of scope (non-goals): social features, recommendations, importing from Goodreads, mobile app, user accounts.
Picture two columns: everything you to building on the left, everything you deliberately skip on the right. The line between them is the boundary that keeps v1 small.
┌───────────────────────┬───────────────────────┐
│ IN SCOPE │ NON-GOALS │
├───────────────────────┼───────────────────────┤
│ Add a book │ Social features │
│ Mark reading/done │ Recommendations │
│ See a list │ Goodreads import │
│ Rate finished books │ Mobile app │
│ │ User accounts │
└───────────────────────┴───────────────────────┘
build now ◀───────────────────▶ not now
Writing non-goals down does two jobs. It keeps your first version small enough to actually finish, and it gives you a sentence to paste when the AI drifts: "Remember, accounts are a non-goal for v1 — don't add login."
A non-goal isn't "never" — it's "not now." Listing user accounts as a non-goal doesn't mean your app will never have them. It means they're not part of this version, so you don't pay their cost today. This reframing matters: it lets you say no to a feature without feeling like you're abandoning a good idea. You're just sequencing. Most of the items in your non-goals list are really a v2 backlog in disguise, and that's fine — write them somewhere and move on.