Start small. Don't give your 12 month, number 1 priority, business critical, roadmap project to complete strangers. Get them to do something a trained monkey could do, because the code will be the least of the issues... outsourcing is a management challenge, not a technical one.
There is no way to send out a spec and get back exactly what you wanted without managing the project daily. Have you got time for that? Or do you always work from watertight specification docs anyway? I doubt it.

You probably rely on your developers to figure things out for themselves a lot. Outsourced devs don't know your business or your products, and won't make any smart assumptions for you or do any investigation; they'll just follow the instructions in the spec and that's what you'll get. Any abiguity and they'll send over a list of questions which they need answers to NOW or the deadline slips, so you need somebody always ready to answer them. Only way round messing up the project through lack of communication is to work very closely with them, every single day. Which is probably why you want a local company, right?
Consider hiring a Business Analyst/PM hybrid at your end to run the project daily, and demand daily builds to see progress and stop mistakes early before they get costly. Under no circumstances send a spec, wait 3 months to hear from them, and then realise it's all wrong. Money down the drain. Whoever pitches for the work should be selling you their dev processes which will prevent this, their reporting and quality assurance process, focusing on delivering the right solution, not covering their arse so they don't incur costs when it's wrong.
Rates vary wildly, but if you're outsourcing a project, pay for the work as a piece, not the time. Leave it up to the company if they put 1 or 100 developers on it and how much they mark up or discount their rates to get your project. Negotiate down with promises of future work if the first project goes well. As long as you're happy with the price and what's included.... project management, reporting, testing, documentation, deployment, 1 yr support etc... you decide what you need from them and what you're willing to pay. Have an idea of how long it would take your own team to build, add on overheads and subtract opportunity costs and probably 30% on top of that and you'll be doing well. Remember, their developers are probably on salaries, not day rates, and costing the dev company something like £350-400 per day to employ, so add in project overhead costs, travel etc and if they charge you anything around £500 per developer per day (after hefty discounts and negotiation) you're doing very well. Assume they'll start at £750pdpd as a ballpark, and £1000 upwards for specialists.
There's always India... I had a team of 15 developers out there for £1000 per month each. Management overhead, cultural divides, quality... all big issues which need significant investment and patience to overcome, but it scales well and pays off if you're in it for the long-term.
Another idea, if you have a team of developers who are tied up fixing bugs on old projects, outsource the bugfixing to free them up for new projects. That's great for morale, as they get to work on the cool new stuff all the time instead of it being given away while they slog through the buglists, getting bored and miserable.