Brett,
As a Program Manager and Web Engineer Developer I have always requested and received an upfront payment with all my contracts. Although I set that expectation during my first communications with a customer.
This is how a contract for my organization normally goes.
1. Respond to a Request for Proposal (RFP). My team and I will review requests for proposals and determine if there are any requests that are within our expertise and we have the available time based on our on going project schedule.
2. Prepare Proposal for perspective customer. (Usually around 6 - 24 Man Hours depending upon size of project and scope of work)
3. Submit Proposal to Perspective Customer schedule first meeting. This is a tricky part as you want the proposal to include enough information where the customer understands what you are proposing but so much where they can take your work and use that proposal to build there own project.
4. First Customer Meeting - spell out the proposal and walk through the project. Using Whiteboards, Slide Presentations and mock ups explain the process to the customer. During this meeting you spell out the project milestones. These milestones include payments on the project based on the percentage of completion. Again this can get a little tricky based on the size of the project. Smaller projects will include an upfront payment and a completion payment. Larger projects should include milestones based on major completions of the project. For instance: Initial application (site design) and beta testing of the application. Database design and database normalization. Database data entry. Alpha Testing, beta Testing, Go Live and project Completion.
Set Customer Expectations during the meeting. Set Realistic Timelines for the milestones. Set Project Goals. Set Project Expectations. Discuss What-If's and will be many of these based on a large project. Spell out the Project Goals.
I call these S.M.A.R.T. Goals.
1. Specific
2. Measurable
3. Achievable
4. Realistic
5. Timely
Discuss the Change Order process and what is considered a Change Order.
Spell out project scope and make certain that everyone, the project team and the customer team, understand what is being developed and agree on the scope of the project and how changes will impact the timeline and the cost of the project.
5. Followup with the customer after a few days with a overview of the presentation and thanking them for there time. Email correspondence is usually good and make certain to stay in a professional business type email.
6. Wait for the customer to decide which team they will select for the project. Depending upon the type of contract, small business, large organization, local government or federal government this can take a while. Sometimes there are many approvals that are required on large projects. I have had projects that have taken over a year from the initial meeting until the project kickoff meeting. I always have a couple of project in the pipeline to keep my team busy.
Notes: During the initial customer meeting I will apply percentages to the payment schedule. Normally the first payment will cover my upfront costs of the projects. That will include time, man hours, any equipment needed, any third party vendors that may be needed and any hardware. Normally the initial payment will be around 40 to 50 % of the project cost. This is pretty much standard.
Then I will break down the remaining payments over the length of the project with a 20% final payment at project completion and project checkoff.
Of course this can all be adjusted based on the customer and my comfort level with working with them.
One thing I cannot overly stress: Make certain that with each milestone there is a written way to confirm the milestone completion and that a signature is required from both the project team and the customer team. Make certain that the customer understands that the signature signifies that the milestone is completed and triggers a payment to the project. If you set these expectations up front during the kick off meeting there is normally very few problems with the project payments. If you leave this open ended and try to enforce this after the project begins it just creates truest problems with you and the customer.
I hope this helps you. I have just spelled out for you what has taken me 20 years to perfect. I use this type of process with all my projects with some slight modifications based on the project size and how well I know thew customer and it has worked very well. I have customers that have projects that go from a few thousand dollars to several million dollars and many of them I have done 3 or 4 different projects for based on repeat business.
Running a project team can be a challenge. It is kind of like web developing, constantly changing and a balancing act between keeping the newest technologies deployed and making certain that everything stays stable.
There are many more things I could put here but I think this gives you a good overview. Let me know if there is anything I can help you with.