How to Write Job Descriptions That ATS and Job Boards Like

Strong roles can sit on job boards for weeks. Good candidates scroll past them. Most of the time, the posting is the problem, not the job.

A job description has two jobs. It must persuade a human to apply. It also has to survive the software sitting between you and that human. Miss either one and you've built a dead end. That dead end can happen in a job board's index. It can happen inside an applicant tracking system too.

The fix isn't clever copy. It's structure. Clear, boring, checkable structure.

Start with the title. It filters more than anything else in the posting. Use the words a candidate would actually type into a job search. "Full Stack Developer" beats "Ninja Developer." One reason: it matches resume language and recruiter filters. Cute titles cost you reach.

Inflation backfires too. Call an office coordinator a "Director of First Impressions." Everyone searching "office coordinator" scrolls right past you. The Employers Council makes the same point: creative titles can hurt the applicant pool.

Put the title, the location, and the work model in the first 100 words. Humans scan for them. So do the systems that index postings.

Build the Posting in Seven Blocks

Work through the posting in this order. It stays scannable without turning into a legal document.

  1. Title and location line. Something like "Senior Backend Engineer - Remote (U.S. only)."
  2. Purpose. Two sentences on what the role changes for the team or the customer.
  3. Duties. Four to seven bullets, each with an action verb and, where possible, a measurable outcome.
  4. Must-have requirements. Skills, experience, licenses, schedule. Nothing else.
  5. Preferred qualifications. Nice-to-haves that won't screen out good candidates.
  6. Pay, benefits, and conditions. Salary range, remote policy, travel, on-call, employment type.
  7. Application step. The exact link, the deadline, and what happens next.

That's the whole skeleton. You don't need a paragraph of company history wedged between the title and the actual work. That order matters because candidates decide in seconds. If the title and location line don't answer their first question, the rest of the page may as well not exist.

Write Duties That Show the Real Work

Vague verbs are where most postings go soft. "Handle customer issues" could describe nearly any job at any company. "Resolve 30 to 40 tickets per week, document recurring bugs, and reduce first-response time" tells a candidate what Monday actually looks like.

The test is simple. If a duty can't be observed or measured, it isn't a duty yet. Rewrite it. "Support marketing" fails. "Build and schedule two email campaigns per month in HubSpot" passes. A measurable outcome gives the candidate a way to imagine the work. It also gives you a way to interview against the same list.

If you're unsure about standard skill language, check O*NET. It's the U.S. Department of Labor's regularly updated database of occupational descriptors and worker requirements. It's genuinely useful for matching your titles, skills, and tasks to common language.

A two-column table settles arguments fast when you edit a draft with a hiring manager. Draft line on the left, rewrite on the right.

Vague draft Useful rewrite
Help with reports Build weekly sales reports in Looker and flag missing data
Manage social media Plan 12 posts per month, schedule them in Buffer, and report engagement
Work with engineers Translate product requirements into tickets and review estimates with engineering

Cap the final posting at four to seven duty bullets. Past that, the list starts reading like a warning.

Make the Posting Readable to ATS and Job Boards

An applicant tracking system doesn't read the way you do. It indexes titles, skills, dates, education, and location. Many modern systems layer natural language processing on top. That's exactly why keyword stuffing backfires. Repeat "Python Python Python" and the recruiter still sees a mess. The candidate clicks away.

Write the way candidates write their resumes. Say "React" and "TypeScript," not "modern front-end wizardry." Put the location and remote status in plain text. If the role is hybrid, give the number of office days per week. If it's fully remote, name the states or countries you can hire in.

There's one more lever if jobs live on your own careers page: structured data you can send to Google for Jobs. The fields that matter are title, description, datePosted, validThrough, hiringOrganization, jobLocation, jobLocationType, and employmentType. Third-party walkthroughs like Job Posting Structured Data and Google for Jobs structured data break the format down. The exact setup depends on your hiring platform or CMS. The goal is simple. Don't let a stale or incomplete feed hide a live role.

Turns out, the biggest ATS problem is usually not the software. It's a posting that never clearly says what the job is.

Requirements Should Be Requirements

Most candidates don't meet 100% of a wish list. Post ten must-haves and you'll screen out people who could do the work just fine. Split the list instead. Real requirements go under "must have." Everything else goes under "preferred." Preferred qualifications are not secret must-haves. If a skill is required, say so. If it can be learned, put it in preferred.

Watch the wording, too. Cut "aggressive," "young," "native English speaker," and gendered terms like "salesman." The EEOC enforces federal anti-discrimination laws. Your job ads are part of the hiring record. The ADA regulations apply here as well. Focus on essential functions. Describe how a candidate can request an accommodation.

You'll run into recruiting blogs claiming that gender-neutral job ads get 42% more applications. Treat that as directional, not a guarantee. The actual lift depends on the role, the market, and the salary. Write inclusively anyway. It widens the pool and strips out the obvious bias.

Pay, Remote Work, and Legal Checkpoints

Pay transparency has turned into a real compliance issue across a growing set of U.S. markets. A 2026 pay transparency tracker estimates that more than a third of U.S. workers live in a jurisdiction with a posting mandate. New Jersey, New York, and Vermont are on the list. Some cities stack their own requirements on top. Employer size, effective dates, and covered job types all vary. If you hire across state lines and don't want to maintain a separate rulebook for every state, the simplest move is a good-faith range in every external posting.

Thing is, a decoy range does real damage. Post the range you actually expect to pay. A number like "$1 to $1,000,000" burns trust. It may violate the law. A good-faith range is not a negotiation anchor. It's the range you're actually working with.

Remote details deserve the same precision. "Remote" by itself settles nothing. Say whether the role is fully remote, hybrid, or location-bound. Add the time zone, travel expectations, and whether the team communicates async. Candidates will self-select on that information. That quietly shrinks your pile of unqualified applications.

Add Culture Without Fluff

Candidates do care about culture. Slogans just don't help them. "Work hard, play hard" describes a T-shirt, not a team. Describe how work actually happens. Do people pair on code? Do marketers run weekly experiments? Is there an on-call rotation? How often does the team travel?

Keep it short. A few concrete sentences beat a paragraph of values. Benefits need the same accuracy. "Unlimited PTO" means different things at different companies. Explain the approval process and the term stops being vague. Concrete details help candidates decide if they want the day-to-day, not just the brand.

Test the Posting Like a Landing Page

Treat the description like a product page. Watch four numbers: views, application starts, completed applications, and time to fill. Each failure points somewhere specific. Views without starts mean the title or the first paragraph is weak. Starts that never finish mean the application itself is too long. Plenty of applicants but few qualified ones mean the must-have list is too vague to filter anyone.

A/B test one element at a time. Try two titles, two purpose statements, or two duty lists. Let the test run long enough to produce a real sample. Keep the winner. Change the title and the duties and you won't know what moved the numbers. Check mobile formatting too. Most candidates read on a phone. A wall of text kills momentum fast.

To be honest, the best job descriptions feel almost boring to write. They're specific, direct, and easy to scan. That's the point.

FAQ

How long should a job description be?

Aim for one mobile screen, maybe a little more. Between 300 and 700 words covers most postings. Length matters less than the duties and the requirements. If a section doesn't help a candidate decide whether to apply, cut it.

Which keywords should I use for ATS?

Use the job title, core skills, certifications, licenses, and location. Write them the way candidates put them on resumes. Don't stuff synonyms into every sentence. A clear posting with natural keywords beats a crowded one.

Does my job posting need structured data?

If jobs live on your own careers page, yes. It helps search engines understand the listing. Job boards usually handle their own schema. Ask your hiring platform whether it outputs JobPosting markup. Ask whether it updates expired roles too.

Can I use AI to draft a job description?

Use it for an outline, a first draft, or a grammar pass. Then put a human edit on top. AI invents requirements, flattens culture, and repeats biased phrases. Before anything goes live, check the pay range, the legal language, and the essential functions yourself.