spb/company-atlas
Public
Python 66.3%
TypeScript 22.7%
JavaScript 8.6%
HTML 1.4%
CSS 0.7%
1"""Lever postings — public endpoint behind `jobs.lever.co/<token>`:2`GET https://api.lever.co/v0/postings/{token}?mode=json` → [{id, text, categories:{commitment, location, team, department, allLocations},3country, workplaceType, hostedUrl, applyUrl, createdAt(ms), salaryRange?}]. EU tenants use api.eu.lever.co. Verified 2026-09-12 against the4`palantir` board (fixture trimmed to 20 postings, descriptions removed)."""5from __future__ import annotations67import re8from collections.abc import Mapping9from typing import Any1011from companyatlas.connectors._ats_base import AtsConnector12from companyatlas.connectors._util import country_code, dig, parse_date, text_of13from companyatlas.sdk.connector import ConnectorMeta, register14from companyatlas.sdk.models import ExtractedJob15from companyatlas.taxonomy import FetchMode, Surface161718@register19class LeverConnector(AtsConnector):20 vendor = "lever"21 token_re = re.compile(r"api\.(?:eu\.)?lever\.co/v0/postings/([a-z0-9_-]+)", re.IGNORECASE)22 meta = ConnectorMeta(connector_id="lever-v1", name="Lever postings", version="1", category=Surface.JOBS_BOARD, fetch_mode=FetchMode.JSON,23 default_interval_s=6 * 3600, url_pattern=r"api\.(eu\.)?lever\.co/v0/postings/", priority=50, pattern_required=True, accept="application/json",24 description="Public Lever postings API (mode=json)")2526 def parse_jobs(self, data: Any, sensor: Mapping[str, Any]) -> list[ExtractedJob]:27 out: list[ExtractedJob] = []28 for j in data if isinstance(data, list) else []:29 if not isinstance(j, dict) or not j.get("text"):30 continue31 cats = j.get("categories") or {}32 workplace = (j.get("workplaceType") or "").lower()33 sal = j.get("salaryRange") or {}34 out.append(ExtractedJob(35 title=str(j["text"]), url=j.get("hostedUrl") or j.get("applyUrl"), external_id=str(j.get("id") or ""),36 department=text_of(cats.get("department")), team=text_of(cats.get("team")), location_text=text_of(cats.get("location")),37 country=country_code(j.get("country")), remote=True if workplace == "remote" else (False if workplace in ("hybrid", "on-site", "onsite") else None),38 employment_type=text_of(cats.get("commitment")), posted_at=parse_date(j.get("createdAt")),39 salary_min=sal.get("min"), salary_max=sal.get("max"), salary_currency=sal.get("currency"), salary_period=sal.get("interval"),40 raw={"workplaceType": j.get("workplaceType"), "allLocations": dig(cats, "allLocations", default=[])[:5] if isinstance(cats.get("allLocations"), list) else []},41 ))42 return out43