Spaces:
Sleeping
Sleeping
| from typing import Literal | |
| PlatformGroup = Literal["Search Boards", "ATS Platforms", "Company Pages"] | |
| EVER_JOBS_PLATFORMS: dict[str, dict] = { | |
| # ββ Search Boards ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| "linkedin": {"group": "Search Boards", "display": "LinkedIn"}, | |
| "indeed": {"group": "Search Boards", "display": "Indeed"}, | |
| "glassdoor": {"group": "Search Boards", "display": "Glassdoor"}, | |
| "google": {"group": "Search Boards", "display": "Google Jobs"}, | |
| "naukri": {"group": "Search Boards", "display": "Naukri"}, | |
| "bdjobs": {"group": "Search Boards", "display": "BDJobs"}, | |
| "internshala": {"group": "Search Boards", "display": "Internshala"}, | |
| "bayt": {"group": "Search Boards", "display": "Bayt"}, | |
| "ziprecruiter": {"group": "Search Boards", "display": "ZipRecruiter"}, | |
| "monster": {"group": "Search Boards", "display": "Monster"}, | |
| "dice": {"group": "Search Boards", "display": "Dice"}, | |
| "careerjet": {"group": "Search Boards", "display": "CareerJet"}, | |
| "jooble": {"group": "Search Boards", "display": "Jooble"}, | |
| "adzuna": {"group": "Search Boards", "display": "Adzuna"}, | |
| "reed": {"group": "Search Boards", "display": "Reed"}, | |
| "totaljobs": {"group": "Search Boards", "display": "TotalJobs"}, | |
| "cwjobs": {"group": "Search Boards", "display": "CWJobs"}, | |
| "jobsite": {"group": "Search Boards", "display": "Jobsite"}, | |
| "cv_library": {"group": "Search Boards", "display": "CV-Library"}, | |
| "jobs_ac_uk": {"group": "Search Boards", "display": "jobs.ac.uk"}, | |
| "simplyhired": {"group": "Search Boards", "display": "SimplyHired"}, | |
| "snagajob": {"group": "Search Boards", "display": "Snagajob"}, | |
| "careerbuilder": {"group": "Search Boards", "display": "CareerBuilder"}, | |
| "usajobs": {"group": "Search Boards", "display": "USAJobs"}, | |
| "federalregister": {"group": "Search Boards", "display": "Federal Register"}, | |
| "linkedin_easy": {"group": "Search Boards", "display": "LinkedIn Easy Apply"}, | |
| "wellfound": {"group": "Search Boards", "display": "Wellfound (AngelList)"}, | |
| "remotive": {"group": "Search Boards", "display": "Remotive"}, | |
| "weworkremotely": {"group": "Search Boards", "display": "WeWorkRemotely"}, | |
| "himalayas": {"group": "Search Boards", "display": "Himalayas"}, | |
| "remoteok": {"group": "Search Boards", "display": "RemoteOK"}, | |
| "jobicy": {"group": "Search Boards", "display": "Jobicy"}, | |
| "remote_co": {"group": "Search Boards", "display": "Remote.co"}, | |
| "justremote": {"group": "Search Boards", "display": "JustRemote"}, | |
| "workable": {"group": "Search Boards", "display": "Workable Jobs"}, | |
| "upwork": {"group": "Search Boards", "display": "Upwork"}, | |
| "freelancer": {"group": "Search Boards", "display": "Freelancer"}, | |
| "toptal": {"group": "Search Boards", "display": "Toptal"}, | |
| "gun_io": {"group": "Search Boards", "display": "Gun.io"}, | |
| "indeed_sponsored": {"group": "Search Boards", "display": "Indeed Sponsored"}, | |
| "shine": {"group": "Search Boards", "display": "Shine (India)"}, | |
| "freshersworld": {"group": "Search Boards", "display": "Freshersworld"}, | |
| "timesjobs": {"group": "Search Boards", "display": "TimesJobs"}, | |
| "monsterindia": {"group": "Search Boards", "display": "Monster India"}, | |
| "iimjobs": {"group": "Search Boards", "display": "IIMJobs"}, | |
| "hirist": {"group": "Search Boards", "display": "Hirist (Tech India)"}, | |
| "instahyre": {"group": "Search Boards", "display": "Instahyre"}, | |
| "cutshort": {"group": "Search Boards", "display": "Cutshort"}, | |
| "angellist": {"group": "Search Boards", "display": "AngelList"}, | |
| "startup_jobs": {"group": "Search Boards", "display": "Startup.Jobs"}, | |
| "ycombinator": {"group": "Search Boards", "display": "Y Combinator Jobs"}, | |
| "producthunt": {"group": "Search Boards", "display": "Product Hunt Jobs"}, | |
| "xing": {"group": "Search Boards", "display": "Xing (DACH)"}, | |
| "stepstone": {"group": "Search Boards", "display": "StepStone"}, | |
| "jobware": {"group": "Search Boards", "display": "Jobware"}, | |
| "monster_de": {"group": "Search Boards", "display": "Monster Germany"}, | |
| "jobboerse": {"group": "Search Boards", "display": "Jobboerse"}, | |
| "indeed_de": {"group": "Search Boards", "display": "Indeed Germany"}, | |
| "manatal": {"group": "Search Boards", "display": "Manatal"}, | |
| "jobleads": {"group": "Search Boards", "display": "JobLeads"}, | |
| "careerone": {"group": "Search Boards", "display": "CareerOne (AU)"}, | |
| "seek": {"group": "Search Boards", "display": "Seek (AU/NZ)"}, | |
| "indeed_au": {"group": "Search Boards", "display": "Indeed Australia"}, | |
| "jobstreet": {"group": "Search Boards", "display": "Jobstreet (SEA)"}, | |
| "jobsdb": {"group": "Search Boards", "display": "JobsDB (HK/TH)"}, | |
| "recruitnet": {"group": "Search Boards", "display": "RecruitNet"}, | |
| "jobrapido": {"group": "Search Boards", "display": "Jobrapido"}, | |
| "trovit": {"group": "Search Boards", "display": "Trovit"}, | |
| "neuvoo": {"group": "Search Boards", "display": "Neuvoo (Talent.com)"}, | |
| "talent_com": {"group": "Search Boards", "display": "Talent.com"}, | |
| "lensa": {"group": "Search Boards", "display": "Lensa"}, | |
| "appcast": {"group": "Search Boards", "display": "Appcast"}, | |
| "jobg8": {"group": "Search Boards", "display": "JobG8"}, | |
| "jobisjob": {"group": "Search Boards", "display": "JobIsJob"}, | |
| "jobsora": {"group": "Search Boards", "display": "Jobsora"}, | |
| "jobvertise": {"group": "Search Boards", "display": "Jobvertise"}, | |
| "postjobfree": {"group": "Search Boards", "display": "PostJobFree"}, | |
| "juju": {"group": "Search Boards", "display": "Juju"}, | |
| "beyond": {"group": "Search Boards", "display": "Beyond"}, | |
| "jobsinthemoney": {"group": "Search Boards", "display": "Jobs in the Money"}, | |
| "jobs2careers": {"group": "Search Boards", "display": "Jobs2Careers"}, | |
| "getwork": {"group": "Search Boards", "display": "GetWork"}, | |
| "whatjobs": {"group": "Search Boards", "display": "WhatJobs"}, | |
| "efinancialcareers":{"group": "Search Boards", "display": "eFinancialCareers"}, | |
| "cwjobs_tech": {"group": "Search Boards", "display": "CWJobs Tech"}, | |
| "github_jobs": {"group": "Search Boards", "display": "GitHub Jobs"}, | |
| "stackoverflow": {"group": "Search Boards", "display": "Stack Overflow Jobs"}, | |
| "techinasia": {"group": "Search Boards", "display": "Tech in Asia"}, | |
| "e27": {"group": "Search Boards", "display": "e27 (SEA Startups)"}, | |
| "foundit": {"group": "Search Boards", "display": "Foundit (ex-Monster India)"}, | |
| "apna": {"group": "Search Boards", "display": "Apna"}, | |
| "naukrigulf": {"group": "Search Boards", "display": "NaukriGulf"}, | |
| "gulftalent": {"group": "Search Boards", "display": "GulfTalent"}, | |
| "dubizzle": {"group": "Search Boards", "display": "Dubizzle Jobs"}, | |
| # ββ ATS Platforms ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| "greenhouse": {"group": "ATS Platforms", "display": "Greenhouse"}, | |
| "lever": {"group": "ATS Platforms", "display": "Lever"}, | |
| "ashby": {"group": "ATS Platforms", "display": "Ashby"}, | |
| "workday": {"group": "ATS Platforms", "display": "Workday"}, | |
| "smartrecruiters": {"group": "ATS Platforms", "display": "SmartRecruiters"}, | |
| "bamboohr": {"group": "ATS Platforms", "display": "BambooHR"}, | |
| "recruitee": {"group": "ATS Platforms", "display": "Recruitee"}, | |
| "teamtailor": {"group": "ATS Platforms", "display": "Teamtailor"}, | |
| "icims": {"group": "ATS Platforms", "display": "iCIMS"}, | |
| "taleo": {"group": "ATS Platforms", "display": "Oracle Taleo"}, | |
| "successfactors": {"group": "ATS Platforms", "display": "SAP SuccessFactors"}, | |
| "jobvite": {"group": "ATS Platforms", "display": "Jobvite"}, | |
| "paylocity": {"group": "ATS Platforms", "display": "Paylocity"}, | |
| "jazz": {"group": "ATS Platforms", "display": "JazzHR"}, | |
| "pinpoint": {"group": "ATS Platforms", "display": "Pinpoint"}, | |
| "dover": {"group": "ATS Platforms", "display": "Dover"}, | |
| "breezyhr": {"group": "ATS Platforms", "display": "Breezy HR"}, | |
| "comeet": {"group": "ATS Platforms", "display": "Comeet"}, | |
| "jobsoid": {"group": "ATS Platforms", "display": "Jobsoid"}, | |
| "fountain": {"group": "ATS Platforms", "display": "Fountain"}, | |
| "keka": {"group": "ATS Platforms", "display": "Keka (India)"}, | |
| "darwinbox": {"group": "ATS Platforms", "display": "Darwinbox (India)"}, | |
| "zoho_recruit": {"group": "ATS Platforms", "display": "Zoho Recruit"}, | |
| "freshteam": {"group": "ATS Platforms", "display": "Freshteam"}, | |
| "kronos": {"group": "ATS Platforms", "display": "Kronos/UKG"}, | |
| "paycor": {"group": "ATS Platforms", "display": "Paycor"}, | |
| "adp": {"group": "ATS Platforms", "display": "ADP Recruiting"}, | |
| "oracle_hcm": {"group": "ATS Platforms", "display": "Oracle HCM"}, | |
| "sap_jobs": {"group": "ATS Platforms", "display": "SAP Jobs"}, | |
| "ceridian": {"group": "ATS Platforms", "display": "Ceridian Dayforce"}, | |
| "cornerstone": {"group": "ATS Platforms", "display": "Cornerstone OnDemand"}, | |
| "lumesse": {"group": "ATS Platforms", "display": "Lumesse"}, | |
| "silkroad": {"group": "ATS Platforms", "display": "SilkRoad"}, | |
| "hirevue": {"group": "ATS Platforms", "display": "HireVue"}, | |
| "workable_ats": {"group": "ATS Platforms", "display": "Workable ATS"}, | |
| "personio": {"group": "ATS Platforms", "display": "Personio"}, | |
| "rexx": {"group": "ATS Platforms", "display": "Rexx Systems"}, | |
| # ββ Company Pages ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| "amazon": {"group": "Company Pages", "display": "Amazon"}, | |
| "apple": {"group": "Company Pages", "display": "Apple"}, | |
| "google_careers": {"group": "Company Pages", "display": "Google Careers"}, | |
| "microsoft": {"group": "Company Pages", "display": "Microsoft"}, | |
| "meta": {"group": "Company Pages", "display": "Meta"}, | |
| "netflix": {"group": "Company Pages", "display": "Netflix"}, | |
| "nvidia_careers": {"group": "Company Pages", "display": "NVIDIA Careers"}, | |
| "stripe": {"group": "Company Pages", "display": "Stripe"}, | |
| "openai": {"group": "Company Pages", "display": "OpenAI"}, | |
| "anthropic": {"group": "Company Pages", "display": "Anthropic"}, | |
| "deepmind": {"group": "Company Pages", "display": "DeepMind"}, | |
| "salesforce": {"group": "Company Pages", "display": "Salesforce"}, | |
| "shopify": {"group": "Company Pages", "display": "Shopify"}, | |
| "uber": {"group": "Company Pages", "display": "Uber"}, | |
| "airbnb": {"group": "Company Pages", "display": "Airbnb"}, | |
| "twitter": {"group": "Company Pages", "display": "X (Twitter)"}, | |
| "snap": {"group": "Company Pages", "display": "Snap"}, | |
| "lyft": {"group": "Company Pages", "display": "Lyft"}, | |
| "atlassian": {"group": "Company Pages", "display": "Atlassian"}, | |
| "confluent": {"group": "Company Pages", "display": "Confluent"}, | |
| "databricks": {"group": "Company Pages", "display": "Databricks"}, | |
| "snowflake": {"group": "Company Pages", "display": "Snowflake"}, | |
| "palantir": {"group": "Company Pages", "display": "Palantir"}, | |
| "twilio": {"group": "Company Pages", "display": "Twilio"}, | |
| "cloudflare": {"group": "Company Pages", "display": "Cloudflare"}, | |
| "hashicorp": {"group": "Company Pages", "display": "HashiCorp"}, | |
| "figma": {"group": "Company Pages", "display": "Figma"}, | |
| "notion": {"group": "Company Pages", "display": "Notion"}, | |
| "slack": {"group": "Company Pages", "display": "Slack/Salesforce"}, | |
| "flipkart": {"group": "Company Pages", "display": "Flipkart"}, | |
| "swiggy": {"group": "Company Pages", "display": "Swiggy"}, | |
| "zomato": {"group": "Company Pages", "display": "Zomato"}, | |
| "razorpay": {"group": "Company Pages", "display": "Razorpay"}, | |
| "paytm": {"group": "Company Pages", "display": "Paytm"}, | |
| "meesho": {"group": "Company Pages", "display": "Meesho"}, | |
| "zepto": {"group": "Company Pages", "display": "Zepto"}, | |
| "byju": {"group": "Company Pages", "display": "BYJU'S"}, | |
| "unacademy": {"group": "Company Pages", "display": "Unacademy"}, | |
| "phonepe": {"group": "Company Pages", "display": "PhonePe"}, | |
| # Direct-company ATS aggregator (Greenhouse/Lever/Ashby public JSON APIs). | |
| # Routed to src/scrapers/company_ats.py, NOT the ever-jobs sidecar. | |
| "company_ats": {"group": "Company Pages", "display": "Direct Company ATS (Greenhouse/Lever/Ashby)"}, | |
| } | |
| INDIA_DEFAULT_PLATFORMS: list[str] = [ | |
| "linkedin", | |
| "naukri", | |
| "indeed", | |
| "glassdoor", | |
| "company_ats", | |
| "google", | |
| "bdjobs", | |
| "internshala", | |
| "bayt", | |
| "iimjobs", | |
| "foundit", | |
| ] | |
| PLATFORM_GROUPS: dict[str, list[str]] = { | |
| group: [k for k, v in EVER_JOBS_PLATFORMS.items() if v["group"] == group] | |
| for group in ("Search Boards", "ATS Platforms", "Company Pages") | |
| } | |
| def get_platform_keys_for_group(group: PlatformGroup) -> list[str]: | |
| return PLATFORM_GROUPS.get(group, []) | |
| def get_display_name(key: str) -> str: | |
| return EVER_JOBS_PLATFORMS.get(key, {}).get("display", key) | |
| def validate_platform_keys(keys: list[str]) -> tuple[list[str], list[str]]: | |
| valid = [k for k in keys if k in EVER_JOBS_PLATFORMS] | |
| unknown = [k for k in keys if k not in EVER_JOBS_PLATFORMS] | |
| return valid, unknown | |