Look first at domain experience, not the number of logos on the website. Request a couple of case studies that sit close to your stack, and then ask specifically who actually wrote that code. A solid partner is happy to connect you with the engineers. Answers that name nobody at this stage usually mean the demo work came from somewhere else.
The contract warrants a slower read than the pitch. A few clauses carry most of the weight: intellectual property assignment, non-disclosure, and exit terms and handover. Everything produced must transfer to you once invoices are settled, together with documentation, fintech app development services pipelines and deployment scripts. Look closely at any clause that leaves framework code in the vendor's hands, because that is often the part you cannot replace later.
Find out how the estimate was built. A serious estimate is accompanied by a written set of assumptions, a breakdown per feature and an explicit range. A fixed-bid deal works only when the requirements are stable and documented; otherwise the vendor pads the number and you pay for uncertainty either way. Hourly billing puts the risk on your side, so it needs a sprint cadence, demos and a budget cap.
Process beats team size. Find out what happens when the scope changes, who defines done and how testing is organised. A mature team should be able to demonstrate a live build at the end of each sprint. Clear, vue js vs angular 2 written acceptance criteria stay the only reliable protection against endless rounds of rework.
Before signing, consider the handover before it becomes urgent. Insist that the repository stays on infrastructure you own from day one, and that a readme and architecture notes are kept current as the code changes. A vendor with nothing to hide accepts it without argument; a long negotiation over it reveals most of what you need to know.