Every project starts with a requirements gathering process where we discuss all aspects of the project, including hosting environments, targeted sets of users, targeted devices and features to include in the application, etc.
This can take place in a formal meeting environment, in emails, or from telephone discussions. The purpose of requirements gathering is to put together enough information about a project to start planning to execute. Then we compile what we learn and start thinking of an execution strategy.
Are we going to require a new abstraction layer? Will we use Xamarin Forms?
We look at all projects, from all angles and determine what we feel would provide the most value for the financial, technology and time investments required. We then prepare a requirements document to begin design and development of the application.