Ghost Job Index methodology
Purpose
The Ghost Job Index is JobiQueue's owned data asset for journalists, researchers, and job seekers tracking scam and ghost-job noise in remote listings. It complements our free Trust Scan tool with corpus-level trends.
What we publish
- Total listings in the browse corpus and share flagged by listing-quality heuristics
- Histogram of machine-readable junk reasons (e.g. generic company names, weak apply domains)
- Distribution of ghost likelihood and scam risk on listings with linked Trust Reports
- Repost-churn aggregates (high-frequency title/company pairs, not the pairs themselves)
- Per-source junk rates for boards with at least 20 listings
What we never publish
- Job titles, employer names, recruiter names, or emails
- URLs, apply links, or free-text descriptions
- User accounts, scans, or application history
- Any row-level identifier that could re-identify a listing
Snapshots are validated in CI for email/URL patterns before merge.
Signal sources
- Listing quality: deterministic rules in
source_quality.py(generic company patterns, junk title keywords, short descriptions, weak apply hosts). Two independent weak signals or one high-precision signal flags a row. - Trust Reports: heuristic scam, ghost, and staleness analysis on listings linked via
job_targets.external_job_id. We publish bucket counts only. - Repost ledger: normalized company and title pairs with elevated repost cadence (≥4 reposts within 90 days). We publish counts, not the normalized strings.
- Source reputation: rolling junk score per job board from
source_quality.
Refresh cadence
Operators regenerate the snapshot weekly via python scripts/ghost_job_index.py --apply, review the diff, commit frontend/content/ghost-job-index/latest.json (archive + API file fallback), and deploy. The public report page at /ghost-job-index loads live data from GET /api/v1/public/ghost-job-index. It does not render the bundled placeholder file. See docs/ops/GHOST_JOB_INDEX_PUBLISH.md for the full runbook.
API
Machine-readable JSON: GET /api/v1/public/ghost-job-index (same schema as the published snapshot). Returns HTTP 503 until a real corpus snapshot is available; the report page shows an explicit unpublished state instead of placeholder numbers.
Citing this index
Suggested attribution: "JobiQueue Ghost Job Index, week ending [date], jobiqueue.com/ghost-job-index". Link to the methodology page when describing methods.