“Fixed price” is only meaningful if both sides agree on what is being bought. Here is what we put in every quote, and what you should expect from anyone you are comparing us with.
A written scope, screen by screen
Not “a customer portal” but a list of screens and what each one does, who can access it, and what happens on each button. If the scope fits on one line, it is not a scope.
What is explicitly out
The out-of-scope list prevents most disputes. Data migration, third-party fees, content writing, app store accounts and ongoing hosting are the usual suspects. Every one should be listed as included or excluded.
Milestones tied to payments
You should be paying for delivered, demonstrable work, not calendar time. A typical structure is a deposit, then a payment per sprint or per milestone, with the final payment on acceptance.
A change process
Requirements change; that is normal. The quote should say how a change gets priced and approved, so you are never surprised by a line on an invoice.
Ownership and handover
Who owns the code, where the repository lives, whose name the hosting and domains are in, and what documentation is handed over. If this is vague, assume the worst.
What “done” means
Acceptance criteria — how you will test the work and how long you have to report issues before the milestone is considered accepted. Ours is ten business days per milestone with unlimited fixes for defects in that window.
A quote with all of this is longer and takes more effort to produce. That effort is the point: it is the cheapest part of the project to get right.
