Replace Apify with free JobSpy library#2
Conversation
- Swap apify-client for python-jobspy in src/job_api.py (scrape_linkedin -> scrape_jobs with LinkedIn, Indeed, Google) - Map Apify params (workType, experienceLevel) to JobSpy equivalents (is_remote, job_type) - Remove APIFY_TOKEN from .env and .env.example - Update pyproject.toml - remove apify-client dependency - Update README with JobSpy setup instructions - Update main.py spinner text Closes #1
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba8c433445
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| hours_old=720, | ||
| job_type=jt, | ||
| is_remote=is_remote, |
There was a problem hiding this comment.
Avoid incompatible Indeed filter combinations
This call always passes hours_old together with is_remote (and for internships also job_type), but JobSpy treats those filters as mutually exclusive for Indeed; as a result, Indeed queries can fail or ignore part of the filter set. In practice this means one of the advertised sources may return empty/incorrect results for normal searches, especially remote/internship requests.
Useful? React with 👍 / 👎.
| job_type_map = {"1": "internship"} | ||
| jt = job_type_map.get(experience_level, None) |
There was a problem hiding this comment.
Preserve experience filtering for non-intern roles
Only experience level "1" is mapped, so levels "2"–"5" become None and are no longer used to constrain results. This is a functional regression from the previous implementation: users selecting Entry, Associate, Mid-Senior, or Director will get unfiltered mixes of seniority, which hurts recommendation quality.
Useful? React with 👍 / 👎.
Changes since last PR update
MCP Server (mcp_server.py)
Streamlit UI (main.py)
Job API (src/job_api.py)
Agent (src/agent.py)
README
Closes #1