The number that blows a build budget is rarely the first quote, it is the additions that pile on afterward. This piece explains how vague requirements let scope (and cost) creep, and how a written spec with an explicit out of scope list protects you. It gives you the vocabulary to hold a vendor to what was agreed.
Vague requirements are the root cause of budget overruns
Write down what is explicitly out of scope, not just in
Handle new requests as priced change requests, not freebies