Stay in the Mix


So why did I never use UpWork? Or more accurately, why did I never win a bid that I submitted of UpWork? Well let's start with an actual contract post from UpWork.

"We are looking for someone to design a website that sells the design services site where a customer goes online uploads pictures and fills out a survey for the room that they are looking to have designed. We are also looking for the ability to funnel traffic from the social media sites through an Amazon store front for the sales of furniture and other home decor"

Fixed Price: $1,000

Location: Only Freelancers from the US may Apply

Skill Level: Intermediate (looking for a mix of experience and value)

This is a fairly typical example of a project description that customers post on UpWork. At first glance it might seem like a legitimate requirement, but the moment we delve deeper it falls apart.

Let's start with the very first line of the request "we are looking for someone to design a website....". The first question that comes to mind is this - who is this "someone"?. Is this someone a designer? Is this someone a developer? Is this someone a unicorn designer-developer that can magically make a site appear? This statement also misses out on any UX requirements. Will they be happy with a basic bootstrap theme? Does the site need a complete custom look and feel? Do they already have low or high fidelity mockups?

Let's look a bit further,

"....that sells the design services site where the customer goes online uploads pictures and fill out a survey for the room that they are looking to have designed."

From this I can gather that site is for a design services company of sorts. The site will involve a customer uploading a picture of the room that they would like designed, and will require the customer to fill a survey form, which will ask the customer some details on the room that they would like designed. These are all reasonable assumptions, but given the vagueness of the language I might be completely wrong. More importantly though, if I am right, there are several open questions that need to be clarified:

Image Upload Related Questions:

  • What happens to the uploaded image? Where is it stored? Is it displayed on the site somewhere or is simply uploaded and stored away on an S3 bucket?
  • Do we need a system to generate thumbnails of the images uploaded?
  • Do we need to validate the images using some sort of image recognition? Can anyone upload anything? If these images are viewable publicly then what does the moderation process involve?

Survey Form Related Questions:

  • Is it a single survey form or are there different types of survey forms involved? For example, the survey form for a bathroom or a kitchen may be vastly different from a bedroom or porch.
  • Are we simply providing the customer with a list of values that are selected from a drop-down? If so, what are the values/fields that go in as part of the survey form? How big is it?
  • Will the user be able to save the partly completed survey and come back later to fill it?
  • Are the images attached in certain sections and referred to from the survey?

Other Questions:

  • Is there a whole admin section missing?
  • What happens to the survey data collected? Who is its intended audience and how do they access this data? Is the survey simply converted into an email that is sent to site administrators?
  • Are there any next steps involved from the perspective of the user that completed the survey? Is a thank you message displayed to the user and a copy of the survey submitted emailed to them?
  • What is the expected peak load in terms of users on the website ?

Now comes the vaguest and final part of an already very poorly defined request:

"We are also looking for the ability to funnel traffic from the social media sites through an Amazon storefront for the sales of furniture and other home decor."

What does this even mean? It seems like a completely different set of unrelated requirements added as an afterthought.

Now let's look at some of the metadata associated with the request - this is where things get even more interesting. The fixed price bid on this project is $1,000 and it has to be from an on-shore US-based, intermediate skill freelancer. This seems incredibly unrealistic. To objectively determine how unrealistic the ask is, I priced this myself. I consider myself to be an "intermediate" level Solution Architect based out of Australia, which has similar price points to the US.

Below are some of the key assumptions that I made with the objective of keeping the cost to a minimum:

  • There is none or minimal site administrative functionality
  • Images uploaded are not validated in any form whatsoever
  • Images are not screened or displayed anywhere
  • The design is basic bootstrap / purchased basic bootstrap theme
  • The stack will be NodeJS / React
  • User login can be any one of the social login platforms - no native authentication via email/password
  • The survey form cannot be continued after being abandoned
  • Once a survey is completed everything is summarized and sent as an email to the site administrator OR just have a basic list and a forms view - where the site administrator can view the survey results and photos
  • Admin role will be hardcoded or fixed from database

Based on these assumptions here is a breakdown of the time it would take me or someone like me to complete the work:

  • Design: 1 days
  • Front-End: 2-3 days
  • Back-End: 2 days
  • Copywriting: 0.5 days
  • Testing / Bugfixing : 1 day

All in all, this looks like a full work week + weekend worth of work given the assumptions made above. At my general hourly freelance rate of approximately 50 USD per hour, this works out to about a $2,800 project at a bare minimum. For someone based out of let's say India with a similar skill set to mine the price might be $1,000, but barely.

The level of detail that developers can get out of the customer prior to providing a bid is usually similar to what have seen in this example. The customer is often not willing to elaborate further until the bid is accepted, either because someone will steal their grand idea or they want to force the developer to a fixed cost bid.

By the time the bid is accepted, it's already too late - the magnitude of the problem becomes clear, and the developer cannot back out of the bid. As a result, they cut corners everywhere in development. In this example, you can see the assumptions that have to be made in order to deliver this project. In the end, the customer will most likely not be happy with the result even if they agreed to a higher price point of nearly $2,800.

The only developers that will bid on something like this are either developers that are extremely inexperienced and naive or those that serve as proxies for developers in lower-cost countries. Even if the work is taken on by a US-based "proxy" developer - i.e. a developer that takes on the work and then simply farms it out to his/her trusted developer partners in a lower-cost country, the assumptions made will severely limit the quality and functionality of what can be delivered. Additionally, intermediate level developers in a lower-cost country are not super cheap. They can charge anywhere from between $15-$25/hour, which will most likely leave nothing in terms of profit margin for a US-based proxy. The only way for the US-based proxy to make any money on this transaction would be to farm out the work to an inexperienced developer from a low-cost country, which will then further compromise the quality and velocity of what is delivered.

This is a lose-lose value proposition from the point of view of both the developer and the customer. Now if this type of request was an anomaly on UpWork then I would still consider using the site and filtering it for nonsensical requests. However, on UpWork, this is the norm. UpWork makes its margins regardless of whether or not a request is successful from the point of view of the customer or the developer. It's a system with misaligned incentives in which the house (UpWork) always wins. It's a system that I want no part of.

I helped conceptualize Archimydes to solve for the problems I encountered with UpWork. What we have built is a system that enables customers, developers, and the platform provider to engage in a much more fair and transparent manner. A system in which the customer, developers, and the house all win!

Stay in the Mix