How we estimate ghost-job risk
Every job ShouldApply scores gets an estimated ghost probability from 0 to 100. It is additive: each signal below contributes, capped at 95%, and the result is an estimate of risk — never a verdict on any employer's intent.
Posting age
StrongestReal openings get filled. A posting alive at 90+ days has usually lost its budget, its urgency, or both. Age is the single most predictive signal in our data.
No salary range
StrongA company that will not name a number often has no approved budget for the seat. Across our pool, most postings with no salary also carry other risk signals.
Vague description
ModerateUnder ~100 words, no team, no concrete responsibilities. Placeholder text correlates with placeholder intent.
Repost patterns
ModerateThe same role reappearing on a loop suggests resume-pile building, not a chair being filled. We track first-seen dates across the pool to catch this.
High applicant count while still open
ModerateHundreds of applicants over weeks with the listing still up means either nobody is reading them or the req is frozen.
Staffing-agency indicators
ContextualPostings routed through staffing shells are more often talent-pool nets than specific openings. Detected from employer-name and apply-link patterns.
Careers-page verification
CorrectiveWhen a posting IS verified on the company's own careers page, estimated risk drops. Absence on the careers page raises it.
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.
- 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, or test a specific posting with the free ghost job checker.