I have been a freelance Data Scientist for 6 months now, and I have more job offers than I can manage. I get offers almost every day and I have to turn down offers almost every week.

Some people have written me to get some tips on how to start and get some clients, so I wanted to share a few things I tried to find clients on Upwork, LinkedIn and online communities.

Look for projects on Upwork

Set up a nice profile, showcase your project portfolio, research the market, bid on several projects and be willing to set a cheap rate at the beginning. You won’t make much money the first month, but you will get exposure, your Upwork rating will improve, and you can start to bid on some higher-paying jobs.

I got my first job on Upwork after sending more than 20 applications. It wasn’t even a data-related job, I had to use a Python package to create a series of videos. I think I got $70 for the whole gig, and probably I spent $50 on AWS charges. So, basically $20 for something like a weekend work. But after 6 months my rate went up 4 times, so don’t think it takes so long to get to a decent hourly rate.

Improve and polish your LinkedIn profile

Many recruiters will write you here. Insert the right keywords on your profile, document your previous work, and post something work-related every week, if you can. This is a long game but pays off because instead of bidding for jobs, in the end, recruiters will start to write you.

I got a few teaching opportunities this way, and they were very helpful at the beginning, when I was just starting, and needed a few stable streams of income.

Join online communities of entrepreneurs

Several small businesses look for Data experts and beyond. They have projects ongoing and want to hire freelancers for a short time. You can meet them in online communities of small business owners or entrepreneurs. Look for them on Twitter, Discord, Slack, and Reddit, there are plenty of them. Engage with them, share what you know and most importantly share what you do, and soon you will start to get some interest. This type of interaction quickly turns into job opportunities.

I have had a few conversations coming from the Small Bets community of Daniel Vassallo and landed a few gigs from there too. It is a paid community, so the signal-to-noise ratio is very high there. In free communities, I still got a few connections and calls, but I was not able to land a gig through there. So, probably it’s worth investing time and money in a paid community.


Just create a blog and post regularly. Post about what you do, the tools you have used and so on. Better to post a tutorial, a new tech you tried out, or a small model you developed. All the successful people I know have this habit. They write and share what they do regularly.

I have started to share my journey on Twitter, LinkedIn and on this blog. It is hard to do when you have other job-related (or personal) duties, so I try to leave time during the weekend for these things. I have met a guy who writes regularly about Data Science for years and some companies pay hundreds of Dollars for one of his articles.

Put yourself out there and interact online.

Maybe one day you share something, and it gets retweeted, maybe you pick up a good SEO keyword in your blog, you never know. That’s why it’s important to increase your exposure. You will increase your chances of getting noticed and potentially land a new client.

I have even noticed some kind of correlation between the amount of posts I make in a week and the book copies I sell. Even if I seldom mention my books online. I guess people just get interested in what I write, visit my profile, land on my Gumroad page and decide to buy.

Be generous

Once you do the above, you will be noticed and people will start to contact you. They will not offer you a contract. That’s not how it works. After all, they don’t know you and they don’t trust you. But something you wrote hit them. Probably they will ask for your help and advice on a specific issue. Advise on the tech to use, how to solve a problem, how to improve their processes, give as much as you can, and be honest and open. Don’t be afraid of giving away your expertise for free. Look at it as an investment, as a way to build trust. This is how a professional relationship starts.

I have had countless conversations like this in the last months. I gave much advice on AWS services, how to write a query, and how to improve the performance of a Python script. It’s true, sometimes people just ghost you right after you have given them what they wanted. Do I regret it? No. They would not have been good clients anyway. My rule of thumb in these cases is: if it takes me less than a couple of hours, give it away for free. If you feel it would take longer, don’t start and quote your hourly rate. It’s a good way to filter potential clients.

Be patient

Not all conversations will turn into a job opportunity. Sometimes they lead nowhere, sometimes there is no budget, and sometimes it takes months to sign a contract. Accept it. It’s normal. This is how it works in business, you try many things, and only a few succeed.

In my experience, maybe 2-3 out of 10 conversations turn into a job offer. On Upwork, it’s even worse, because of the high competition. Typically, a 10% hit rate (job offers/proposals) is a good ratio. But I never got discouraged and applied for job offers, even if I didn’t know exactly how to do the job. Some of my most successful proposals came after I applied for a couple of jobs I had just a vague idea of how to do. I learned it while doing it. And the clients were very happy.

I write often about my journey as a Freelance Data Scientist and about my other side projects on this blog and on Twitter.