Data ethics
What we hold, and what we will not publish
What we hold, what we suppress, and what we will not publish. That includes the cases where the answer costs us a story.
Provenance
Everything derives from public job advertisements. Every row comes from a public
job board or an ATS page we observe directly. Every result is a real posting,
tagged with the board it was detected on. We never infer intent, and we never
publish a figure as a posting that is not one. Each row's boards field
names its source. LinkedIn is not included.
Nothing derives from a customer's account, usage, or queries.
How we collect is on the crawler page: the crawler identifies itself on every request, and a site owner can stop it.
Suppression floor
No published cell describes fewer than 5 distinct companies. This is a hard floor, not a guideline. A breakdown below the floor is coarsened until it clears, or it is suppressed. It is never published with a caveat.
Every study also passes a re-identification review before publication. A study that fails the review does not ship.
Every field we hold about a posting
We publish a field register. It is the complete list, not a summary of it. The list the site publishes is the list the API serves, plus the few fields the site derives or joins on for its own pages. It is deliberately not the shorter set the pages happen to render.
- id
- url
- title
- standard_title
- company_id
- company_name
- company_domain
- location
- country
- country_code
- posted_at
- source
- description
- skills
- remote_type
- remote_type_source
- remote_type_confidence
- salary_raw
- salary_min
- salary_max
- salary_currency
- salary_period
- yearly_salary_usd
- seniority_level
- apply_url
- apply_type
- apply_url_source
- apply_precision
- ats_provider
- leaves_site
- external_reference_id
- employer_type
- job_family
- posting_type
- contact_person
- is_intermediated
- employer_disclosed
- is_canonical_source
- eligibility
- relevance_score
- title_similarity
- company_signal_count
- has_substantive_description
- posted_at_precision
- salary_estimate_median
- industry
- headcount
- posting_liveness
- last_check_at
No field in that register is a person record. We hold no name, contact detail, or
profile of an individual as a field of a posting. The contact_person
field carries no person despite the name. It is the PII-safe projection of
on-behalf-of routing, and it holds only two company identifiers.
One caveat is worth keeping. The description field stores the
employer's own ad text verbatim. A contact an employer printed in their own ad is
inside that text. We do not extract it, index it, or make it searchable, and we
will not claim such a detail could never appear.
Absence is not a signal
A company with no ATS or board coverage answers with
coverage_status: "no_ats_signal". That means "unknown", not "not
hiring". Payloads say so explicitly. We do not publish, and you should not score,
absence of coverage as a negative signal.
See also
The method page states the sample, the deduplication rule and the pre-registered metric definitions. The crawler page addresses site owners: what we collect, how we fetch, and how to opt out. Short answers are on the FAQ.