28% das vagas são fake (seu agent de recrutamento envia candidates pro nada)
28% vagas abertas 90+ dias (ghost jobs). Seu agent recrutamento envia candidates pra nada. Como detectar vagas fake?
Equipe OpenClaw · Time de Engenharia & Produto
A Equipe OpenClaw é formada por engenheiros, designers e especialistas em IA dedicados a construir a melhor plataforma de agentes conversacionais para negócios brasileiros. Combinamos expertise…
28% das vagas são fake (seu agent de recrutamento envia candidates pro nada).
Você é founder de SaaS.
Você tem agent de recrutamento.
Agent funciona:
Agent encontra candidate ├─ Candidate matches job requirements ├─ Agent envia candidate pra vaga ├─ Agent espera resposta (days, weeks, months) │ O que acontece: ├─ Nada. Vaga nunca foi preenchida (company changed mind) ├─ Ou: Vaga foi preenchida meses atrás (posting não foi removida) ├─ Ou: Vaga é fake (company não tem budget) │ Você descobre (after wasting time): ├─ Agent enviou 100+ candidates ├─ 28% das vagas estavam abertas 90+ dias ├─ Isso significa: Vagas fake, company changed mind, or company doesn't respond ├─ Agent time: Desperdiçado ├─ Candidate experience: Ruim (enviados pra vaga que não existe) ├─ Seu ROI: Negative (agent costs money, generates zero hires) │
Yesterday, you read:
Unlisted.careers: "28% of job postings on company career sites have been open over 90 days."
Key detail: "Analysis of company career pages found that 28% of active job postings have been open for 90+ days continuously. This indicates either: (1) Company stopped actively hiring for role. (2) Company has unrealistic requirements (impossible to fill). (3) Company's posting system is outdated (vaga filled, posting not removed). (4) Company has no budget (posting is ghost job). In all cases: Posting is unlikely to result in hire."
Translation: Nearly 1 in 3 job postings are effectively ghost jobs (won't result in hire). If your recruitment agent sends candidates to these vagas, you're wasting time and damaging candidate experience.
What this means (for your recruitment agent):
=== THE RECRUITMENT AGENT PROBLEM === │ Your agent workflow: ├─ Step 1: Find candidates matching job requirements ├─ Step 2: Parse job posting (description, salary, location, requirements) ├─ Step 3: Match candidate to job ├─ Step 4: Send candidate profile to company ├─ Step 5: Wait for company response │ Problem: ├─ Step 2 assumes job posting is real (but 28% are ghost jobs) ├─ Step 4: You send candidate to potentially fake vaga ├─ Step 5: No response (because vaga is ghost job) │ Result: ├─ Candidate frustrated ("I sent profile, never heard back") ├─ Your reputation damaged ("This recruitment agent sucks") ├─ Agent ROI destroyed ("We paid for agent, zero hires resulted") │ === THE MATH === │ Scenario: Your agent sends 100 candidates this month │ ├─ 72% vagas are real (72 candidates sent to real vagas) │ ├─ Of these: ~20% result in interview (14 candidates) │ ├─ Of these: ~10% result in hire (1-2 candidates hired) │ ├─ Result: 1-2 hires (ROI positive) │ ├─ 28% vagas are ghost jobs (28 candidates sent to fake vagas) │ ├─ Result: 0% interview rate │ ├─ Result: 0% hire rate │ ├─ Cost: Still paid for agent to process (R$500-2000/month) │ ├─ Result: 28% of your agent budget is wasted │ Bottom line: ├─ Without ghost job detection: 28% agent budget is pure waste ├─ With ghost job detection: Redirect agent to real vagas only ├─ ROI improvement: +39% (100/72 = 1.39x better ROI) │
What is a ghost job (and how to spot one)
Definition and prevalence
=== WHAT IS GHOST JOB === │ Ghost job (recruitment term): ├─ Job posting that's active but company is not actually hiring ├─ Posting has been open 90+ days without being filled ├─ Company either: │ ├─ Changed mind about hiring │ ├─ Ran out of budget │ ├─ Forgot to remove posting after filling (outdated) │ ├─ Has unrealistic requirements (impossible to fill) │ ├─ Posted job to "see what's out there" (not serious) │ === HOW COMMON === │ Data from Unlisted.careers analysis: ├─ 28% of active job postings on career sites are 90+ days old ├─ This means: 1 in 3.5 postings is potentially a ghost job ├─ By market/industry: │ ├─ Tech: ~35% ghost jobs (high demand, hard to fill) │ ├─ Finance: ~25% ghost jobs │ ├─ Healthcare: ~20% ghost jobs (less affected) │ ├─ Retail: ~15% ghost jobs (easy to fill) │ === IMPACT === │ Candidates: ├─ Apply to ghost job (waste time) ├─ Never hear back (frustration) ├─ Question quality of job board/recruiter │ Recruiters/companies: ├─ Waste time reviewing candidates for ghost job ├─ Damage reputation ("We ignored candidates") ├─ Wasted opportunity to attract talent │ Recruitment agents (like yours): ├─ Send candidates to ghost jobs (waste cycles) ├─ Poor placement rate (can't fill ghost jobs) ├─ Wasted budget (agent time on unproductive jobs) │
Red flags for ghost jobs
=== HOW TO DETECT GHOST JOB (SIGNALS) === │ Signal 1: Posted date ├─ Job posted 90+ days ago (biggest signal) ├─ Why it matters: Real jobs filled within 30-60 days (on average) ├─ If 90+ days: Company either not hiring seriously OR requirements too strict ├─ Action: If 90+ days, flag as likely ghost job │ Signal 2: Application volume vs hiring ├─ Job says "1000+ applications received" but still open ├─ Why it matters: Real companies stop hiring after receiving enough candidates ├─ If high volume + still open: Company has hiring freeze OR requirements impossible ├─ Action: If high application volume + 90+ days open, likely ghost job │ Signal 3: Salary not specified ├─ Job posting has no salary range ├─ Why it matters: Real jobs specify salary (to attract candidates) ├─ If no salary: Company testing market OR doesn't plan to hire ├─ Action: If no salary + 90+ days open, likely ghost job │ Signal 4: Requirements are unrealistic ├─ Junior role requires 10+ years experience ├─ Or: "Looking for unicorn developer" (impossible combination) ├─ Why it matters: Company knows role is unfillable (ghost job excuse) ├─ Action: If requirements clearly impossible to fill, likely ghost job │ Signal 5: Generic job description ├─ Job description is copy-paste generic (no company details) ├─ Or: Description talks about company but not job specifics ├─ Why it matters: Real jobs have detailed descriptions (to attract right candidate) ├─ If generic: Company didn't put effort (likely ghost job) ├─ Action: If generic + 90+ days open, likely ghost job │ Signal 6: No contact info or response ├─ Job posting has no way to apply ├─ Or: Company contact info is old/invalid ├─ Why it matters: Real jobs have clear application process ├─ If no contact: Company not accepting applications (ghost job) ├─ Action: If can't contact company or apply, definitely ghost job │ Signal 7: Posted on multiple job boards but unfilled ├─ Same job posted on LinkedIn, Indeed, Glassdoor (same posting date, all unfilled) ├─ Why it matters: If job is real, at least one board would show it filled ├─ If same posting age across all boards: Likely ghost job ├─ Action: If same 90+ day old posting everywhere, likely ghost job │ === SCORING SYSTEM (FOR YOUR AGENT) === │ Give each signal a score: ├─ Posted 90+ days ago: +3 points ├─ 1000+ applications received + still open: +3 points ├─ No salary specified: +2 points ├─ Requirements unrealistic: +2 points ├─ Job description generic: +2 points ├─ No contact info/can't apply: +3 points ├─ Posted on multiple boards, same date, unfilled: +2 points │ Ghost job threshold: ├─ 0-3 points: Likely real job (send candidates) ├─ 4-6 points: Questionable (verify before sending candidates) ├─ 7+ points: Likely ghost job (don't send candidates, skip) │
Why your recruitment agent wastes time on ghost jobs
The data quality problem
=== THE PROBLEM === │ Your agent processes job postings: ├─ Agent reads job posting (from LinkedIn, Indeed, company website) ├─ Agent assumes: "Job posting = real job that needs to be filled" ├─ Agent processes: Extract requirements, match candidates, send profiles │ Reality: ├─ 28% of job postings are NOT real jobs (ghost jobs) ├─ Agent has no way to know (unless explicitly told) ├─ Agent treats ghost jobs same as real jobs ├─ Result: Wasted agent time │ === EXAMPLE === │ Agent workflow (without ghost job detection): │ ├─ Job 1 (real): "Senior Python Developer, R$15k/month, posted 20 days ago" │ ├─ Agent: "This is real job, send candidates" │ ├─ Agent sends 5 candidates │ ├─ Company responds: "Great, let's interview" │ ├─ Result: Job filled, agent ROI positive │ ├─ Job 2 (ghost): "Senior Python Developer, no salary, posted 150 days ago" │ ├─ Agent: "This is real job, send candidates" │ ├─ Agent sends 5 candidates │ ├─ Company never responds (ghost job) │ ├─ Result: Job unfilled, agent wasted 5 candidate submissions │ ├─ Job 3 (ghost): "10+ years Python, AI/ML, blockchain, quantum computing (junior role)" │ ├─ Agent: "This is real job, send candidates" │ ├─ Agent can't find anyone matching (requirements impossible) │ ├─ Agent wastes time searching for unicorn │ ├─ Result: Agent time wasted, zero candidates sent │ Result: ├─ Agent processed 3 jobs ├─ Agent wasted time on 2 ghost jobs (67% of effort wasted) │ === AGENT COST === │ Agent runtime cost per job: ├─ Job parsing: 10 seconds (extract requirements) ├─ Candidate search: 5 minutes (find matching candidates) ├─ Candidate evaluation: 2 minutes (score candidates, rank) ├─ Profile submission: 1 minute (send to company) ├─ Total per job: ~8 minutes of agent time │ Agent cost per minute: R$0.50 (typical agent cost) ├─ Cost per real job: R$4 (agent time) ├─ Cost per ghost job: R$4 (agent time, zero return) │ Monthly impact: ├─ 100 job postings processed ├─ 72 real jobs (100 * 0.72) ├─ 28 ghost jobs (100 * 0.28) ├─ Cost for real jobs: R$288 (ROI positive, likely generates hires) ├─ Cost for ghost jobs: R$112 (ROI zero, zero hires) ├─ Wasted budget: R$112/month │ Yearly impact: ├─ Wasted budget: R$1,344/year (R$112 * 12) ├─ But this assumes no opportunity cost ├─ If agent could process better jobs instead: Real opportunity cost is 2-3x higher │
The candidate experience problem
=== THE IMPACT ON CANDIDATES === │ Candidate uses your recruitment agent: ├─ Agent finds 10 matching jobs ├─ Agent sends candidate profile to all 10 companies ├─ Candidate waits for responses │ What happens: ├─ 7 jobs (real): Company responds, some offer interviews ├─ 3 jobs (ghost): Company never responds (ghost jobs) │ Candidate's experience: ├─ "I applied to 10 jobs through this agent" ├─ "Only 3 responded (30% response rate)" ├─ "This agent sucks, it sent me to jobs that don't exist" ├─ "I'm never using this agent again" │ Your reputation damage: ├─ Candidate tells friends: "This agent is bad, wasted my time" ├─ Word of mouth: Negative reviews spread ├─ Your platform: Gets reputation for sending candidates to ghost jobs │ === THE MATH === │ Candidate lifetime value (CLV): ├─ Candidate uses agent for 6 months ├─ Candidate pays R$100/month (if premium tier) ├─ CLV = R$600 │ If candidate has bad experience (sent to ghost jobs): ├─ Churn probability: 80% (stop using after bad experience) ├─ Lost CLV: R$480 │ Scale: ├─ 1000 candidates per month ├─ 280 sent to ghost jobs (28%) ├─ 80% churn rate on ghost job bad experience: 224 candidates churn ├─ Lost revenue per month: R$13,440 (224 * R$60 average monthly value) │
How to detect and filter ghost jobs (implementation)
Layer 1: Data-based detection (automated)
=== AUTOMATED DETECTION (WHAT YOUR AGENT SHOULD DO) === │ Step 1: Collect job posting data ├─ Parse job posting: Title, description, salary, posted date, company ├─ Extract: Posted date (when was job posted?) ├─ Calculate: Days open (today - posted date) │ Step 2: Apply ghost job scoring ├─ If posted 90+ days ago: Flag as likely ghost job (score +3) ├─ If no salary specified: Flag (score +2) ├─ If requirements unrealistic: Flag (score +2) ├─ If description generic: Flag (score +2) ├─ If no contact info: Flag (score +3) │ Step 3: Decision ├─ Total score 0-3: Process as real job (send candidates) ├─ Total score 4-6: Verify (check if company responded to recent applicants) ├─ Total score 7+: Skip (don't send candidates) │ === CODE EXAMPLE (PSEUDOCODE) === │ def ghost_job_detector(job_posting): score = 0
# Signal 1: Posted date
days_open = today() - job_posting.posted_date
if days_open > 90:
score += 3
# Signal 2: No salary
if job_posting.salary == null:
score += 2
# Signal 3: Unrealistic requirements
if is_unrealistic_requirements(job_posting.requirements):
score += 2
# Signal 4: Generic description
if is_generic_description(job_posting.description):
score += 2
# Signal 5: No contact
if job_posting.contact_info == null:
score += 3
# Decision
if score <= 3:
return "PROCESS" # Send candidates
elif score <= 6:
return "VERIFY" # Check first
else:
return "SKIP" # Don't send candidates
Layer 2: Real-time verification (active check)
=== VERIFICATION STEP (FOR QUESTIONABLE JOBS) === │ For jobs with score 4-6 (questionable): │ Step 1: Check company response rate ├─ Look at LinkedIn job posting ├─ Check if company posted follow-up comment ("We're reviewing applications") ├─ Or: Check if company sent any updates (recent comments) ├─ If recent activity: Likely real job ├─ If no activity 30+ days: Likely ghost job │ Step 2: Contact company directly ├─ Email company HR: "We have candidate for [role], is position still open?" ├─ If response within 48h: Real job (send candidate) ├─ If no response: Likely ghost job (skip) │ Step 3: Check multiple boards ├─ Same job on LinkedIn: Posted 100 days ago, 500+ applications, no update ├─ Same job on Indeed: Posted 100 days ago, no updates ├─ Same job on company website: Posted 100 days ago, no updates ├─ Conclusion: Likely ghost job (consistent age across all boards) │
Layer 3: Feedback loop (learning from past)
=== LEARNING FROM PAST SUBMISSIONS === │ Track agent submissions over time: ├─ Job sent on: 2026-09-01 ├─ Candidate sent on: 2026-09-05 ├─ Company response on: Never ├─ Days to response: >90 days ├─ Outcome: No interview, no hire ├─ Conclusion: This job was likely ghost job │ Use this data to refine detection: ├─ If company never responds to submissions ├─ And job stays open 90+ days ├─ Then: Classify future jobs from this company as likely ghost jobs │ Example: ├─ Company X posted 10 jobs ├─ Agent sent 50 candidates ├─ Company X responded to 0 candidates ├─ Conclusion: Company X posts ghost jobs ├─ Action: Flag all future jobs from Company X as questionable │
Business impact of ghost job detection
ROI improvement
=== SCENARIO: WITHOUT GHOST JOB DETECTION === │ Agent processes 100 job postings per month: ├─ 72 real jobs (72%) ├─ 28 ghost jobs (28%) │ Agent time spent: ├─ Real jobs: 72 * 8 minutes = 576 minutes ├─ Ghost jobs: 28 * 8 minutes = 224 minutes ├─ Total: 800 minutes (13.3 hours) │ Agent cost: R$0.50/minute ├─ Real jobs: R$288 (generates hires) ├─ Ghost jobs: R$112 (generates zero hires) ├─ Total: R$400 │ Return: ├─ Real jobs: 72 * 0.10 (assume 10% fill rate) = 7 hires ├─ Ghost jobs: 28 * 0 (can't fill ghost job) = 0 hires ├─ Total hires: 7 ├─ Cost per hire: R$400 / 7 = R$57 per hire (ROI: 20% efficient) │ === SCENARIO: WITH GHOST JOB DETECTION === │ Agent processes 100 job postings per month: ├─ 72 real jobs (72%) → Process ├─ 28 ghost jobs (28%) → Skip │ Agent time spent: ├─ Real jobs: 72 * 8 minutes = 576 minutes ├─ Ghost jobs: 28 * 1 minute (just detection check) = 28 minutes ├─ Total: 604 minutes (10 hours) │ Agent cost: R$0.50/minute ├─ Real jobs: R$288 (generates hires) ├─ Ghost jobs: R$14 (detection only, no wasted effort) ├─ Total: R$302 │ Return: ├─ Real jobs: 72 * 0.12 (higher fill rate, no ghost jobs) = 8.6 hires ├─ Ghost jobs: 0 (detected and skipped) ├─ Total hires: 8.6 ├─ Cost per hire: R$302 / 8.6 = R$35 per hire (ROI: 35% efficient) │ === IMPROVEMENT === │ Agent cost reduction: R$400 → R$302 (-25%) Hires increased: 7 → 8.6 (+23%) ROI improvement: 20% → 35% (+75%) │ Monthly benefit: ├─ Cost saved: R$98/month ├─ Additional hires: 1.6/month ├─ If you monetize per hire: Huge ROI │ Yearly benefit: ├─ Cost saved: R$1,176/year ├─ Additional hires: 19.2/year │
Conclusão
Simple verdade:
28% das vagas são ghost jobs (abertas 90+ dias, nunca preenchidas). Seu agent de recrutamento não sabe qual é fake. Agent envia candidates pro nada. Candidate experience sufre. Agent ROI é destruído. Você desperdiça budget em jobs que não existem.
3 facts:
- Ghost jobs são comuns (28% das vagas estão abertas 90+ dias). Isso não é bug, é feature. Empresas usam ghost jobs pra: testar mercado, ganhar tempo, congelar hiring, parecer maior. Se seu agent não detecta, 1 em 3 submissions é wasted time.
- Agent ROI é destruído (28% do budget pra 0% return). Se seu agent custa R$400/mês e 28% é wasted em ghost jobs, você desperdiça R$112/mês (R$1,344/ano) em zero return. E isso assume sem opportunity cost (se agent processasse melhor jobs, poderia gerar 2-3x mais hires).
- Ghost job detection é commodity agora (data-based scoring, automated filters). Você não precisa de ML expert (regras simples funcionam: 90+ days open + no salary + generic description = ghost job). Implementação: 1-2 semanas. ROI: -25% cost + 23% more hires.
3 action items (this week):
- Audit seu agent (quantas vagas 90+ dias abertas ele processa?). Benchmark: Se >20% das vagas processadas têm 90+ dias open, seu agent tem ghost job problem.
- Implement ghost job detector (scoring system de 7 sinais). Takes 1-2 weeks. Não precisa de ML, só regras de dados.
- Measure impact (track: agent cost, number of hires, cost per hire). Baseline before, compare after. Expected: -25% cost, +23% hires, +75% ROI.
The cost of waiting:
- Your agent sends candidates to ghost jobs (28% wasted)
- Candidates get bad experience (sent to fake jobs)
- Your reputation suffers ("This agent sends me to jobs that don't exist")
- Agent ROI is destroyed (paying for zero return)
- You lose market share to competitors with better filtering
- Budget is wasted on unproductive agent time
The benefit of acting now:
- Your agent skips ghost jobs (send only to real vagas)
- Candidates get good experience (only real opportunities)
- Your reputation improves ("This agent only sends me to real jobs")
- Agent ROI improves (-25% cost, +23% hires)
- You gain competitive advantage (better agent efficiency)
- Budget is optimized (zero wasted on ghost jobs)
Próximos passos
Na OpenClaw, ajudamos SaaS builders otimizar recruitment agents:
- Ghost Job Detection Setup: Como implementar scoring system pra detectar ghost jobs?
- Data Quality Framework: Como auditar seu agent (% ghost jobs being processed)?
- Automated Filtering: Setup rules pra skip ghost jobs automatically?
- Verification Workflow: Como verificar jobs questionáveis (score 4-6)?
- Feedback Loop: Como usar historical data pra melhorar detection?
- Company Reputation Tracking: Track companies com alta ghost job rate (skip future postings)?
- ROI Measurement: Como medir impact de ghost job detection (cost savings, hire rate improvement)?
- Multi-board Consistency Check: Detectar mesma vaga em múltiplos boards com mesmo age (likely ghost)?
- Unrealistic Requirements Scoring: Auto-detect impossible requirements (10+ years junior role)?
- Real-time Company Verification: Email company HR pra verificar se vaga tá aberta (active check)?
Publicado em 24 de setembro de 2026