1. First of all you need clear vision of the product. Nobody except you can specify its purpose, number of users, functionality, etc. So, you’d better decide about that. It will simplify further communication with developers and the overall project.
2. Next you need formulate your vision and send a request for proposal. Usually, a request has a free form, but the clearer you state your requirements, the better the company will understand you. Therefore, give a detailed description of your vision of the product, system functionality; provide schemas or screenshots of desired screens and other material that may be useful for better understanding of your future product.
3. Upon receiving your request, specific people will be assigned to handle it. Typically these are a business analyst and a software architect. They will contact you within the next few business days for more details.
4. The business analyst and the architect will surely have some clarifying questions to you. They’ll make up a list of questions and send it to you. By answering these questions, you will be able to detail the general picture of your future product for those people. Such a discussion can take several iterations.
5. Then the business analyst will describe a concept of your product more formally. As a rule, this description consists of several pages outlining application structure, basic functionality and features of your product. The architect adds points related to technology and architecture. It is needed to ensure that all involved people understand your needs in the same way.
6. Based on the concept description, a work breakdown and a project plan are prepared. The work breakdown represents a list of workunits with the estimated efforts. This is used for calculating costs and deadlines in the project plan. For example, the total cost is efforts multiplied by standard rates. Then all of the documents are put together into a single proposal and sent to you.
After that you have a starting point to talk to developers and compare them with other custom software development companies. Judging by proposal preparation and accompanying communication, you can also make an opinion about the company and its employees: how fast they make estimation, whether they are responsible and careful, which level the proposal is performed at, and what treatment they showed of you. All this can be useful to you when deciding in favor of a custom software development company.