A quote that comes back within a day is a red flag rather than good service. An experienced provider returns questions first: about users and rest vs graphql comparison volumes. A supplier that prices with no clarification is pricing a guess, and a guess resurfaces as a change order — at your expense.
Watch for a mismatch between the team in the pitch and the developers actually assigned. Request named engineers in the agreement, with wording covering replacement. A provider that talks only about abstract roles fixed price vs time and materials will not commit to specific engineers is reserving the option to staff you with whoever is free.
Ask for access to the repository from the start. A partner that shows nothing between demos is inviting you to trust a black box. Regular commits and pull requests reveal the actual pace far better than a slide deck. The same holds for the build and deployment setup: if nothing runs automatically, assurances about quality are just talk.
Ambiguous contract language around code ownership is rarely an accident. The document must state explicitly that the code, designs and documentation belong to your business upon settlement of the relevant invoice. Check also which country's law applies and the payment schedule: a request for most of the money up front with nothing due in return for weeks eliminates any leverage you would otherwise keep.
Finally, look at communication. Establish how many hours there will be with your timezone, which person handles your questions and how quickly. Four hours of overlap generally works; no overlap turns each small question into a lost day. Unclear written communication in the proposal rarely improves once the work starts.
