Data ethics
What we hold, what we suppress, and what we will not publish — including the cases where the answer costs us a story.
Commitments
- •k-anonymity suppression. No published cell describes fewer than 5 distinct companies. Where a breakdown would fall below that floor, we coarsen the grouping until it clears, or we suppress the cell — we never publish it with a caveat.
- •Pre-publication re-identification review. Before any study ships, we check whether its cells can be recombined — with each other, or with our own published pages — to single out a company that the suppression rule was meant to protect. A study that fails this review does not ship.
- •No person-level data. No field of a posting is a person record: we hold no name, contact detail, or profile of an individual as a field, and we publish nothing about a named individual. The complete list of fields we hold about a posting is on this page, and it is the list the API serves.
- •Named companies appear only where the posting itself is public and the company chose to advertise under its own name.
Suppression floor
No published cell describes fewer than 5 distinct companies. This is a hard floor, not a guideline: a breakdown that cannot clear it is coarsened until it does, or it is not published.
Provenance
Everything on this site is derived from public job advertisements — postings on company applicant-tracking systems and public job boards. Nothing is derived from a customer's account, usage, or queries.
This website itself reads no data at all: every page is static, written by hand, and holds no figures computed from the corpus. The research corpus and customer-facing product data are read through different code paths with different credentials, and nothing on this site reaches either.
Every field we hold about a posting
This is the complete list — not a summary of it. It is every field the API serves about a posting, plus the few derived or joined on for published research.
idurltitlestandard_titlecompany_idcompany_namecompany_domainlocationcountrycountry_codeposted_atsourcedescriptionskillsremote_typeremote_type_sourceremote_type_confidencesalary_rawsalary_minsalary_maxsalary_currencysalary_periodyearly_salary_usdseniority_levelapply_urlapply_typeapply_url_sourceapply_precisionats_providerleaves_siteexternal_reference_idemployer_typejob_familyposting_typecontact_personis_intermediatedemployer_disclosedis_canonical_sourceeligibilityrelevance_scoretitle_similaritycompany_signal_counthas_substantive_descriptionposted_at_precisionsalary_estimate_medianindustryheadcountposting_livenesslast_check_at
No field here is a person record. We hold no name, email address, phone number or profile of an individual as a field of a posting.
contact_person reads like an exception and
is audited as one: Despite the name, this carries no person: it is the PII-safe projection of the posting's on-behalf-of routing, and holds only two company identifiers — the agency's and the company the role was posted for. The underlying record's recruiter name, email address, phone number, LinkedIn profile and job title are deliberately never served.
One caveat we will not paper over. The `description` field is the advertisement's own text, stored and served exactly as the employer published it. Where an employer has chosen to print an individual's details in their own public job advert, those details are inside that text. We do not extract them, index them, build a person record from them, or publish them on this site — and we offer no way to search or filter on them. What we will not do is claim there is no field in which such a detail could appear, because that would not be true.
See also Method — the sample definition and pre-registered metric definitions.