A Guide to Writing Job Descriptions to Attract Remote Developers

In a rapidly growing freelance industry, job descriptions are still the best way to find the right candidate.

Scalable Path
13 min readOct 11, 2018

In a rapidly growing freelance industry, job descriptions are still the best way to find the right candidate. It’s how you write them that has changed.

The first step to writing a good job description (or JD for short) is understanding your target audience. Job boards have become relics of the past. The best freelancers no longer go searching for work, instead, job descriptions get pushed directly to their inbox. In-demand freelancers will receive hundreds a month, and as a result, they have learned to be selective. They ‘thin slice’ each job description, comparing it against a mental checklist, and deciding in a matter of seconds if it’s worthy of their attention. The ones that aren’t get ignored.

To make sure your job description is being noticed, you need to change the way you write it.

This shift in how JD’s are consumed can be easy to miss because, from an employer’s point of view, it can feel easier than ever to get applicants. If you’ve ever put up a role on Freelancer.com, for example, you’ll likely have been bombarded with responses. The problem is that the quality of these replies was likely very low.

So, let me clear on who will find this article useful. If you’re looking for a junior developer to complete a simple, low-level task, then posting a basic job description on Freelancer or Upwork might be the best fit for you. If, on the other hand, you are looking for a talented technical candidate with strong communication skills, who is ready to take on the development of a core project area — then you’ll need to take a different approach.

That’s what I’ll be concentrating on in this article: walking you through each step to create an attention-grabbing job description that will attract top technical candidates.


No one knows your role better than you do, so spend time thinking about how that role will be structured. Great developers think logically and clearly. If your job description feels hurried and incoherent, it likely won’t resonate with them.


Resist the urge to blend disparate roles together into a what we call a ‘hybrid’ role. This is an easy trap to fall into. Let’s say you need a developer and a designer, but you don’t have the budget for both, so you try and blend both skill-sets into the one job description. “Searching for a full stack developer, who can also work in Photoshop and, ideally, is also great at SEM.” It’s a slippery slope…

The beauty of working with freelancers is that you can get specialists for each desired skill area, and just pay the required hours for each skill. So although it might seem easier to hire one person to do everything, the chances of finding that unicorn freelancer who can do the development, marketing and design at a high level are low. The reality is you will most likely end up with a candidate who is mediocre in some of the areas.


Before hiring anyone you should know:

  • Which technologies are required for your project?
  • What your maximum budget is?
  • What completion timeframe is reasonable?

If you don’t have a good technical understanding of the project and role, then enlist some help from someone who does. If no one in your company has the experience, you can look for outside help. You can chat with one of our experienced project leaders (at no cost) and they will help you answer these questions.


Freelancers don’t want a five-page list of responsibilities, expectations, KPI’s and fluff. Think of today’s JD as more of an ad for your role. We analyzed over 1,000 job descriptions in our system and found that the most successful were between 250 and 750 words long.

If you have lengthy documents on the role or company, then you can simply link to them from the job description or, even better, send them to shortlisted candidates.


The tone of your copy is just as important in a job description as it is in a face-to-face meeting. If you are overly familiar or overly corporate, you may give a false impression of the role and the company. Choose a tone that reflects the culture of your business. Don’t pretend you’re a hip startup if you are a conservative risk-averse company. The goal is to attract people who are right for the position and the company.

This article has been written to work seamlessly with our Job Description Tool, which will take everything you learn from this article and correctly format it so you can just go paste away into any job site knowing you’ve got an optimized JD. You can also take the next step and have someone from our recruitment team give you call to see if we can find the ideal candidates for your role!

With that said, let’s look at how to update your job description so it attracts top technical talent!



When you open your inbox, you unconsciously skim through subject lines, deciding which are worth viewing. In-demand freelancers do the exact same thing with the job title part of a job description.

The text might also be truncated by the app showing it (this could be an email or the website they are looking at). A truncated title will confuse your message, so I suggest keeping the job title under 60 characters and certainly no more than 80 characters.

The key aspects of your role have to come across immediately and in a clear fashion. The job title section is where people tend to try and be witty or funny. There is nothing wrong with, as we will see later, injecting some personality into your JD — but just not in this section. Instead, focus on intelligently filling the space with keywords that will trigger a candidate’s interest.

List of Keywords:

  • Experience. Including the seniority level is a good way to filter out unqualified candidates.
  • Role. For example, Full-Stack Developer.
  • Primary Skill. For example, Android, React.
  • Project/Company. You should only include the brand name if is a selling point. For example Google or Uber.
  • Role Type. The keyword ‘remote’, for example, is a selling point whereas ‘part-time’ is just a data point that is less likely to make a candidate want to learn more.


Try and avoid terms like ‘growth hacker’, ‘rock star’, and ‘ninja’. Initially, these terms were original and fun: they reflected the voice of the startups that used them. Now they feel dated and cliche.


It’s important to get potential candidates to visualize themselves in your role because once this happens they are halfway to applying. This section, in which you give a compelling overview of the role’s day-to-day duties and responsibilities, is a great place to achieve this.

It’s important to get potential candidates to visualize themselves in your role because once this happens they are half-way to applying. This section, in which you give a compelling overview of the role’s day-to-day duties and responsibilities, is a great place to achieve this.


Paint a picture of an exciting and challenging role by describing its specific responsibilities and what the candidate could achieve in the role. This is best done by focusing on 5 or so core responsibilities and weaving them into a short paragraph that encompasses the role. Avoid using bullet points here because, while they may be concise, they are less effective at selling the role.

“Today’s job descriptions are effectively an advertisement for your role.” Brei Barron, Scalable Path Recruiting.


Describe what the candidate will be doing, rather than what you are looking for. You should throw in some action verbs here, as they make for more dynamic and engaging sentences. Hopefully, the use of describe’ and ‘throw’ in the previous sentences make my point. Here is a good list of action verbs to inspire you.


If a candidate is reading this far, you’ve likely got their interest. Good work! Now you need to convince them that the larger business is an equally good fit for them.

There is a common misconception that freelancers don’t need to be sold on a new role as much as traditional hires do. The logic goes that, as they will not be on-site to experience the company culture, they should be hired based on cost and skills. This approach is short-sighted: more and more jobs are becoming remote, and the quality of tools designed to integrate these workers is increasing. Company culture not only matters to all hires, but it will matter more and more as time goes on. A good candidate will be just as interested in the company as they are in the specific role.

Deciding to join a new company is a huge deal for any candidate, even freelancers. It comes with new risks like:

  • Will I be paid a fair rate?
  • Will I be paid on time?
  • Will my new colleagues be interesting and knowledgeable?
  • Will they accept me and my feedback? Will I be trusted?
  • Will the company be well-organized?
  • Will the company use exciting tech or will it be conservative?
  • Will I be given challenging work?
  • Will the company help me reach my career goals?

As a result, a good way to think about this section is to speak directly to these concerns in the text of your company description.


Part of selling a candidate on a role is helping them mentally position where they will fit into your company: who they will be collaborating with and who they will report to. Clearly laying this out also demonstrates that the role and company have structure.

  • Show how the role functions within the larger business
  • Make reporting lines clear
  • Describe the internal and external teams the candidate will interact with.


If your role is ‘remote’, you should have already noted this in the title as it will be a big selling point for freelancers. It’s also important to show how you will integrate this remote role into existing workflows. To make this simpler, our job description tool specifically requests a few key aspects such as the presence and time of a daily meeting.

We also suggest that you include details about what collaboration tools are used in your organization such as Jira, Trello, Slack, HipChat, daily standups, etc.



If everything is going to plan, you will have sold the role by this stage. The remaining sections of the JD should be used to filter out candidates that are not qualified. This means you should switch from salesy to functional copy. In other words: use bullet points.


Creating an exhaustive list of skills can be counterproductive. This is because it will exclude great candidates that have the key skills, but not the peripheral ones. They will be excluded but they might feel under-qualified and not apply, or worse, not turn up on search results for the entire skill range.

That’s why we suggest splitting the skills into two distinct lists: ‘Required’ and ‘Desired’ (aka Nice-to-Have). This prevents you from limiting the candidate pool too much while still allowing you to paint a clear picture of the ideal candidate.

It can be hard to know which skills go into which column. So consider this example: the required skills could be ‘experience with LAMP stack and a modern MVC framework’, while the desired skills could be the specific PHP framework you use on your project, say ‘CodeIgnitor’. If your project uses a technology that is not widespread (like CodeIgnitor), it will be much faster to find a great candidate who knows ‘LAMP stack and a modern MVC framework’ and can quickly get up-to-speed on CodeIgnitor.

If your project is using a very popular specific technology like Laravel, then perhaps you can be pickier and put this skill in the ‘Required’ column.


Quantify the experience for each skill by including details such as the technology version you work with and how much experience you feel is needed for that skill.

We place huge value on soft skills (such as leadership, teamwork, flexibility, communication, and initiative) and positive character traits (such a friendly and outgoing personality). But these are harder to quantify at this stage. Instead, we tend to look for these skills in all candidates, but use the interview stage to assess them.


Always include the date you want someone to begin, the hours required (full-time or part-time) and how long you expect the project to last. This will help candidates work out if this fits the timelines of other projects they are working on and prevent application coming in from people that won’t work out.


The success of a project often depends on open, easy communication between team members. When people on the same team are not in the same timezone: communication suffers. They can’t just get on Skype/Slack and speak to each other throughout the workday to sort out problems, brainstorm or just collaborate on their work in general. It leads to frustration between team members, miscommunications, errors and a slower turnaround. For this reason, we match freelancers to clients in significantly overlapping time zones and I would strongly recommend that any employer prioritize working with freelancers in their timezone.



The hourly rate a freelancer charges is based on many variables. The three most significant factors tend to be their geographical location (cost of living), skill set, and experience.

These factors are driven by supply and demand mechanics. The demand for US-based freelancers is high and the prices reflect that. Quality developers in the US can cost anywhere from $80 to $200 USD per hour, however, costs in Latin America are lower, ranging from $40 to $70. In India, they are even lower: from $20 to $50 per hour.

A freelancer’s skillset will also impact their hourly rate. It’s relatively easy to find a competent developer, but much harder to find a blockchain developer with commercial experience. Here again, the market rates will reflect this, with average rates for Blockchain Developers being up to 3x the baseline. Additionally, a Rails developer with 15 years of experience is likely going to want to be paid more than someone with 4 years of experience, and that’s because this experience tends to translate into greater productivity.

At Scalable Path, we match clients with freelancers in lower-cost regions within their timezone. For example, we match our US clients with South American freelancers. This geographical arbitrage leverages the price difference without the communication issues that can happen when teams are spread across time zones.


Negotiating rates is to be expected, but it’s important to remember the supply and demand mechanics in play here. If you are looking to hire a freelancer with a rare, in-demand skill set, trying to pay significantly less than the market rate is likely to mean you will lose a candidate’s enthusiasm and long-term interest. That’s because they know another role paying market rate will likely come along soon.


I know this is obvious. But many JD‘s out there have avoidable typos and grammar mistakes. Often these can be caught with a tool like Grammarly, but it’s a really good idea to have someone else proofread your JD. I always recommend that someone be in a role similar to the one you are hiring into. That way they can catch any improper uses of industry terms that someone in PR may not be aware of but a candidate would latch onto.


Creating a good job description takes time, focus and a little insider knowledge. We’ve taken all the advice from this article and stuffed it into a free app — to help you create that perfect job description. The app will create a perfectly formatted JD you can use to promote your role on any freelancer marketplace. (shameless promotion: including ours). Head over to our tools section.


Here is the complete example JD we’ve used throughout this article. If you’re not quite as geeky as us and have been wondering what on earth Pied Piper is, it’s from the HBO series Silicon Valley.


Remote Senior Full-Stack Angular Developer with Pied Piper


Pied Piper started in Silicon Valley in 2014 and is now in over 12 countries with a 400 strong remote team.

We’ve been profitable since day 1, but we believe in linear growth, not exponential growth at all costs. That mentality flows into our culture and life/work balance. It’s why we’ve won the Acme 500 Best Business Award 4 years running. That’s doesn’t mean we’re not ambitious, we’re readying to launch exciting new features that will continue to enhance the app’s capabilities and user experience.


As the Senior Full-Stack JS & Angular Developer, you will be working directly on Pied Piper’s music app, API, and backend. Your primary responsibilities will be implementing key new features, fixing bugs, performance issues, and managing the release of weekly updates.

You may be remote but you’ll be a critical part of our development team, helping select our technology stack, architecture, and solutions to solve future challenges.


Pied Piper is over 60% remote, so you’ll be in good company. You will be joining our remote team of 10 developers, all of whom are in the PST time zone — which makes it easier to communicate. The team meets for a daily Stand Up video call at 11 am PST.

Ian Clark, our Head of Technology, will be your direct supervisor throughout the duration of your contract.


  • General JavaScript expertise
  • Strong HTML & CSS
  • Angular v2+ (6+ preferred) — Minimum 2+ years
  • ERB Templates (HTML)
  • API integration
  • Node.js experience — 2+ years
  • API design and development
  • Strong written and spoken English


  • Redis
  • ImageMagick
  • Sketch & Zeplin


As soon as possible.


3 months

To read more posts from the Scalable Path team, visit our blog.



Scalable Path

Curated network of premium technical talent with experienced U.S. based project leaders. Visit us at www.scalablepath.com