A fixed quote is only as good as the scope behind it. When an Odoo project runs over budget, the overrun almost always traces back to one of three numbers that were wrong on day one: the data migration estimate, the training estimate, and the hourly rate assumption. Here is how to check each one before you sign.
1. Data migration scoping
"We'll run the data migration" is not a scope. The question is what your data looks like when it arrives.
A real migration scope counts the objects: customers, vendors, products, open receivables, open payables, open orders, and historical transactions. It asks whether your product list has 400 items or 40,000, and whether those items carry serial or lot numbers. On our largest migration we moved roughly 478,000 records across 27 custom entities with zero referential-integrity failures, and that number was known before the quote was signed, not after.
Ask every bidder the same question: how many records, from how many source systems, and who cleans the duplicates? If the quote does not contain an answer, the migration line in it is a guess.
2. Training hours
Training is the most common missing line item. The software gets configured, the data gets loaded, and the budget has nothing left for teaching 25 people a new way to work.
Untrained users do not stop the project. They work around it: private spreadsheets, email approvals, shadow processes. Six months later someone bills a "phase two" to fix adoption problems that were a training line all along.
A credible quote states training hours explicitly: who gets trained, in what role, for how long, and whether sessions are recorded.
3. Rate assumptions
Two quotes with the same total can hide very different economics. Check the blended rate behind the hours. A quote built on a low headline rate with three times the estimated hours costs more than a higher rate with honest hours. Ask for hours and rate separately, and ask what happens when hours run over: does the fixed price hold, or does the change-order clock start?
For reference, our direct rate is $110/hr, $85/hr on a committed monthly block, and every quote we issue states hours, rate, and the overage rule before work starts.
The pattern
Quotes go wrong when the estimator prices the software and guesses the people and the data. Migration scope, training hours, and rate assumptions are where the guessing hides. Demand all three numbers in writing.
If you want a second set of eyes on a quote you already have, or a quote built the other way, contact us. We will tell you what the estimate missed.