{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/peoplesearch-im/main/json-schema/peoplesearch-im-people-filters-schema.json",
  "title": "PeopleFilters",
  "description": "Exact filters, recommended for AI agents and programs: state each part of the request instead of a sentence. Values inside one list are alternatives (OR); different fields must all match (AND). Give a few variants where people word things differently (titles: [\"M&A Associate\", \"Investment Banking Associate\"]). When filters are given, `query` is only a label and is not parsed.",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/peoplesearch-im-openapi.json#/components/schemas/PeopleFilters",
  "type": "object",
  "properties": {
    "first_name": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "To find one named person: their first name, with the variants they may use, e.g. [\"Timothy\", \"Tim\"]. Use with last_name, and add companies or company_domains when known (\"Anqi Dai at Memorial Sloan Kettering\" finds the one person)."
    },
    "last_name": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "To find one named person: their last name, e.g. [\"Dai\"]. If the name with the employer finds nobody, the search tries the last name at the employer, then the full name anywhere."
    },
    "job_titles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Current job titles, matched as case-insensitive substrings (\"Account Executive\" also finds \"Senior Account Executive\"). Include the variants people use: [\"VP Sales\", \"Vice President of Sales\", \"Head of Sales\"]."
    },
    "exclude_job_titles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Titles to leave out, e.g. [\"Intern\", \"Recruiter\"]."
    },
    "past_job_titles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Titles the person held before their current job."
    },
    "companies": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Current employers by name, e.g. [\"Stripe\"]."
    },
    "company_domains": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Current employers by website domain, the most exact way to name a company, e.g. [\"stripe.com\"]."
    },
    "past_companies": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Former employers by name, e.g. [\"McKinsey\"] for ex-McKinsey people."
    },
    "locations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Where the person lives or works: cities, states, countries or regions, e.g. [\"Frankfurt\", \"Munich\"], [\"Germany\"], [\"DACH\"], [\"Texas\"]. Use \"City, Country\" to tell same-named places apart (\"Paris, France\"). Country names are safest; ISO codes are converted."
    },
    "industries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Industry of the current employer, as LinkedIn names it, e.g. [\"Investment Banking\"], [\"Software Development\"], [\"Hospitals and Health Care\"], [\"Venture Capital and Private Equity Principals\"], [\"Staffing and Recruiting\"]. Common older names are mapped; a name that is not an industry is reported in `ignored` and not applied."
    },
    "schools": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Schools the person attended, matched as substrings; add the local-language name too, e.g. [\"University of Mannheim\", \"Universität Mannheim\"]."
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Skills listed on the profile, e.g. [\"Python\", \"Kubernetes\"]."
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Languages the person speaks, e.g. [\"German\"] or [\"DE\"]."
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Words to find anywhere on the profile (headline, descriptions, past roles), for what no other field covers."
    },
    "company_keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Words the current employer's own description should contain, for a KIND of employer no industry names exactly, e.g. [\"hostel\"], [\"coffee\"] (founders of coffee roasteries), [\"SEO\"] (with industries [\"Marketing Services\"] for SEO agencies), [\"community college\"]."
    },
    "company_size_min": {
      "type": "integer",
      "minimum": 1,
      "description": "Minimum employees at the current employer."
    },
    "company_size_max": {
      "type": "integer",
      "minimum": 1,
      "description": "Maximum employees at the current employer."
    },
    "years_experience_min": {
      "type": "integer",
      "minimum": 0,
      "description": "Minimum total years of professional experience."
    },
    "years_experience_max": {
      "type": "integer",
      "minimum": 0,
      "description": "Maximum total years of professional experience."
    }
  },
  "additionalProperties": false
}