"""JobSpy ingestion provider (default, free) — implements JobSource. Scaffold stub -- not implemented yet. """ # TODO (Stage 1): implement JobSpySource per CLAUDE.md "Stage 1 — Ingest". # Uses python-jobspy (python_jobspy). Key notes: # - Search LinkedIn via JobSpy; parse LinkedIn numeric jobPostingId from the job URL. # - Map JobSpy result fields → RawJob (company, website from company_url_direct if present). # - Strip tracking query params from linkedin_url; keep only /jobs/view/{id}. # - Log observed fill rate of company_url_direct (see CLAUDE.md Gotchas).