How we estimate ghost-job risk
By Jesse Johnson, Founder of ShouldApply. Published , last updated .
Every job ShouldApply scores gets an estimated ghost probability from 0 to 95%. Each signal below either adds to the estimate or pulls it down, and the total stops at 95% so no posting is ever called a certain ghost. The number is an estimate of risk, never a verdict on any employer's intent.
How the estimate is built
The model is additive. Signals that suggest a dead or never-real opening add to the score; signals that confirm a live requisition subtract from it. Some signals step up with severity, so a 95-day-old posting counts for more than a 35-day-old one. We don't publish the value of each signal: those numbers stay server-side so the estimate can't be gamed by tuning a listing to slip under them. What you see on a scored job is the probability plus the plain-English reasons that drove it.
Signals that raise the estimate
Posting age
Raises riskAge adds to the estimate past 30 days, more past 60 and more again past 90. Real openings get filled; a listing still up after three months has often lost its budget or its urgency.
Silent reposts
Raises riskWhen a board shows a fresh date but the original listing timestamp is older, we use the older date. A role that keeps getting re-dated is treated as old, because it is.
Repost and refresh loops
Raises riskThe same role reappearing on a regular cycle suggests an automated ATS refresh or resume-pile building, not a chair being filled. We track first-seen dates across the job pool to catch it.
No salary, or a very wide range
Raises riskA company that will not name a number often has no approved budget for the seat. A range so wide it says nothing counts against the posting too.
Thin description
Raises riskUnder 100 words, with no team and no concrete responsibilities. Boards that only publish snippets are exempt, since the short text is the board's choice, not the employer's.
Evergreen talent-pool titles
Raises riskTitles like "General Application" or "Future Opportunities" are pipelines, not openings.
A lone, aging listing
Raises riskA company whose only open role has been up for 30+ days looks more like a placeholder than a team that is hiring.
More than 500 applicants while still open
Raises riskHundreds of applicants over weeks with the listing still live usually means nobody is reading them or the req is frozen.
Staffing-agency indicators
Raises riskPostings routed through staffing shells are more often talent-pool nets than specific openings. Detected from employer-name and apply-link patterns.
Recent layoffs and WARN notices
Raises riskA company that filed a WARN notice or announced a reduction recently is less likely to be filling new seats. The effect fades over a 90-day window.
Old funding plus a stale listing
Raises riskFor venture-backed companies, a long gap since the last round combined with an aging posting suggests a hiring freeze.
Closed on the employer's own systems
Raises riskIf the requisition is gone from the origin ATS, or the role no longer appears on the company careers page, the posting is treated as likely dead.
Signals that lower it
Verified on the careers page or origin ATS
Lowers riskWhen the same role is live on the company's own careers page or applicant tracking system, the estimate drops.
A named recruiter or hiring manager
Lowers riskA real person attached to the posting is a sign someone owns the hire.
A company with several open roles
Lowers riskFive or more open roles at the same employer suggests an active hiring team, not a single forgotten listing.
Sample size and refresh cadence
As of , the Ghost Jobs Report draws on 8,711 postings scored for ghost risk across 3,967 employers, out of 169,400 active listings in the job pool. These figures refresh once a day.
- Ghost estimates are recalculated daily for jobs posted in the last 90 days that haven't been checked in the past 24 hours.
- The same daily run re-checks company careers pages for postings that are 14+ days old or already carry a risk signal.
- A job is also scored the moment you add it, so a fresh estimate never waits for the nightly run.
Limitations, plainly
- These are probabilistic signals, not proof. A high estimate can be wrong about any individual posting.
- Our pool skews toward the roles our users search for; it is not a census of the job market.
- If we can't reach a company's careers page, that check is skipped and counts neither way. A careers page that lists the role under a different title can still count against the posting, which is one more reason the result is an estimate, not a verdict.
- Company-level statistics are only ever published above minimum sample sizes, and always as estimates.
See the numbers this method produces in the Ghost Jobs Report, read what each flag means on your dashboard in the ghost job detection guide, compare the same signals by state on the job postings map, explore the employer directory in the Ghost Job Index, or test a specific posting with the free ghost job checker.