An estimate that arrives instantly counts as a bad sign. An experienced provider returns questions first: about users and volumes. A provider that commits to a figure without asking anything is working from a template, and a guess resurfaces as a change order — on your budget.
Watch for a gap between the team in the pitch and those who eventually appear in the repository. Ask for named engineers in the contract, with wording about substitutions. A team that will only describe abstract roles and refuses to name individuals is keeping its own flexibility at your cost.
Ask for commit-level visibility from the first week. A provider that hands over a build only at the end of each phase is asking you to take delivery on faith. Regular commits and pull requests tell you who is really on the project far better than a slide deck. The same holds for the automated test suite: global software development company if nothing runs automatically, promises about quality remain nothing more than words.
Vague wording in the contract around IP is not an accident. The document must state in plain terms that the code, designs and documentation transfer to the client as they are paid for. Look too at the jurisdiction and offshore vs nearshore outsourcing the payment schedule: a request for most of the money up front with no deliverable attached removes the only leverage you have.
Lastly, pay attention to how they communicate. Ask how much working-time overlap the teams will share with your timezone, who handles questions and on what response times. Four hours of overlap is normally sufficient; zero overlap converts each small question into a twenty-four hour round trip. Sloppy written English in the early emails rarely improves once the work starts.