Ok but the problem is that customers don’t always know exactly what they want. Software isn’t like architecture. You can’t always predict every possible issue or corner case.
And that’s where they get ya!
They’ll win a lowest bid contract for the exact word for word spec.
But then will bill wayyyy more for any change request. Which will be numerous obviously.
That’s how actual project costs get inflated.