Look first at domain experience, not the length of the client list. Ask to see a couple of engagements that match your stack, and then find out whether those engineers are still with the company.
Project outsourcing implies the vendor owns delivery: the provider staffs the roles, the provider manages the plan, and they absorb the delivery risk.
Ask where their numbers come from. A credible estimate is accompanied by the assumptions behind it, a task-level breakdown and an explicit range.
Integrations are the second big multiplier. A screen that writes to your own database is predictable; the same functionality wired into an old accounting system is another matter entirely.
Non-functional requirements quietly rewrite the estimate. An internal tool used by a small internal team is a very different build from the same feature set handling public traffic.
Staff augmentation is the middle option: you add engineers but keep responsibility for delivery on your side. It moves quickly — a suitable engineer can join in weeks rather than months — and the commitment ends when the work does.
Who actually does the work matters. An hourly rate tells you little on its own: a senior engineer at a premium rate is often cheaper per delivered feature than two juniors who require constant review.