Start with domain experience, not the number of logos on the website. Ask golang developer for hire two or three engagements that sit close to your technology stack, ai workflow automation services and then ask which engineers actually built it. An honest provider is happy to connect you with the people who would work on your project. Answers that name nobody at this stage generally mean you are talking to a reseller.
The contract deserves more scrutiny than the proposal. Three clauses do most of the work: intellectual property assignment, confidentiality, and notice periods and handover. Every artifact should transfer to you once invoices are settled, along with documentation, pipelines and deployment scripts. Be careful with wording that keeps reusable components in the vendor's hands, because it is usually exactly the piece that locks you in.
Find out how the estimate was built. A serious estimate comes with a list of assumptions, a task-level breakdown and a best case and a worst case. A fixed price is only reasonable when the requirements are stable and documented; in any other case the vendor adds a risk premium and you fund the buffer regardless. A time-and-materials model puts the risk on your side, so it needs visible weekly reporting and a spending cap.
How the work is run matters as much as team size. Ask what happens when the scope changes, who defines done and what the QA setup looks like. A mature team should be able to walk you through a working build every one or two weeks. Acceptance criteria in writing are the practical protection against an argument at delivery time.
Finally, think about the handover while the relationship is still good. Insist that the code repository sits in your organisation from day one, and that documentation is written as you go rather than left to the end. A vendor with nothing to hide says yes immediately; resistance at this point reveals most of what you need to know.