This article was originally posted to Maker Mag in July 2019

I have been doing contract development for seven years, and mucking about with software for as long as I can remember. When I started contracting, I was coming straight out of university. Although I didn’t have much professional experience, I had been coding since I was twelve years old and had built countless projects, so knew my way around a codebase.

My first contract experience was a similar story to many contractors. I had just moved to London after university and was borrowing money from friends to pay rent. I had a mixed bag of odd jobs and freelance work, but it didn’t cover the bills.

Then, one day, a recruiter reached out to me on LinkedIn. They mentioned this “once-in-a-lifetime” contract position for an “exciting and dynamic company” paying an “excellent day rate.” They even told me that I was the “perfect candidate”.

Sounds familiar? Flattered and naive, I accepted the interview. Before I knew it, I was doing my first contract in west London as a Django developer. I felt like I was king of the world, with all the money I could possibly need!

But this honeymoon period slowly eroded over the following three months. The project was a nightmare. The team was mismanaged. The office was noisy, with construction going on next door. If that wasn’t enough, it slowly dawned one me that I was charging almost 50% under market rate for the work I was doing.

I needed to get out of there, so I terminated early and bought a round-the-world flight.

Better contract jobs

Seven years on, I have now had countless clients and consider myself an experienced contractor, often commanding above market rate and working remotely—no more noisy offices! But finding these contracts can still be difficult, and just waiting for recruiters to come to me really limits my options. Often, the best contracts come via my professional network, especially since there is no recruiter taking 10-20% of my day rate.

My contractor origin story isn’t unique, and I have heard it over and over again from contractor colleagues throughout the years. Poor clients, terrible offices and awful rates.

These stories and my own experience inspired me to create wellpaid.io, a contract-only jobs board for developers and designers. I wanted to build a platform that made it easy to understand market rates and find remote work. Existing job boards didn’t really cut if for me, since they are mostly concerned with permanent positions and don’t really focus on contractors.

The chicken and egg problem

By early 2018, I was in the market for building a B2B lifestyle business. B2B businesses are low volume and high margin, which is perfect for building a passive income with low maintenance. I have always admired Pieter Levels’ Remote OK so, over Easter weekend in 2018, I created some quick designs in Sketch for my new project. The initial focus was on rate transparency.

I was aware that the main challenge with building a job board was going to be overcoming the classic marketplace chicken and egg problem. How would I get applicants without any jobs, and jobs without any applicants? I talk about this more in-depth in my interview with Growthhacklist.

The solution to this—favoured by Remote OK—was to aggregate jobs from third party sources, an approach which I spoke to Pieter Levels about to understand the impact on mixing aggregated and paid listings.

Following this model, I built out an MVP using Next.js and React in my spare time over the next couple of months, using a Node.js service hosted on Heroku for scraping jobs. I hadn’t used Next.js before, but opted to use it for the SEO benefits of having statically rendered pages. I was very familiar with React/Node.js at the time thanks to my client work, so it didn’t take me long.

This is not my first product, and I’m a huge fan of reducing time-to-market for MVPs, so I often opt to use hosted services than roll my own. Whilst these are normally more expensive, I generally do a napkin calculation for the cost of my time, and factor in what I could charge a client to do the same work. In this vein, I opted to use Algolia for search and Firebase for the database/authentication. This is a markedly different approach to Pieter Levels, who self-hosts all his code.

Launching and the post-launch dip

The first version of wellpaid.io was pretty simple. It was just a list of UK-based and remote jobs aggregated from other sites, with a rate score on each job (low, medium, high), a remote job filter and a sign up form. You couldn’t even post a job without contacting me.

I did a soft-launch within my network in the summer (one benefit of solving your own problems), and once my client work had settled down, I launched on Product Hunt in December last year. It hit fifth place with over 500 upvotes, which I was totally pumped about.

December saw about a thousand people applying to jobs via wellpaid.io. By January, this was under 500, and February under 200. This is not uncommon with big-bang launches like this, but that doesn’t mean it’s not demoralising.

However, the launch gave me faith that people wanted these positions. If people were applying to positions, then surely people would pay to post positions. Validation!

Come January, I had my first paying customer. I found them via my personal network, and they filled their role with an awesome React.js developer within 5 days. The applicant seriously rocked, and was a contributor to the React codebase on GitHub. More validation!

Going full-time

Since February, I’ve been working on wellpaid.io full-time, iterating and improving things in order to get the metrics to a happy place and find product market fit. The main changes I’ve made include:

  • Adding Google Jobs support
  • Aggregating US-based contracts and adding more remote contracts
  • Optimising page performance for SEO
  • Refining product messaging

The culmination of this effort is that application count is gradually improving. May and June have seen a growth of around 50% month-on-month, with 692 and 1175 applications respectively. This is a high conversion rate, with 20% of visitors applying to jobs.

The biggest impact for me was caused by adding Google Jobs, which is now driving the majority of my traffic. If you’re running a job board, it’s definitely worth spending the time adding this integration since it’s a piece of cake.

What’s next?

The next phase for me is to build revenue. As I already mentioned, I’ve had one successful listing earlier this year, and I’m hoping to sell more listings to the same customer in the coming weeks.

I’m also pursuing a novel strategy to find leads, offering a 30-day money back guarantee if you don’t hire someone from a job listing, eliminating the risk for hirers and helping to build trust in an unknown platform. The challenge with this strategy is actually delivering enough applicants for them to find the ideal candidate. This obviously won’t always work until traffic levels are higher, but has been very well-received when speaking to leads.

It’s worth noting that this wasn’t a strategy I started out with—finding product market fit has been an iterative process.

Additionally, I’ve been looking to free myself up for more client work to pay the bills. I’ve also hired a freelance sales rep and team of content writers for the blog. They’re both working well, with the sales representative building a really solid pipeline, and closing one customer so far.

Product-wise, I’m trying to slow down on iteration and allow some organic growth to continue. Developing product consumes a lot of time, and I don’t want to put more energy into it until I’m starting to see some more results from the sales pipeline. Besides client work, I’m also going to be looking at starting new projects, such as 5 Million Books, a book dropshipping platform for Shopify.

My long term goal is to build multiple passive income streams whilst continuing to contract part-time. As my passive income streams grow, I will reduce my contracting until I’m fully financially independent. Then I’m thinking about starting a larger-scale environmental business.