Being a computer programmer, this is all anyone tries to do. You come in you ask them what they want, specifically you map it all out you give them a price. They never like the price. Always get your 50% deposit up front. It never fails they start trying to making changes almost right away. You tell them no this is what you specked out and approved. Make sure you have the approval in writing. Which each change you then start giving them much larger number then they do not like that, your ripping them off, this change shouldn't take this much. It does actually take longer to change computer code than write it correctly the first time. So changes do cost more. These are changes to the specification. Make sure you are getting paid throughout the process. Because a lot of times if they can't get the changes they want they will call off the project and not pay you. Your 50% deposit help disaude this. However, it is not uncommon to say spec out a $20k software project and have it cost $30k when done because of changes they made. Also make sure you specify who is going to put in the data. A lot of times you get done and say here you go here is your application, and they say well it doesn't work there is no data. Can you please populate the data for us. Which Sure for another $10k and after you pay us for what your original contract says. Which says you will be providing the data.