In 2024, Greenhouse ran a sobering audit on its own platform. Greenhouse runs tens of thousands of job boards for reputable employers. Paid product, direct-from-company feeds, not the Indeed firehose. Their own finding: between 18 and 22% of postings each quarter are ghost jobs. Roles where nobody will be hired. 70% of Greenhouse clients had at least one ghost job live in Q2 2024 (Greenhouse 2024 State of Job Hunting).
Clarify Capital's 2024 employer survey was worse. Nearly one in three employers admitted to actively posting roles they had no intention of filling. About one in five were keeping roles "open" purely for optics. Nearly one in five were using AI to auto-repost inactive listings on a loop (Clarify Capital).
Hunter Ng's arXiv paper classified Glassdoor postings with an LLM and put the figure at up to 21% (arXiv:2410.21771). Revelio Labs tracked hires-per-posting from 0.75 in 2018 to under 0.5 in 2023. Half of postings never result in a hire now, versus one-in-five before.
If you've been applying a lot and feeling like you're screaming into a void, the problem isn't only the ATS black hole. It's that a serious share of the jobs you're applying to were never real to begin with.
What a ghost job actually is
A ghost job is a posting without genuine hiring intent. Not "we haven't decided yet". Not "we'll interview the top 10 and pick one." No intent at all. The reasons fall into four buckets.
Compliance bait. Mid-size and enterprise companies sometimes post roles externally because an internal candidate is being promoted and HR requires the role be "advertised". The decision is made. The posting is a ritual.
Bench building. The employer wants a pipeline of interested candidates for when an opening appears. They'll interview you, string you along, and ghost you in week three when no role materialised.
Optic posting. "We're hiring" is a growth signal to investors, prospects, and competitors. Some companies leave roles live because taking them down looks like a retreat. The posting is marketing, not hiring.
Zombie posting. The role was real six months ago. It was filled, or cancelled, or the hiring manager left. Nobody took the posting down. The ATS keeps bumping it to the top of Indeed and LinkedIn on a cadence. AI tools now auto-repost inactive roles to "keep them fresh" which extends the zombie life indefinitely.
Why this is worse than just rejection
Being rejected is a data point. You submitted, they said no, you learn something and move on. Ghosted by a real role is bad but recoverable.
Applying to a role that never existed is different. You tailored a CV that will never be read. You researched a company that isn't hiring. Your time, which is the currency of job search, was taken without the employer spending anything back. At scale, it erodes the feedback loop that makes the whole market work. The candidate can't tell if their CV was weak, their cover letter missed the mark, or they were applying to a phantom. None of the signal is actionable.
Seven signals this job is probably a ghost
There's no single giveaway. Pattern-match on these and the probability climbs fast.
1. It's been live for 60+ days. Real roles usually fill or get withdrawn inside 30-45 days. A posting live for three months with "urgent hire" in the title is almost always recycled. Check the original post date on LinkedIn (there's a "X months ago" line if you click through) and the Wayback Machine for the company's careers page.
2. The same role comes back every few weeks. Open the company's careers page, search their LinkedIn company page, cross-reference. If the same title is reappearing on a loop with subtle wording tweaks, it's an AI repost. Real hires don't re-list on a schedule.
3. The JD is vague enough to fit several people. Ghost postings often read generically because they aren't written for a specific seat. Real JDs call out the tech stack, the team you'd join, the product area, the metrics. Ghost JDs stay at "X years of experience" + bullet-point generalities.
4. No salary, no location specificity, no hiring manager named. When the intent is real, the details are specific. When it's not, the posting floats in abstractions.
5. The company's headcount has been shrinking while they "hire". Layoffs.fyi, LinkedIn headcount trends, news coverage. If a company cut 10% last quarter and is now "hiring aggressively", at least some of those postings are optic.
6. The recruiter never responds, or responds with a stock "you were impressive but..." two months later. You can Google the recruiter's name on LinkedIn. If they've been at the company two years and have 40 active postings in their feed, they're running a pipeline, not a hiring process.
7. "Evergreen" or "pipelining" in the description. Some companies are honest about this. If a posting says "we're always looking for great people" or "join our talent pipeline", it is explicitly not a live requisition.
What you can do about it
A few moves. None of them are clever, they're just less naive.
Time-box applications by posting age. If a role has been live more than 45 days and you can't confirm it's new, put it in a separate bucket and don't tailor a cover letter. Apply with a standard CV or don't apply at all. The expected value is too low.
Check the hiring manager's activity. Most real roles are filled by people who are active on LinkedIn. Find the hiring manager (the JD or the recruiter's network), look at their last 30 days of posts. Silent? Probably not actively hiring. Posting about a recent team launch or "looking for X"? Much more likely real.
Treat the referral as the honest channel. Referred candidates are hired at about 30% vs 7% for cold applicants (Pinpoint). Part of the reason is that a referral is an implicit confirmation the role is real. A friend who knows the hiring manager doesn't pass you along for a phantom req.
Stop hitting LinkedIn Easy Apply on high-applicant-count roles. LinkedIn rewards velocity, not accuracy. Go direct to the company's ATS (Greenhouse, Lever, Workable) where at least the posting has a chance of being worked by someone on the recruiter's actual team. Response rates are roughly 11% from company career pages vs 3-4% from LinkedIn (Uppl.ai).
What we built after reading this data
The freshness signal is why every job on Flint now shows a small badge when it's posted. Fresh = live inside the last 14 days with recent activity. Stale = not seen in feeds for 14+ days, or it's been live 90+ days and is still cycling. The badge isn't a guarantee that a posting is real. It's a clue that moves the probability in the right direction. Combined with a recruiter-activity check and the 45-day rule, you can cut the share of wasted applications by at least half.
None of this fixes the underlying problem that a fifth of the market is fake. That one needs regulation, or a verified-posting trust system, or both. Until then, the only defence is a sharper read on the signals that are already there.
If you've been job-hunting and your interview rate is lower than it should be, you're probably not the problem. Two in every ten roles you applied to never existed.
Drop your CV into Flint free. Every listing you see is scored against your profile and tagged for freshness. Ghost jobs get a badge. Fresh ones get a different badge. You decide where to spend your time.