Data ethics
What we hold, what we suppress, and what we will not publish — including the cases where the answer costs us a story.
Method version 1.12.0 · Last generated September 14, 2026
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 — not the shorter one these pages render.
- •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.
The research corpus and any customer-facing product data are read through different code paths with different credentials. The generator that builds these pages holds a read-only corpus connection and cannot reach customer records at all.
The reads this site is able to perform are enumerated below and are all aggregate- or page-shaped. Single-record lookups are structurally forbidden at the seam and fail the build if added.
Every read this site can perform
assert_corpus_freshcollect_trend_aggregatescount_corpus_signalscount_distinct_sourcescount_served_sourcescount_signals_by_companycount_signals_by_dimensioncount_signals_for_pagesdetect_agency_namesfetch_ats_install_basefetch_comparison_sidesfetch_signals_by_boardfetch_signals_for_pageload_page_configsrecord_page_job_counts
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 this site derives or joins on for its own pages. It is deliberately not the shorter set these pages happen to render.
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.