Nowadays many development companies work on a time and expense basis with an obligation of means. It comes down tot he fact that "they will do their best to develop a properly functioning software". You should avoid such situations. Give us the contract in advance and we will convert it into an obligation of result.