Consensys Bootcamp Final Project: Fair Freelancing

Original post here

Consensys Bootcamp Final Project: Fair Freelancing

TLDR: If you work at a company, it's "peer to peer" in that the company pays you directly. If you're a freelancer, the middle man (platforms like Upwork and freelancer.com) take a huge chunk of your income. I think a peer to peer model makes more sense for everyone involved in freelancing and perhaps some ideas below will get the gears turning for what that may look like.


Ten weeks into the Consensys Bootcamp, it was time to build out our final projects. The Summer 19' cohort learned the ins and outs of full stack development using the Ethereum Blockchain and we had 2 weeks to show off what we learned.

I wanted to be sure the project would:

1. Have some use in an industry I cared about
2. Have a good reason to be built using blockchain technology

At the time, I was working on a project to automatically outsource repetitive tasks like cold emails, birthday cards, and research, to freelancers. Having been a freelancer myself, I knew there were quite a few frustrations around platforms like Upwork and freelancer.com.

Most freelancing sites take a huge cut of the earnings from freelancers

Upwork, for instance, takes 20% for the first $500 billed with the client and 10% for lifetime billings with the client between $500.01 and $10,000 earned.

Yes, that means if you earn $10,000 as a freelancer, $1000 or more goes to the platform used. As an employer, additional fees can range from 1%-5%.

The (partial) solution? Create a smart contract on Ethereum that enables freelancers and employers to skip over the fees entirely.

Is this against Upwork's policy? Yes. Do I think Upwork should take this large of a cut? That's for the market to decide, but either way, I sure as hell knew for a long term contract, I'd do anything to avoid those fees.


Before I talk about why blockchain should have a role in the long term solution, here's a brief overview of the project, step by step with a few basic pictures to detail the process.

Initial Step Outside of Contract

Freelancer and Employer agree outside of the freelancing site that they will do payment through the Freelance Campaign smart contract.

Step 1 (Freelancer)
Freelancer logs on through Metamask and initiates the contract. The Metamask interface allows both the freelancer and employer to communicate and pay for services similarly to Paypal or Venmo.

Step 2 (Freelancer)
Freelancer requests the amount of Ethereum owed from the employer based on the time worked. They must also input the employer's Ethereum address.


Step 1 (Store Owner)
The request for payment in Ethereum is clear on the interface and the store owner simply pays the request by clicking the approve button.

Step 2 (Store Owner)
The payment is taken from the store owners account and sent to the freelancer. A message displays verifying the transfer.

Why blockchain?

To be frank, with where the current product's at, using blockchain only has marginal benefits.

  1. The payment can be received much faster than waiting for a payout on Upwork or Freelancer.
  2. The fees are next to none.
  3. You don't need a bank account to be paid this way.

So, technically something like this could open the freelancer market to around 2B of the world's unbanked people, but clearly this is only on Testnet (Think fake Ethereum).

Also, the usability is absolutely terrible, it looks like a 3rd grader drew this up using a pen and paper, and there's a huge knowledge barrier needed to interact with and use blockchain tools.

For the most part, PayPal or Venmo could do what I pose here and do it in a way that's more "friendly" (Assuming that money transfer time doesn't matter and the freelancer/employer has a bank account).

With that said I think a slightly improved version of this could drastically improve the job security and appeal of being a freelancer or freelance employer.


First Benefit: Preventing Defaults

I know multiple freelancers who've worked a week's worth of time, only to have the employer cancel their credit card and their account, so a payment never goes through. In other words, bad people do exist in this world.

Luckily enough, Ethereum is pretty much programmable money, meaning we can use basic logic for money to "send itself".

If we held payments in escrow equal to a week's worth of work, we can implement some simple logic to ensure this type of scenario never happens again. For instance, if a payment is not made within a certain time period, the money held in escrow would automatically transfer from the employers account to the freelancers.

On the flip side, Freelancers might never complete the work that they received payment for upfront. Once the freelancer posts confirmation that the work is done, the funds could be released from escrow, as opposed to being bound by time. Nisreen Bahrainwala, thanks for the input here.

Second Benefit: 5–10% savings

Today: Suppose you're the employer and I'm the freelancer. You're paying me $50,000 a year, and only about $45,000 of that gets to my pocket. You're paying an additional $1,500 in fees just to make the payment. We're looking at around $6,500 that goes to the freelancing platform that year or 13% of the total payment.

Tomorrow: If you and I agree, "Hey, let's do 25% of the payment through Upwork and make a smart contract that pays the other 75%, we could save some money."

How much? Based on the example we just went through at a $50,000 annual contract, only $12,500 would move through Upwork, so Upwork would take around $1,500, and the Ethereum fees would be around $15 give or take. You save around $1200 in fees as the employer and I as the freelancer earn an extra $4000 that year.

That's a 10% difference simply in fees.

This system would be built by using an oracle (reliable datasource outside of an Ethereum smart contract that the Ethereum smart contract has access to). The oracle would pull the data from an employer's Upwork account through the Upwork API. The necessary payment would be made on a daily or weekly basis depending on services confirmed by Upwork's API.

Could Upwork just update their API and screw this idea up? Definitely. Would this type of solution actually work if built today? Probably not. Either way, I think this brings up important questions to what the future of work and especially freelancing looks like.

Anyways, this was my fun little thought experiment and final project for a bootcamp, but if you have knowledge in the freelancing space, I'm curious to hear your thoughts!