How can you know how long a new initiative to build a custom software product will take? What’s a reasonable amount to plan to pay to get started turning your vision into technically excellent software that can go live and start producing value? Once an estimate of the effort has been created, how close should you expect the true cost to be?
In the worst case, the answers to these questions are determined by an RFP/RFQ process. After a significant effort to document the desired solution, software development firms are asked to review it and provide a wild guess as to how long it might take them to accomplish what’s in the doc. Depending on how overages are covered, there may be more incentive to provide a low number rather than a realistic number. Only then does the development team start the process of truly discovering whether the proposed features will truly meet the business needs, or whether there are alternatives to consider that may better meet business needs (depending on how the contract is setup, the development team is often strongly discouraged from exploring better solutions, and is instead incentivized to deliver subpar results).
In the best scenario, a development team is involved in the entire process so that they can provide insights into the technical viability of various approaches (will this approach be a big waste of effort or is there a simpler way to achieve a similar or better result?). Their expertise can be used to collaboratively discover an approach that will solve customers problems in a cost-effective way that works with your business’ needs. When the whole team understands the ultimate goals trying to be reached by the software, they can choose implementation approaches that fully align with those goals, providing an experience that is unmatched by competitors.
Presumably you’re somewhere between the worst and best case scenario. You may still have an unavoidable need to provide some kind of numbers to get the project approved at all. Prioritize finding a professional, adaptable team you can trust and work with them to create an initial plan, using the skills of the whole team to discover optimal solutions. Ideally, your agreement with the team is flexible, allowing them to continue discovering throughout the entirety of the lifecycle of the product, so that your product never stops getting better and meeting your customers needs.