Ask yourself three questions which let you be safe and never resort to penalties or other legal means – it’s painful enough if your partner loses a client:
1/ Has this freelancer ever built what you’re about to hire him/her for?
If yes and it looks cool – hire!
If not – keep searching.
I say this from my own experience. At Spark Solutions () we’ve just built a large multi-vendor marketplace. It took us a year. I would have never guessed how many challenges we would encounter while developing this project. Technology is only half of the challenge – the rest was business and third-party related.
It was really trial and error – for everyone. So learn from other peoples mistakes – not your own 😉
2/ Is the code this freelancer creates / about to create easily transferable to other people – freelancers or agencies? Is your investment secure if the person you choose doesn’t deliver?
Make sure all the code is yours and you have access to it (Github). Do not let anyone take your code hostage!
3/ What are you getting for your money?
Never pay everything up front!
Break your project down into stages of separate, complete modules that do some part of what your website is suppose to do. Demand real-time access to project management tool like Pivotaltracker or Assembla. Track your guy’s progress.
If you are satisfied with the current module (log in/register, invite friends, post/edit/delete an auction, bid/buy/review history) – then pay up and continue with the next one.
Penalties are difficult to enforce and ruin your relationship with the external team. It’s better to prevent then penalize.
These are some good project management practices from the client’s perspective. Hope it helps. Good luck!
PS. Check out our CTO as a service offering to design your product development strategy.