The Prevention System We Use
Here's the system we apply to every V12 Labs build to keep scope from expanding:
Step 1: Spec lock before build start
Before a single line of code is written, we produce a written spec that defines exactly what's being built. Both sides sign off on it. Nothing is in scope that isn't in the spec.
This isn't bureaucracy. It's a forcing function for clear thinking before the build starts, when changes are free. Changes during the build are expensive. Changes in the spec document are free.
Step 2: The v2 list
Every feature request that doesn't make it into the spec goes on a running v2 list. This is not a rejection. It's a deferral.
The v2 list serves a psychological function: it gives founders somewhere to put good ideas that aren't in scope now. Without it, every deferred feature feels like a permanent rejection, which creates pressure to add it to the current build. With it, "we'll add that to v2" is an honest, actionable response.
Step 3: The "can we ship without it" test
Every mid-build request gets evaluated against one question: can we ship the MVP and still test whether the core value proposition works, without this feature?
If yes, v2 list.
If no, it genuinely belongs in scope. Add it and adjust timeline or reduce scope elsewhere to compensate.
Step 4: Explicit scope change process
If something genuinely needs to be added to scope mid-build, we have a process: document the change, assess the impact on timeline, decide what gets removed from scope to make room. Not what gets delayed, what gets removed.
A scope change is a trade. Something comes in, something goes out. If nothing goes out, the timeline moves. This framing makes the cost of scope changes visible and concrete.