How we know
Full transparency. No secret sauce. Just public data, normalized titles, and a scoring engine that does not care about your employer brand.
Data sources
| Platform | Endpoint | Auth |
|---|---|---|
| Greenhouse | https://boards-api.greenhouse.io/v1/boards/{slug}/jobs?content=true | None โ public job board API |
| Lever | https://api.lever.co/v0/postings/{slug}?mode=json | None โ public JSON feed |
| Ashby | https://api.ashbyhq.com/posting-api/job-board/{slug} | None โ public job board API |
| Guest search (enrichment only) | No official API โ n8n matches flagged ghosts via public guest URLs |
Ingest schedule
- n8n (Hostinger) โ primary scheduler. Pulls ATS feeds every 6 hours, reclassifies nightly, LinkedIn match weekly for ghost-class streams.
- Vercel Pro โ serves the site and exposes
/api/ingestfor n8n to POST batches. - Supabase Pro โ stores companies, requisition streams, job postings, LinkedIn matches, and ingestion audit logs.
Classification
- Ghost โ 3+ job ID rotations for the same normalized title over 90+ cumulative days.
- Suspected ghost โ 2 rotations, or 60+ days with suspicious patterns.
- Stale โ single ID open 60+ days.
- Evergreen โ talent-pool language or department (not the same as ghost).
- Fresh โ within normal window.
Title normalization strips remote tags, locations, and punctuation before matching streams. Description hashing catches copy-paste re-posts with renamed titles.
What we never claim
We do not say a company is "lying." We report objective signals: posting age, ID rotation count, ATS timestamps, and optional LinkedIn cross-matches. You decide if HR is playing games.