Your job description is the first thing candidates see — and for most companies, it's the reason the best people never apply. Here's how to write one that attracts the right candidates instead of scaring them off.

Your job description is doing more damage than you think. It's the very first interaction a candidate has with your company, and most of them are terrible. Not because the role is bad or the company is bad — because the description reads like it was written by a committee, run through legal, and stripped of anything that might make a real person want to apply.
The result? Your best potential candidates scroll past it. They've seen a hundred descriptions that look exactly like yours — vague responsibilities, impossible requirements, corporate buzzwords, no salary information. So they skip it and apply somewhere that actually told them what the job is. Meanwhile, the candidates who do apply are the ones willing to tolerate unclear expectations, which tells you something about who you're attracting.
I'm going to walk you through how to write a job description that top candidates actually want to respond to. This isn't HR theory. It's a practical framework that works especially well for small teams and startups where every hire matters and you don't have a recruitment department to clean up after a bad job post.
When I post roles for GigForge, I spend more time on the job description than on any other part of the hiring process. Because here's the thing — if the description is clear and compelling, the right people apply. If it's vague and generic, you spend 20 hours screening candidates who were never a fit in the first place. The description IS the first filter.
Before we fix the problem, let's name it. Most job descriptions fail for one of four reasons, and most fail for all four simultaneously.
"5+ years of React experience, expert in TypeScript, GraphQL, Docker, Kubernetes, AWS, CI/CD pipelines, Agile methodology, and machine learning. Must have a CS degree from a top university." That's not a job description. That's a wish list. And the only candidates who apply to wish lists are the ones who don't actually read them — they just spam-apply to everything.
Research consistently shows that men apply to jobs when they meet about 60% of the requirements. Women apply when they meet closer to 100%. So your inflated requirements list isn't just annoying — it's actively filtering out qualified candidates, particularly women and underrepresented groups, who look at your 15 bullet points and think "I only have 12 of those, I won't bother."
"Leverage cross-functional synergies to drive strategic alignment and deliver impactful solutions in a fast-paced environment." What does that mean? Nobody knows. The person who wrote it doesn't know either. But they thought it sounded professional, and now a candidate has to guess what they'd actually be doing on a Tuesday morning.
In 2026, hiding the salary is the fastest way to lose top candidates. They know that "competitive salary" means "we'll lowball you based on your current compensation." The best candidates have options. They're not going to invest time in a 3-round interview process without knowing if the number is even in their range.
"We're a fast-growing, innovative company disrupting the [industry] space with cutting-edge technology..." Great. What will I be doing? If your description is 80% company pitch and 20% actual role details, candidates have no idea whether they're a fit. They need to know what the job IS, not how excited you are about your mission statement.
Here's the structure that works. Each section has a specific purpose. Skip any of them and your description has a gap that makes candidates hesitate.
Open with what makes this role interesting. Not your company mission — the actual work. What problem will this person solve? What will they own? What impact will they have?
Bad: "We are seeking a talented Software Engineer to join our dynamic team and contribute to our innovative platform."
Good: "We need someone to rebuild our checkout flow from scratch. It currently loses 35% of users before payment, and we think the problem is a combination of slow loading and too many form steps. You'll own the entire frontend of this project — research, design, implementation, and measuring the results."
See the difference? The second version tells the candidate exactly what they'd work on, why it matters, and what success looks like. A strong frontend developer reads that and thinks "I know how to fix that problem." The first version tells them nothing.
List the specific activities this person will spend their time on. Not responsibilities — activities. "Responsible for frontend development" is a responsibility. "Build and ship new features in our React/Next.js application, averaging 2-3 pull requests per week" is an activity.
Write each bullet as something a candidate can picture themselves doing. They should read this section and be able to imagine what a typical week looks like.
Good examples: "Write API endpoints in Python and review code from two other backend developers." "Run weekly sprint planning with the product team and prioritize the backlog." "Talk directly to customers 2-3 times per week to understand their workflow and pain points."
Bad examples: "Drive technical excellence across the organisation." "Champion best practices." "Be a thought leader."
This is where most descriptions go wrong. They list 15-20 requirements when the role genuinely needs 5-7. Ask yourself for each requirement: would I actually reject a candidate who had everything else but was missing this one thing? If the answer is no, it's a nice-to-have, not a requirement.
Split your requirements into two clear groups. Must-haves are the things you'd filter a candidate out for not having — these are your dealbreakers. Nice-to-haves are things that would give a candidate an edge but aren't required. Label them explicitly so candidates can self-assess honestly.
And be specific about what you mean. "Experience with modern frontend frameworks" could mean anything. "You've built production applications with React or Vue in the last 2 years" is specific and assessable.
Count your must-have requirements. If you have more than 7, you're either hiring for two roles disguised as one, or you've confused preferences with requirements. Cut it to 5-7 genuine dealbreakers and move everything else to nice-to-haves. This alone will increase your qualified applicant pool significantly.
Include it. Full stop. If you're worried about internal salary comparisons, that's a compensation structure problem, not a job description problem. If you're worried about scaring away candidates who want more, that's exactly the filtering you want — better they know now than after three rounds of interviews.
Format it as a range: "KES 150,000 - 200,000 per month" or "$85,000 - $105,000 per year." The range gives you negotiation room while giving the candidate real information. Also list benefits that actually matter — health insurance, remote flexibility, professional development budget, equity if applicable. Skip the ping pong tables and unlimited snacks.
Candidates want to know what they're signing up for before they invest time. Tell them. "Our process: application review (2-3 days) → 30-minute phone screen → take-home assignment (2 hours max) → final interview with the team (1 hour) → offer." If you can do your whole process in under two weeks, say so — that's a competitive advantage. If your process takes 6 weeks, be honest about it.
This transparency builds trust immediately. Most companies hide their process, and candidates have been burned by 5-round interview gauntlets that drag on for months. Telling them upfront "this is a 3-step process and we move fast" makes your listing stand out.
Candidates don't join companies. They join teams. Instead of your corporate mission statement, describe the team they'll work with. How many people are on it? What are their roles? How does the team work — async or real-time? Remote or in-office? What tools do you use? What's the culture actually like, not the aspirational version on your website?
"You'll join a 4-person engineering team. Two backend developers, one designer, and you as the frontend lead. We work async-first across Nairobi and London, communicate mostly in Slack, and do a weekly sync on Wednesday mornings. The team has been together for 8 months and we ship weekly." That tells a candidate more about what it's actually like to work there than any amount of "we value innovation and collaboration."
"We are looking for a passionate Frontend Developer to join our growing team. The ideal candidate will have 5+ years of experience with JavaScript, React, TypeScript, Node.js, GraphQL, REST APIs, AWS, Docker, and Agile methodologies. You will be responsible for developing high-quality web applications, collaborating with cross-functional teams, and driving technical excellence. We offer a competitive salary and benefits package in a fast-paced, innovative environment."
"Our checkout flow loses 35% of users before payment. We need a frontend developer to fix it. You'll rebuild the entire checkout experience in React and Next.js — from the cart page through payment confirmation. You'll have access to our analytics data, work directly with our designer, and own the project end-to-end. We expect this to take about 6-8 weeks. What you'll do: build the new checkout UI in React/Next.js with TypeScript. Run A/B tests against the current flow. Optimise page load speed to under 2 seconds. Integrate with our Stripe payment backend. Talk to customer support weekly to understand where users get stuck. What you need: 2+ years building production React applications. Comfortable with TypeScript. Experience optimising web performance (Core Web Vitals). Can work independently without daily check-in. Nice to have: experience with Stripe integration, A/B testing tools, or e-commerce platforms. Salary: KES 150,000 - 200,000/month depending on experience. Fully remote. Process: application review → 30-min call → small take-home (2 hrs max) → final interview → offer. We aim to complete this in 10 days."
The second version is longer, but every word serves a purpose. A qualified candidate reads it and knows exactly whether this is the right fit before they spend time applying. That's the whole point.

Even with a good framework, these mistakes slip in. Watch for them.
Requiring a degree when the role doesn't need one. Unless the role has legal or regulatory requirements for specific qualifications, list the degree as a nice-to-have. Some of the best developers, designers, and marketers in the world don't have traditional degrees. Requiring one shrinks your talent pool for no reason.
Using "fast-paced environment" as a selling point. To experienced candidates, this usually translates to "we're understaffed and disorganized." If your environment genuinely moves fast, describe what that looks like concretely: "We ship new features weekly and iterate based on user feedback within days." That's exciting. "Fast-paced" is a red flag.
Writing "must be a team player" without explaining what collaboration looks like. Every job requires working with other humans. Instead, describe the actual collaboration: "You'll pair with our backend developer on API design and review each other's pull requests" gives a real picture.
Listing years of experience as a hard requirement. "5+ years of React experience" is arbitrary. Someone with 2 years who built complex production applications is often better than someone with 7 years who used React for simple forms. Describe the complexity of work you need, not the number of years.
A great job description is step one. The next challenge is screening the applications that come in. When your description is specific and honest, you'll get fewer applications but higher quality ones — candidates who actually read the posting and decided they're a fit. That's exactly what you want.
From there, you need a structured screening process that evaluates every application against the same criteria. No gut feeling, no skimming CVs while half-asleep at 11pm. If you haven't built your screening process yet, our step-by-step guide on how to build a hiring process from scratch for a small team covers everything from scoring criteria to interview structure.
If you want to go even further, AI screening tools can read every application against your criteria and rank candidates automatically. This is especially valuable when a well-written job description attracts 100+ applications — you get the quality you wanted, now you need an efficient way to sort through them. I wrote a detailed comparison of how to reduce time to hire using both manual and automated approaches that covers the practical options.
And if this is your very first hire as a founder or team lead, our complete guide on how to hire your first employee walks through the entire journey from deciding when to hire through making the offer, including the job description as one piece of a bigger process.
Write a great job description, post it, and let GigForge's AI screen every application against your criteria. Ranked candidates with detailed reports. From 200 applications to your shortlist in 2 minutes.
Start Screening Free →Before you post your next role, run through this. Does the description open with what makes the role interesting, not a company pitch? Does it list specific activities, not vague responsibilities? Are the must-have requirements limited to 5-7 genuine dealbreakers? Are nice-to-haves clearly labeled separately? Is the salary range included? Is the hiring process described with timeline? Does it describe the team, not just the company? Would YOU apply to this role based on what the description says?
If you can check all of those, you have a job description that will attract better candidates than 90% of what's on LinkedIn right now. The bar is that low. Clear, honest, specific descriptions are so rare that simply being those things makes your listing stand out.
Post your job with a great description. GigForge screens every application with AI, conducts voice interviews, and delivers ranked candidates with hire/no-hire recommendations.
Post a Job →GigForge AI screens every application and conducts voice interviews automatically. Your team only meets the best candidates.
See how it worksNewsletter
Get the best hiring, career and freelance insights delivered to your inbox. No spam, unsubscribe anytime.

The average company takes 42 days to fill a role. The best companies do it in 10. The difference isn't budget or headcount — it's knowing which steps to keep, which to automate, and which to kill entirely.

Every hiring tool claims to use AI. Most of them just automated a job posting form and called it innovation. Here's an honest breakdown of what AI hiring tools actually do in 2026, what's real, what's marketing, and what's worth paying for.

You've been doing everything yourself. Now it's time to hire your first employee — and you have no HR department, no recruiter, and no idea where to start. Here's the step-by-step guide from someone who figured it out the hard way.