Look first at domain experience, not the number of logos on the website. Ask to see two or three projects that match your domain and your stack, and then find out which engineers actually built it. A solid partner is happy to connect you with the tech lead. Vague answers at this stage usually mean the demo work came from somewhere else.
The contract deserves more attention than the sales deck. Three sections matter more than the rest: assignment of intellectual property, the NDA, and termination and handover. Every artifact should transfer to you on payment, together with designs, scripts and infrastructure configuration. Be careful with any clause that leaves reusable components outside the transfer, since it is usually the part you cannot replace later.
Find out how the estimate was built. A credible estimate comes with the assumptions behind it, a breakdown per feature and a range rather than a single number. A fixed-bid deal only makes sense when the scope is genuinely frozen; when the scope is still moving the provider prices the risk in and you pay for uncertainty either way. Time and angular vs vue materials puts the risk on your side, nextjs vs laravel so it requires a cap, regular demos and transparent reporting.
The delivery process beats team size. Ask what happens when the scope changes, who defines done and how testing is organised. A mature team can demonstrate running software rather than status reports. Acceptance criteria in writing stay your only real protection against the it-was-never-in-scope conversation.
Finally, plan for the handover while the relationship is still good. Insist that the repository lives under your account from the beginning, and that documentation is updated as part of the work. A partner who is comfortable with this says yes immediately; hesitation here tells you most of what you need to know.