A quote that comes back within a day counts as a bad sign. A competent team will come back with clarifying questions before any number: about integrations. A vendor that prices with no clarification is pricing a guess, and that guess will be corrected later — on your budget.
Look out for a mismatch between the team in the pitch and the people who will code. Request specific people rather than roles in the contract, end to end project development with a clause that requires notice before anyone is swapped. A provider that will only describe roles and will not commit to individuals is preserving the right to assign anyone it likes.
Ask for access to the repository from the first week. A partner that hands over nothing between demos expects you to accept a black box. Daily commits tell you who is really on the project far better than a weekly report. The same holds for the CI pipeline: if there is no pipeline, promises about quality remain unverifiable.
Ambiguous phrasing around code ownership is rarely an accident. The contract should state plainly that the code, designs and documentation belong to your business upon settlement of the relevant invoice. Also check which country's law applies and the payment schedule: a large upfront payment with no deliverable attached takes away the only leverage you have.
Last, software development process look at how they communicate. Establish how much working-time overlap the teams will share each day, which person answers your questions and within what time. A few hours of overlap generally works; none at all converts each small question into a day of delay. Sloppy written English in the proposal does not improve once the work starts.