Job Description Template Library for Startups
Purpose
This recipe produces a complete library of stage-appropriate job description templates across engineering, sales, marketing, operations, and customer success functions — with inclusive language verified, salary transparency compliant, and optimized for applicant conversion on LinkedIn, Indeed, and startup job boards. The output is ready-to-customize JD documents, a bias-detection review checklist, and a multi-channel publishing workflow. [src1]
Prerequisites
- Role requirements defined — what the hire needs to accomplish in 6-12 months
- Compensation range approved — salary band, equity percentage, benefits package
- Company context documented — mission, stage, team size, culture values, tech stack
- Hiring manager identified — person who owns the role and conducts interviews
- Legal compliance review — salary transparency requirements in target jurisdictions
Constraints
- JD length matters: 300-700 words optimal. LinkedIn favors under 300 words (+8.4% applications), Indeed favors 700-2,000 words (+30% applications). [src1]
- Salary transparency legally required in 13+ US states and EU Pay Transparency Directive (2026). Omitting compensation reduces applicants 30-40%. [src6]
- Gendered language reduces applicant diversity. JDs scoring 90+ on Textio fill 25% faster than those below 50. [src3]
- Use standard job titles — non-standard titles reduce searchability 50%+ on job boards. [src2]
- Early-stage JDs must lead with mission and equity — cash alone cannot compete with BigTech. [src4]
Tool Selection Decision
Which path?
├── Founder writing first 1-3 JDs, no budget
│ └── PATH A: Manual — Google Docs + free bias checker + manual posting
├── Founder writing first 1-3 JDs, some budget
│ └── PATH B: Assisted — Google Docs + Textio/Datapeople + LinkedIn Jobs
├── Recruiter building JD library for 5-10 roles
│ └── PATH C: Systematic — ATS templates + bias tool + multi-channel
└── HR team scaling hiring across departments
└── PATH D: Enterprise — Full ATS + Textio + programmatic distribution
| Path | Tools | Cost | Speed | Output Quality |
|---|---|---|---|---|
| A: Manual Free | Google Docs + Gender Decoder + Wellfound | $0 | 2-3 hrs/role | Adequate |
| B: Assisted | Google Docs + Textio trial + LinkedIn Jobs | $0-300/post | 1-2 hrs/role | Good |
| C: Systematic | Ashby/Greenhouse + Ongig + multi-channel | $300-600/mo | 45-60 min/role | High |
| D: Enterprise | Full ATS + Textio + programmatic | $1,000+/mo | 30 min/role | Excellent |
Execution Flow
Step 1: Audit Role Needs and Prioritize
Duration: 1-2 hours · Tool: Spreadsheet + hiring manager input
Complete the role audit worksheet for each open position: standard title, function, seniority, stage context, reporting line, and six core questions (problem solved, 30/60/90-day success, must-have vs nice-to-have skills, compensation, location policy, differentiation from BigTech). Prioritize revenue-generating roles first, then product-building, then scaling roles.
Verify: Each role has all 6 questions answered with specific, measurable responses. · If failed: If hiring manager cannot articulate success criteria, the role is not ready to hire for.
Step 2: Select and Customize Template by Function
Duration: 1-2 hours per role · Tool: Template library + text editor
Apply universal JD structure: hook (2-3 sentences), outcomes-based responsibilities (5-7 bullets), split requirements (3-5 must-haves + 2-3 nice-to-haves), compensation with equity, and company context. Add function-specific sections: tech stack for engineering, OTE breakdown for sales, channel ownership for marketing, operational scope for ops, portfolio metrics for CS. [src2] [src5]
Verify: Each JD follows the universal structure and includes function-specific details. · If failed: If JD reads like a generic job board post, add concrete numbers, tools, and outcomes.
Step 3: Adapt for Startup Stage
Duration: 30-60 minutes per role · Tool: Text editor
Stage adaptation: Pre-seed/seed JDs use first-person founder voice, emphasize equity and mission, reduce requirements to 2-3 must-haves. Series A JDs add team context and career path. Series B+ JDs use structured competency frameworks with metrics. Ashby recommends including a self-selection section for early-stage roles. [src4]
Verify: JD tone matches actual startup stage. · If failed: If too corporate for seed stage, strip formality. If too casual for Series B+, add structure.
Step 4: Optimize for Inclusion and SEO
Duration: 30-45 minutes per role · Tool: Textio, Gender Decoder, or Ongig
Run every JD through bias detection. Remove gendered language, unnecessary degree requirements, and age-biased terms. Add inclusive signals (accommodations statement, visa sponsorship status). Optimize titles for search: standard title + seniority + key technology + location/remote. Target 8th-grade reading level. [src3]
Verify: Bias tool score is 80+ (Textio scale). Title matches top search terms on LinkedIn/Indeed. · If failed: Replace each flagged phrase and re-run until score passes.
Step 5: Build Approval Workflow
Duration: 30 minutes (one-time setup) · Tool: Document management
Establish review process: hiring manager drafts from template, recruiting reviews compliance and compensation, bias tool scan runs, final sign-off (founder at seed/Series A, hiring manager + HR at Series B+). Target turnaround: 2-3 business days for new roles, same-day for reposts. [src6]
Verify: Workflow documented, stakeholders identified, turnaround expectation set. · If failed: If approval takes 5+ days, reduce approvers to 2 maximum.
Step 6: Publish Across Channels
Duration: 1-2 hours per role · Tool: ATS or manual posting
Distribute across three tiers: Tier 1 free (careers page, Wellfound, LinkedIn organic, HN Who's Hiring, referral blast), Tier 2 paid (LinkedIn Jobs, Indeed sponsored, industry boards), Tier 3 community (Slack groups, Twitter/X, Reddit). Adapt format per platform: LinkedIn under 300 words with salary up front, Indeed 700-2,000 words with full details, Wellfound emphasize equity and mission, HN plain text with tech stack. [src1]
Verify: JD live on 3+ channels, formatted per platform. · If failed: Check formatting requirements per channel and reformat.
Output Schema
{
"output_type": "jd_template_library",
"format": "document collection + checklist + workflow",
"columns": [
{"name": "role_title", "type": "string", "description": "Standard job title", "required": true},
{"name": "function", "type": "string", "description": "Engineering, Sales, Marketing, Ops, or CS", "required": true},
{"name": "stage_variant", "type": "string", "description": "Pre-seed, Seed, Series A, Series B+", "required": true},
{"name": "word_count", "type": "number", "description": "JD word count (target 300-700)", "required": true},
{"name": "bias_score", "type": "number", "description": "Inclusion score 0-100", "required": true},
{"name": "salary_included", "type": "boolean", "description": "Compensation range included", "required": true},
{"name": "channels_posted", "type": "number", "description": "Distribution channels", "required": true},
{"name": "applicants_7d", "type": "number", "description": "Applications in first 7 days", "required": false}
],
"expected_row_count": "5-10",
"sort_order": "function ascending",
"deduplication_key": "role_title + stage_variant"
}
Quality Benchmarks
| Quality Metric | Minimum Acceptable | Good | Excellent |
|---|---|---|---|
| Bias/inclusion score | > 70 | > 85 | > 95 |
| Word count (LinkedIn) | 200-400 | 250-350 | ~300 |
| Word count (Indeed) | 500-2000 | 700-1500 | 900-1200 |
| Applications per week | > 10 | > 25 | > 50 |
| Qualified applicant rate | > 15% | > 30% | > 50% |
| Time to first qualified applicant | < 14 days | < 7 days | < 3 days |
| Diversity of applicant pool | Reflects market | Above average | Exceeds benchmarks |
If below minimum: If applications < 10/week, audit title searchability, hook quality, and salary competitiveness. If qualified rate < 15%, requirements are too vague or too restrictive.
Error Handling
| Error | Likely Cause | Recovery Action |
|---|---|---|
| Zero applications after 7 days | Title not searchable, salary missing, or buried on job board | Promote posting, rewrite title for search terms, add salary range |
| High volume but low quality | Requirements too vague, title too broad | Add specific must-haves, narrow title with seniority and tech |
| Candidates drop off after reading | JD too long, excessive requirements, off-putting tone | Shorten to 300-500 words, reduce to 3-5 must-haves, adjust tone |
| Bias tool flags multiple issues | Unconscious gendered or exclusionary language | Replace flagged terms, re-run scan, second reviewer check |
| Legal compliance risk | Missing salary in transparency-required jurisdiction | Add compensation range immediately; check all posting jurisdictions |
| No diverse applicants | Homogeneous channels or coded exclusionary language | Expand to diverse boards (Jopwell, Techqueria), audit JD language |
Cost Breakdown
| Component | Free Tier | Starter Tier | Growth Tier |
|---|---|---|---|
| JD writing/templates | Google Docs + this recipe | Google Docs + this recipe | ATS templates ($300/mo) |
| Bias detection | Gender Decoder (free) | Ongig trial (free) | Textio ($5K+/yr) |
| LinkedIn Jobs | 1 free post | Promoted: $200-500/post | Recruiter: $800+/mo |
| Indeed | Free basic listing | Sponsored: $5-15/day | Premium: $250+/mo |
| Wellfound | Free (startups) | Free (startups) | Free (startups) |
| ATS | Spreadsheet tracking | Breezy HR (free tier) | Ashby/Greenhouse ($400+/mo) |
| Total for 5 roles | $0 | $500-1,500 | $2,000-5,000/mo |
Anti-Patterns
Wrong: Writing JDs as laundry lists of requirements
Listing 15-20 requirements filters out qualified diverse candidates. Research shows women apply at 100% match while men apply at 60% — long lists disproportionately exclude. [src3]
Correct: Split into 3-5 must-haves and 2-3 nice-to-haves
Must-haves are truly non-negotiable. Everything else is nice-to-have. Be explicit about which is which to increase applications from qualified candidates.
Wrong: Using clever or cute job titles
Non-standard titles reduce discoverability 50%+ on LinkedIn and Indeed. Candidates cannot find roles they cannot search for. [src2]
Correct: Use standard industry titles with clear seniority
Use searchable, clear titles like “Senior Growth Marketing Manager” instead of creative alternatives. Add context in the description, not the title.
Wrong: Same JD copy-pasted across all platforms
LinkedIn rewards short posts, Indeed rewards detailed ones. The same JD underperforms on at least one platform. [src1]
Correct: Create master JD, then platform-specific variants
Write the full 700-word version, then create a 300-word LinkedIn summary and longer Indeed version. Same content, optimized format per channel.
When This Matters
Use this recipe when a startup founder or hiring manager needs to write job descriptions that attract qualified candidates — not just fill an ATS field. Requires defined role needs, approved compensation, and company context. Produces JD templates, inclusion-verified content, and a publishing workflow — not a hiring strategy, interview process, or compensation philosophy.