Our experience has taught us that customers know what they want, they just can't see it in their head. We solve this problem by building prototypes of the user interface. From there, it is easy to add representations of the functionality they envision. What we're left with is a "Graphical Specification" of the solution.
Here are the 7 simple steps we take with every customer.
This incremental approach to product development assures the customer that we heard and understood what they asked for. During this part of the project, our fees are based on time and materials. After the prototype and requirements are put in place, we typically charge a fixed price for the implementation.