We kicked off the project with a Design Sprint. It helped us identify critical points, turn our assumptions into hypotheses and validate them. We built a prototype, tested it with our target users and went through a continuous iterative process. This was the key to try out different functionalities, keep the ones that proved to be useful and leave aside those that were not.
Once we completed the Design Sprint, we had enough feedback to move on to the design and development of the app.