Start with proven experience, not the size of the portfolio. Ask to see three or four case studies that match your domain and your stack, and then ask whether those engineers are still with the .net outsourcing company. An honest provider will introduce you to the tech lead. Evasive answers at this stage generally mean the delivery team is not the team you were shown.
The paperwork needs more scrutiny than the proposal. A few clauses carry most of the weight: assignment of intellectual property, the NDA, and notice periods and handover. Every artifact must transfer to you on payment, including designs, scripts and infrastructure configuration. Be careful with language that keeps reusable components outside the transfer, since that is often the dependency that makes switching painful.
Ask where their numbers come from. An honest estimate is accompanied by a list of assumptions, a breakdown per feature and a best case and a worst case. A fixed price works only when the scope is genuinely frozen; in any other case the supplier prices the risk in and you fund the buffer regardless. A time-and-materials model puts the risk on your side, so it requires a cap, regular demos and transparent reporting.
Process matters more than the number of developers. Find out how change requests are handled, who writes the acceptance criteria and what the QA setup looks like. A mature team should be able to show you a working build every one or two weeks. Acceptance criteria software development companies in dubai writing stay your only real protection against the it-was-never-in-scope conversation.
Last, consider the day you no longer need this vendor while the relationship is still good. Insist that the source repository sits on infrastructure you own from the first commit, and node.js software development company that the documentation is refreshed in every sprint. A partner who is comfortable with this says yes immediately; a long negotiation over it reveals a great deal.