[Feat] Add Indeed jobs scraper#1605
Conversation
|
@CREDO23 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…scraper # Conflicts: # README.es.md # README.hi.md # README.md # README.pt-BR.md # README.zh-CN.md # surfsense_backend/tests/unit/capabilities/google_maps/test_registry.py # surfsense_backend/tests/unit/capabilities/reddit/test_registry.py # surfsense_backend/tests/unit/capabilities/youtube/test_registry.py # surfsense_mcp/mcp_server/features/scrapers/__init__.py # surfsense_web/content/docs/connectors/index.mdx # surfsense_web/content/docs/connectors/native/index.mdx # surfsense_web/content/docs/connectors/native/meta.json # surfsense_web/content/docs/how-to/mcp-server.mdx # surfsense_web/lib/connectors-marketing/index.ts # surfsense_web/lib/playground/catalog.ts
Adds a platform-native Indeed scraper exposed as a single
indeed.scrapeverb.scrape_job_details.INDEED_JOBbilling unit, docs, env templates, README, and frontend catalog/marketing.High-level PR Summary
This PR adds a complete Indeed jobs scraper as a new platform capability exposed through the
indeed.scrapeverb. The implementation includes a browser-based scraper that handles Cloudflare challenges with residential proxy rotation, parses jobs from Indeed's embedded JSON, and supports both search queries and direct URLs. The feature is fully wired with chat subagent integration, MCP tool exposure, billing infrastructure (INDEED_JOBunit), comprehensive test coverage, documentation, environment templates, and frontend marketing/catalog materials.⏱️ Estimated Review Time: 30-90 minutes
💡 Review Order Suggestion
README.mdREADME.es.mdREADME.hi.mdREADME.pt-BR.mdREADME.zh-CN.mdsurfsense_backend/app/capabilities/indeed/scrape/schemas.pysurfsense_backend/app/proprietary/platforms/indeed_jobs/schemas.pysurfsense_backend/app/proprietary/platforms/indeed_jobs/url_resolver.pysurfsense_backend/app/proprietary/platforms/indeed_jobs/parsers.pysurfsense_backend/app/proprietary/platforms/indeed_jobs/fetch.pysurfsense_backend/app/proprietary/platforms/indeed_jobs/scraper.pysurfsense_backend/app/proprietary/platforms/indeed_jobs/__init__.pysurfsense_backend/app/capabilities/indeed/scrape/executor.pysurfsense_backend/app/capabilities/indeed/scrape/definition.pysurfsense_backend/app/capabilities/indeed/__init__.pysurfsense_backend/app/capabilities/core/types.pysurfsense_backend/app/capabilities/core/billing.pysurfsense_backend/app/config/__init__.pysurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/indeed/tools/index.pysurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/indeed/agent.pysurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/indeed/description.mdsurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/indeed/system_prompt.mdsurfsense_backend/app/agents/chat/multi_agent_chat/subagents/registry.pysurfsense_backend/app/agents/chat/multi_agent_chat/constants.pysurfsense_backend/app/routes/__init__.pysurfsense_mcp/mcp_server/features/scrapers/platforms/indeed.pysurfsense_mcp/mcp_server/features/scrapers/__init__.pysurfsense_mcp/mcp_server/server.pysurfsense_mcp/mcp_server/selfcheck.pysurfsense_web/lib/connectors-marketing/indeed.tsxsurfsense_web/lib/connectors-marketing/index.tssurfsense_web/lib/playground/catalog.tssurfsense_web/lib/playground/platform-icons.tsxsurfsense_web/public/connectors/indeed.svgsurfsense_web/content/docs/connectors/native/indeed.mdxsurfsense_web/content/docs/connectors/native/meta.jsonsurfsense_web/content/docs/connectors/native/index.mdxsurfsense_web/content/docs/connectors/index.mdxsurfsense_web/content/docs/how-to/mcp-server.mdxsurfsense_web/lib/auth-utils.tsdocker/.env.examplesurfsense_backend/.env.examplesurfsense_backend/tests/unit/platforms/indeed_jobs/test_parsers.pysurfsense_backend/tests/unit/platforms/indeed_jobs/test_url_resolver.pysurfsense_backend/tests/unit/platforms/indeed_jobs/test_fetch_resilience.pysurfsense_backend/tests/unit/platforms/indeed_jobs/test_scraper.pysurfsense_backend/tests/unit/capabilities/indeed/scrape/test_executor.pysurfsense_backend/tests/unit/capabilities/indeed/test_registry.pysurfsense_backend/tests/unit/platforms/indeed_jobs/fixtures/sample_jobcards.jsonsurfsense_backend/tests/unit/platforms/indeed_jobs/fixtures/sample_viewjob.htmlsurfsense_backend/scripts/e2e_indeed_scraper.pysurfsense_backend/tests/unit/agents/multi_agent_chat/test_subagent_composition.pysurfsense_backend/tests/unit/capabilities/google_maps/test_registry.pysurfsense_backend/tests/unit/capabilities/reddit/test_registry.pysurfsense_backend/tests/unit/capabilities/youtube/test_registry.pysurfsense_web/lib/connectors-marketing/google-maps.tsxsurfsense_web/lib/connectors-marketing/google-search.tsxsurfsense_web/lib/connectors-marketing/instagram.tsxsurfsense_web/lib/connectors-marketing/reddit.tsxsurfsense_web/lib/connectors-marketing/tiktok.tsxsurfsense_web/lib/connectors-marketing/web-crawl.tsxsurfsense_web/lib/connectors-marketing/youtube.tsx