'Outcome is really bad' is a vague term for me.
First can be addressed by enabling proper code review, design guidelines and a involved technical team lead.
All the above three can be addressed easily by periodic check-in. Define the periodic check-in's and what's expected after each phase. This will ensure that there are no surprises at the end. The involvement of product owners is as important and sometimes more important than others. Product owners should be part of these check-in and flag anything that doesn't meet expectations right away.
Managing and working with a remote team is skill and luckily I have always worked with a mix of remote plus office folks. You have to try out things that work for you like tools for collaboration, what's the sync up frequency between teams, etc. Setting up a team from ground up takes time and you should be open for difficulties during the initial phase. Take lessons out of all this and apply them to your next improved process.
Thank you for the response.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.