From d804de1f4c28908ab69a1e6b47da0eeddbd6a281 Mon Sep 17 00:00:00 2001 From: ArchieChelle Date: Thu, 30 Jul 2026 19:38:44 -0400 Subject: [PATCH] Replace Canadian employer/site registry entries with verified US ones searches.yaml targets US locations and rejects "Canada", but employers.yaml and sites.yaml were full of Canada-only entries that would just get filtered out post-scrape. Swapped 22 Canadian Workday employers (banks, pension funds, corporate) for 7 verified US ones matching the actual target metros (Capital One, USAA, Booz Allen Hamilton, Fannie Mae, Comcast, T-Mobile, Southwest Airlines), each confirmed live against the real Workday CXS API. Also dropped 4 Canada-only job boards from sites.yaml and fixed Wellfound's URL from /canada to /usa. Updated README counts to match (25 employers, 36 sites). --- README.md | 10 +- src/applypilot/config/employers.yaml | 222 +++++---------------------- src/applypilot/config/sites.yaml | 73 ++++++--- 3 files changed, 97 insertions(+), 208 deletions(-) diff --git a/README.md b/README.md index 136b4f7b2..f3af52e8a 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Runs stages 1-5: discovers jobs, scores them, tailors your resume, generates cov | Stage | What Happens | |-------|-------------| -| **1. Discover** | Scrapes 5 job boards (Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs) + 48 Workday employer portals + 30 direct career sites | +| **1. Discover** | Scrapes 5 job boards (Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs) + 25 Workday employer portals + 36 direct career sites | | **2. Enrich** | Fetches full job descriptions via JSON-LD, CSS selectors, or AI-powered extraction | | **3. Score** | AI rates every job 1-10 based on your resume and preferences. Only high-fit jobs proceed | | **4. Tailor** | AI rewrites your resume per job: reorganizes, emphasizes relevant experience, adds keywords. Never fabricates | @@ -79,7 +79,7 @@ Each stage is independent. Run them all or pick what you need. | AI scoring | 1-10 fit score per job | Basic filtering | Your gut feeling | | Resume tailoring | Per-job AI rewrite | Template-based | Hours per application | | Auto-apply | Full form navigation + submission | LinkedIn Easy Apply only | Click, type, repeat | -| Supported sites | Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs, 46 Workday portals, 28 direct sites | LinkedIn | Whatever you open | +| Supported sites | Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs, 25 Workday portals, 36 direct sites | LinkedIn | Whatever you open | | License | AGPL-3.0 | MIT | N/A | --- @@ -120,8 +120,8 @@ Job search queries, target titles, locations, boards. Run multiple searches with API keys and runtime config: `GEMINI_API_KEY`, `LLM_MODEL`, `CAPSOLVER_API_KEY` (optional). ### Package configs (shipped with ApplyPilot) -- `config/employers.yaml` - Workday employer registry (48 preconfigured) -- `config/sites.yaml` - Direct career sites (30+), blocked sites, base URLs, manual ATS domains +- `config/employers.yaml` - Workday employer registry (25 preconfigured) +- `config/sites.yaml` - Direct career sites (36), blocked sites, base URLs, manual ATS domains - `config/searches.example.yaml` - Example search configuration --- @@ -129,7 +129,7 @@ API keys and runtime config: `GEMINI_API_KEY`, `LLM_MODEL`, `CAPSOLVER_API_KEY` ## How Stages Work ### Discover -Queries Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs via JobSpy. Scrapes 48 Workday employer portals (configurable in `employers.yaml`). Hits 30 direct career sites with custom extractors. Deduplicates by URL. +Queries Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs via JobSpy. Scrapes 25 Workday employer portals (configurable in `employers.yaml`). Hits 36 direct career sites with custom extractors. Deduplicates by URL. ### Enrich Visits each job URL and extracts the full description. 3-tier cascade: JSON-LD structured data, then CSS selector patterns, then AI-powered extraction for unknown layouts. diff --git a/src/applypilot/config/employers.yaml b/src/applypilot/config/employers.yaml index 528732e7b..1797f5cdf 100644 --- a/src/applypilot/config/employers.yaml +++ b/src/applypilot/config/employers.yaml @@ -4,73 +4,31 @@ employers: - # ── Canadian Banks & Financial ────────────────────────────────────────── - - td: - name: "TD Bank" - tenant: "td" - site_id: "TD_Bank_Careers" - base_url: "https://td.wd3.myworkdayjobs.com" - - cibc: - name: "CIBC" - tenant: "cibc" - site_id: "search" - base_url: "https://cibc.wd3.myworkdayjobs.com" - - rbc: - name: "RBC" - tenant: "rbc" - site_id: "RBCGLOBAL1" - base_url: "https://rbc.wd3.myworkdayjobs.com" - - bmo: - name: "BMO" - tenant: "bmo" - site_id: "External" - base_url: "https://bmo.wd3.myworkdayjobs.com" - - manulife: - name: "Manulife" - tenant: "manulife" - site_id: "MFCJH_Jobs" - base_url: "https://manulife.wd3.myworkdayjobs.com" - - sunlife: - name: "Sun Life" - tenant: "sunlife" - site_id: "Experienced-Jobs" - base_url: "https://sunlife.wd3.myworkdayjobs.com" - - desjardins: - name: "Desjardins" - tenant: "desjardins" - site_id: "Desjardins" - base_url: "https://desjardins.wd10.myworkdayjobs.com" - - intact: - name: "Intact Financial" - tenant: "intactfc" - site_id: "intactfc" - base_url: "https://intactfc.wd3.myworkdayjobs.com" - - aviva: - name: "Aviva Canada" - tenant: "aviva" - site_id: "External" - base_url: "https://aviva.wd1.myworkdayjobs.com" - - tmx: - name: "TMX Group" - tenant: "tmx" - site_id: "TMX_Careers" - base_url: "https://tmx.wd3.myworkdayjobs.com" - - brookfield: - name: "Brookfield" - tenant: "brookfield" - site_id: "brookfield" - base_url: "https://brookfield.wd5.myworkdayjobs.com" + # ── US Financial & Consulting (DC/VA, TX metro) ────────────────────────── + + capitalone: + name: "Capital One" + tenant: "capitalone" + site_id: "Capital_One" + base_url: "https://capitalone.wd12.myworkdayjobs.com" + + usaa: + name: "USAA" + tenant: "usaa" + site_id: "USAAJOBSWD" + base_url: "https://usaa.wd1.myworkdayjobs.com" + + boozallen: + name: "Booz Allen Hamilton" + tenant: "bah" + site_id: "BAH_Jobs" + base_url: "https://bah.wd1.myworkdayjobs.com" + + fanniemae: + name: "Fannie Mae" + tenant: "fanniemae" + site_id: "FannieMaeCareers" + base_url: "https://fanniemae.wd1.myworkdayjobs.com" fis: name: "FIS Global" @@ -90,58 +48,8 @@ employers: site_id: "jobs" base_url: "https://paypal.wd1.myworkdayjobs.com" - # ── Canadian Pension Funds ────────────────────────────────────────────── - - cppib: - name: "CPP Investments" - tenant: "cppib" - site_id: "cppinvestments" - base_url: "https://cppib.wd10.myworkdayjobs.com" - - omers: - name: "OMERS" - tenant: "omers" - site_id: "OMERS_External" - base_url: "https://omers.wd3.myworkdayjobs.com" - - otpp: - name: "Ontario Teachers" - tenant: "otppb" - site_id: "OntarioTeachers_Careers" - base_url: "https://otppb.wd3.myworkdayjobs.com" - - psp: - name: "PSP Investments" - tenant: "investpsp" - site_id: "psp_careers" - base_url: "https://investpsp.wd3.myworkdayjobs.com" - - cdpq: - name: "CDPQ" - tenant: "cdpq" - site_id: "CDPQ" - base_url: "https://cdpq.wd10.myworkdayjobs.com" - - hoopp: - name: "HOOPP" - tenant: "hoopp" - site_id: "HOOPP" - base_url: "https://hoopp.wd10.myworkdayjobs.com" - - aimco: - name: "AIMCo" - tenant: "aimco" - site_id: "AIMCoCareers" - base_url: "https://aimco.wd10.myworkdayjobs.com" - # ── Tech Companies ────────────────────────────────────────────────────── - blackberry: - name: "BlackBerry" - tenant: "bb" - site_id: "BlackBerry" - base_url: "https://bb.wd3.myworkdayjobs.com" - ciena: name: "Ciena" tenant: "ciena" @@ -196,12 +104,6 @@ employers: site_id: "Careers" base_url: "https://motorolasolutions.wd5.myworkdayjobs.com" - thomson_reuters: - name: "Thomson Reuters" - tenant: "thomsonreuters" - site_id: "External_Career_Site" - base_url: "https://thomsonreuters.wd5.myworkdayjobs.com" - moderna: name: "Moderna" tenant: "modernatx" @@ -240,66 +142,22 @@ employers: site_id: "BDO" base_url: "https://bdo.wd3.myworkdayjobs.com" - # ── Telecom ───────────────────────────────────────────────────────────── + # ── US Telecom & Consumer ───────────────────────────────────────────────── - telus: - name: "TELUS International" - tenant: "telusinternational" - site_id: "External" - base_url: "https://telusinternational.wd3.myworkdayjobs.com" + comcast: + name: "Comcast" + tenant: "comcast" + site_id: "Comcast_Careers" + base_url: "https://comcast.wd5.myworkdayjobs.com" - telus_health: - name: "TELUS Health" - tenant: "lifeworks" + tmobile: + name: "T-Mobile" + tenant: "tmobile" site_id: "External" - base_url: "https://lifeworks.wd3.myworkdayjobs.com" - - # ── Canadian Corporate ────────────────────────────────────────────────── - - canadian_tire: - name: "Canadian Tire" - tenant: "canadiantirecorporation" - site_id: "Enterprise_External_Careers_Site" - base_url: "https://canadiantirecorporation.wd3.myworkdayjobs.com" - - pc_financial: - name: "PC Financial" - tenant: "myview" - site_id: "pc_financial" - base_url: "https://myview.wd3.myworkdayjobs.com" - - cae: - name: "CAE" - tenant: "cae" - site_id: "career" - base_url: "https://cae.wd3.myworkdayjobs.com" - - magna: - name: "Magna International" - tenant: "magna" - site_id: "Magna" - base_url: "https://magna.wd3.myworkdayjobs.com" - - mlse: - name: "MLSE" - tenant: "mlse" - site_id: "MLSE" - base_url: "https://mlse.wd3.myworkdayjobs.com" - - olg: - name: "OLG" - tenant: "olg" - site_id: "Careers" - base_url: "https://olg.wd3.myworkdayjobs.com" - - enbridge: - name: "Enbridge" - tenant: "enbridge" - site_id: "enbridge_careers" - base_url: "https://enbridge.wd3.myworkdayjobs.com" + base_url: "https://tmobile.wd1.myworkdayjobs.com" - canadian_solar: - name: "Canadian Solar" - tenant: "canadiansolar" - site_id: "CanadianSolar" - base_url: "https://canadiansolar.wd5.myworkdayjobs.com" + southwest: + name: "Southwest Airlines" + tenant: "swa" + site_id: "external" + base_url: "https://swa.wd1.myworkdayjobs.com" diff --git a/src/applypilot/config/sites.yaml b/src/applypilot/config/sites.yaml index 5107aca85..9f6547cff 100644 --- a/src/applypilot/config/sites.yaml +++ b/src/applypilot/config/sites.yaml @@ -36,8 +36,6 @@ blocked_sso: # Used by detail enrichment to resolve relative URLs scraped from sites. # Sites not listed here (or with null) cannot have relative URLs resolved. base_urls: - "Job Bank Canada": "https://www.jobbank.gc.ca" - "CareerJet Canada": "https://www.careerjet.ca" "BuiltIn Remote": "https://builtin.com" "Hacker News Jobs": "https://news.ycombinator.com/" "RemoteOK": null @@ -51,31 +49,23 @@ base_urls: "Arc.dev": "https://arc.dev" "Himalayas": "https://himalayas.app" "Techstars Jobs": "https://www.techstars.com" - "Randstad Canada": "https://www.randstad.ca/jobs/search/" + "Weedmaps": "https://job-boards.greenhouse.io" + "Amtrak": "https://careers.amtrak.com" + "Delta Air Lines": "https://delta.avature.net" + "JPMorganChase": "https://jpmc.fa.oraclecloud.com" + "GEICO": "https://careers.geico.com" + "Liberty Mutual": "https://searchjobs.libertymutualgroup.com" + "Allstate": "https://www.allstate.jobs" + "AT&T": "https://www.att.jobs" + "Verizon": "https://mycareer.verizon.com" + "KPMG": "https://www.kpmguscareers.com" sites: # ── Searchable sites (URL includes query + location params) ────────── - # Canada-specific - - name: "Eluta" - url: "https://www.eluta.ca/search?q={query_encoded}&l={location_encoded}" - type: search - - name: "Talent.com" url: "https://www.talent.com/jobs?k={query_encoded}&l={location_encoded}" type: search - - name: "Randstad Canada" - url: "https://www.randstad.ca/jobs/?keywords={query_encoded}&location={location_encoded}" - type: search - - - name: "CareerJet Canada" - url: "https://www.careerjet.ca/search/jobs?s={query_encoded}&l={location_encoded}" - type: search - - - name: "Job Bank Canada" - url: "https://www.jobbank.gc.ca/jobsearch/jobsearch?searchstring={query_encoded}&locationstring={location_encoded}&fage=2&sort=D" - type: search - # General tech (with search) - name: "Dice" url: "https://www.dice.com/jobs?q={query_encoded}&location=Remote&pageSize=100" @@ -153,7 +143,7 @@ sites: type: static - name: "Wellfound" - url: "https://wellfound.com/role/l/software-engineer/canada" + url: "https://wellfound.com/role/l/software-engineer/usa" type: static - name: "Arc.dev" @@ -179,3 +169,44 @@ sites: - name: "Otta" url: "https://otta.com/jobs/all?title=software+engineer&remote=true" type: search + + # Company career sites + - name: "Weedmaps" + url: "https://job-boards.greenhouse.io/weedmaps77" + type: static + + - name: "Amtrak" + url: "https://careers.amtrak.com/go/View-All-Jobs-at-Amtrak/400419/?q={query_encoded}" + type: search + + - name: "Delta Air Lines" + url: "https://delta.avature.net/en_US/careers/SearchJobs/" + type: static + + - name: "JPMorganChase" + url: "https://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001/requisitions?keyword={query_encoded}" + type: search + + - name: "GEICO" + url: "https://careers.geico.com/us/en/" + type: static + + - name: "Liberty Mutual" + url: "https://searchjobs.libertymutualgroup.com/careers" + type: static + + - name: "Allstate" + url: "https://www.allstate.jobs/job-search-results/" + type: static + + - name: "AT&T" + url: "https://www.att.jobs/search-jobs" + type: static + + - name: "Verizon" + url: "https://mycareer.verizon.com/jobs/" + type: static + + - name: "KPMG" + url: "https://www.kpmguscareers.com/job-search/" + type: static