Nobody writes "please blow our budget" in a change request. They write "loving the release! Could we also squeeze in a small mobile app before Friday? ๐" โ in a chat thread, at 9:41, to whoever happens to be online.
Why contracts don't catch it
The contract lives in a PDF. The requests live in WhatsApp, Telegram and Jira comments. By the time anyone compares the two, three sprints of "tiny extras" have already shipped for free.
The fix isn't a stricter contract โ it's checking every incoming request against the agreed scope at the moment it arrives:
- Client asks for something in chat.
- The request is compared against the signed scope.
- In scope โ answered with live status. Out of scope โ flagged, priced and pencilled into a future sprint.
What this looks like in practice
That sits outside the agreed scope, so I've flagged it to your PM โ we can pencil it in for Sprint 2.
No awkward conversation, no silent margin erosion. The client gets an instant, honest answer; the PM gets a decision to make instead of a surprise to explain.
That's the whole idea behind gavril's scope guard โ the contract finally sits where the requests happen.
โ All posts