A number produced without questions should be treated as a bad sign. A competent team will come back with clarifying questions before any number: about who owns the data and what happens on failure. A vendor that quotes without asking anything is simply pricing a guess, and the gap resurfaces as a change order — on your budget.
Look out for a mismatch difference between nearshore and offshore development the engineers on the sales call and the developers actually assigned. Ask for the names and CVs of the actual team in the statement of work, with a clause covering replacement. A team that talks only about abstract roles and nextjs development agency refuses to name individuals is reserving the option to staff you with whoever is free.
Ask for the source repository from the start. A partner that delivers code only at milestones is asking you to trust a black box. Daily commits tell you the actual pace far better than a weekly report. The same applies to the automated test suite: if nothing runs automatically, assurances about quality remain just talk.
Ambiguous phrasing around IP is rarely a formality. The contract should state plainly that the code, designs and documentation transfer to your business upon settlement of the relevant invoice. Check also the governing law and how payments are structured: a large upfront payment with nothing due in return for weeks eliminates your only leverage.
Last, look at communication. Ask how much working-time overlap the teams will share with your timezone, which named person answers day-to-day questions and how quickly. A few hours of overlap generally works; zero overlap converts every clarification into a lost day. Sloppy written English in the early emails rarely improves under delivery pressure.