I used to work with a friend developing PHP applications for clients, he did the design work and I did the programming. He would have a meeting with the client to figure out what problem they were trying to solve, then together we would put a project specification together similar to the following:
Client Proposal
- Outline in a paragraph what the software needs to achieve, this is the top level overview of what the client has asked for.
- Outline individual features, e.g. user registration, what happens during this process. If the site sells things, how are the products listed, how are they added to the basket, how is the order completed etc.
- Continue to break the system down into sections/features and explain each feature.
For us, the client did not care HOW something worked from a programming perspective but they did care how it would work from the visitors point of view.
Once all that was done we usually had a extra section outline what other features we felt the site would benefit from. E.g. whilst writing the initial proposal often you'll think "Hey, if it can do that, then it would be nice if it also did this". Often, this extra functionality isn't something they client has specifically asked for, so we listed it at the end of the proposal as an added value thing and usually a way to charge more money.
My colleague would come up with mock designs of the UI interface and key features, sometimes as HTML template that you can click on and it pretends to add items to a basket etc so they can see the flow of the application.
Finally, we would come up with a Development Proposal. This is what outlined HOW we would write the application, what hosting requirements would it have, where would it be hosted and what environment was it running on. What models/methods/relationships would we have etc (even though I was the only developer on 99% of the projects this still helped us both understand what was going on under the hood).
A lot of our clients stating that the extra things we put into our proposals (such as they "hey, how it did this" features) were above an beyond what others had put forward. We had some projects that nearly doubled in size (and cost) because of the extra features we proposed that the client hadn't even considered. The proposal essentially said "What you've asked for this is... it will cost this £... but it can also do this, this and this for an exta £...."
Hope that helps, best of luck to you.