A written scope before work starts
The deliverable, the acceptance criteria and the boundaries are agreed in writing before the first commit. What is in scope and what is out is explicit, so there is no argument later about what was promised.
What to verify: Ask to see the scope document before signing. It should name the deliverable, the acceptance tests and the exclusions.
A fixed price for the agreed scope
The price is fixed for the agreed scope. If the work takes us longer than estimated, that is our problem, not yours. Changes to scope are priced separately and agreed before they start.
What to verify: Check the contract separates the fixed price from a change-request rate, and that changes need your written approval.
A fixed date with milestones
The delivery date is agreed up front, with milestones along the way so you can see progress weekly rather than waiting for a reveal at the end.
What to verify: Ask for the milestone plan. Each milestone should have something demonstrable, not just a status update.
Production quality, not a demo
The deliverable is built to run in your real environment with real users: tested, documented and deployed, not a prototype that needs rebuilding.
What to verify: Acceptance should happen in your environment against the agreed criteria, not on our staging server.
A clean handover
At the end you own the code, the documentation and the knowledge. Your team can maintain and extend the work without us.
What to verify: Verify the handover includes a walkthrough with your engineers and documentation they actually follow.