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.

Read the rules, then pull the data yourself.