Some of the problems with using services such as Upwork and Guru are due to the very nature of these businesses, which is bringing people from all over the world together in an online environment. This is both an advantage, and a disadvantage.
It is an advantage, since it increases options for clients, and provides them with opportunity to hire low cost but qualified candidates, without having to hire anyone permanently. But it also causes a lot headache, due to dealing with too many applicants (many of them not qualified), and with many foreign providers with less than ideal communication skills in English. Especially the issue of foreign freelancers is a very important topic. For a web development project for example, a client can find a foreign web developer who is willing to work on the project for a fraction of what would cost to hire a local American web developer, but then how would you trust them? How do you make sure they understand the work, provide on time deliveries, communicate effectively, and do not waste your time with false promises and low quality work?