Step one, talk to a very wide variety of the potential clients and find out their needs, what they are currently using and what they wish their current product(s) could do. Spend 10 times as long at this as you think you need to right now. Draw out a potential GUIs on paper and have the people you interview look at the drawings and make suggestions. If at all possible, hire some people in the industry as business analysts to help with this step. Ask about legal requirements. Some industries have a lot of legal complicance issues and others do not. Anything related in any way to the medical world and you will need to research and fully understand HIPPA requirements, for instance.
Design the database structure and a GUI then get some real users to play with it. Refactor based on what they say (it's amazing how many things users leave out in requirements gathering that they don't think of until faced with an actual GUI).
Think about what needs to common through all the potential customers and where you might need customization - your interviews should guide you here. Decide how to handle customization. Or even if you will allow it. This may depend a great deal on the industry and how standard their practices are.
If this is box software, often the design includes a table with customizable fields that can be added to forms and reports by the user.
In a web-based solution, often each user wanting customization may have their own database where the custom information is stored (and a central standrad database for the noncustomizable things) and the programmers make the changes based on requests from the clients. If you take this route, the second time you do a simliar customization for a second client, consider if you need to refactor to make this a new feature of the software available to everyone. No need to write 17 custom attendance reports that vary only by one or two fields when the client can for less money have a standard report.
In the web model, you can also create a bunch of modules and have the clients pick and choose which to add to their custom solution. They would pay based on the number and complexity of the modules they choose. So the client that wants only three of the standard reports would pay less than the client that wants all 27. When a new customization is suggested, the client pays for development if the suggestion doesn't seem to immdeiately apply to others, but the module is done so that others can buy it as well. If others buy it, the orginal client who asked for the change might get part of the money until their development costs is paid. They could also require that something remain as a custom module and pay a much higher price for this work. We have some clients who don't even want their data on the same servers in the same location as other customers. Needless to say, we charge a huge premium for doing something like that.
Customization is expensive and can lead to many more programmers needed. Consider very strongly before you go the customization route. It can really be the thing which sells your software solution, but it doesn't scale well. It isn't bad when you have ten cutomers but when you have a couple of hundred it can get out of control very quickly. It is a lot harder to back off of customization once you offer it, than to add customization later from a standard suite. Often the need for customization is more in the organization of corporate reporting. If you can create a reporting interface where people can pick and choose what information they want and save their own custom reports, you might handle most of the customization needs in your industry without full-scale customization needed.