Jobber/docs-site/docs/extractors/canadian-companies-qa-ats.md
ilia c840f289e1
Some checks failed
CI / Linting (Biome) (push) Failing after 40s
CI / Tests (push) Successful in 5m54s
CI / Type Check (adzuna-extractor) (push) Successful in 1m8s
CI / Type Check (gradcracker-extractor) (push) Successful in 1m11s
CI / Type Check (hiringcafe-extractor) (push) Successful in 1m8s
CI / Type Check (orchestrator) (push) Successful in 1m23s
CI / Type Check (startupjobs-extractor) (push) Successful in 1m6s
CI / Type Check (ukvisajobs-extractor) (push) Successful in 1m7s
CI / Documentation (push) Successful in 1m54s
feat(extractors): expand catalog, smoke coverage, and sourcing docs
Adds Arc.dev, BC T-Net, Eluta, iCIMS tenants, QAJobsBoard, and SmartRecruiters
manifests with registry/settings/UI wiring; registers full extractor list in
smoke-extractors and documents supplementary board access paths. Aligns Careerjet
v4 with the url query parameter and fixes strict typing in QAJobsBoard.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 22:36:23 -04:00

118 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: canadian-companies-qa-ats
title: Canadian companies — strong QA orgs and scrapable ATS
description: Reference list of Canadian tech employers with solid QA cultures and practical ATS endpoints for JobOps pipelines.
sidebar_position: 41
---
## What it is
A curated reference of **Canadian-headquartered or Canadian-heavy tech employers** where QA / SDET / test automation is often a first-class function, together with **scrapable ATS endpoints** where they exist.
Tier 1 targets map cleanly to the shipped **Ashby**, **Greenhouse**, **Lever**, **Workday**, and **SmartRecruiters** extractors. Tier 2 entries need custom scraping, browser automation, or upstream quirks.
**Verification:** Tier 1 integrations below were probed successfully (**HTTP `200`**, JSON where applicable). **Posting counts change daily** — re-run probes locally when you need exact volumes.
## Why it exists
Canada-focused QA sourcing benefits from **employer-direct ATS feeds** (clean titles, real apply URLs) instead of only aggregator noise. This page maps recognizable brands to **exact integration shapes** so you can paste slugs into Settings or env without rediscovering URLs.
## How to use it
### Tier 1 — Public ATS APIs (shipped extractors)
| Company | HQ | ATS | Endpoint / shape (reference) | JobOps wiring |
| --- | --- | --- | --- | --- |
| Wealthsimple | Toronto | Ashby | `GET https://api.ashbyhq.com/posting-api/job-board/wealthsimple` | Add **`wealthsimple`** to **`ashbyCompanies`** / `ASHBY_COMPANIES`. |
| 1Password | Toronto (remote-first) | Ashby | `.../job-board/1password` | Add **`1password`**. |
| Jobber | Edmonton / Toronto | Ashby | `.../job-board/jobber` | Add **`jobber`**. |
| Nylas | Toronto / SF | Ashby | `.../job-board/nylas` | Add **`nylas`**. |
| Hootsuite | Vancouver | Greenhouse | `GET https://boards-api.greenhouse.io/v1/boards/hootsuite/jobs?content=true` | Add **`hootsuite`** to **`greenhouseCompanies`**. |
| Faire | Waterloo / SF | Greenhouse | `.../boards/faire/jobs?content=true` | Add **`faire`**. |
| PointClickCare | Mississauga | Lever | `GET https://api.lever.co/v0/postings/pointclickcare?mode=json` | Add **`pointclickcare`** to **`leverCompanies`**. |
| Clio | Burnaby / Calgary / Toronto | Workday | `POST https://clio.wd3.myworkdayjobs.com/wday/cxs/clio/ClioCareerSite/jobs` (`limit`, `offset`, `searchText`) | Add **`https://clio.wd3.myworkdayjobs.com/en-US/ClioCareerSite`** to **`workdayTenants`** / `WORKDAY_TENANTS`. |
| Coveo | Quebec City / Montreal | SmartRecruiters | `GET https://api.smartrecruiters.com/v1/companies/Coveo/postings` | Add **`Coveo`** to **`smartrecruitersCompanies`**. API stays **`200`**; **`totalFound`** may be **zero** between hiring waves. |
Optional Ashby query parameter `?includeCompensation=true` works in browsers and `curl` for richer payloads; the bundled Ashby extractor calls the **same path without that query** and still returns full job lists.
**Example Settings JSON (merge with your existing lists):**
```json
["wealthsimple", "1password", "jobber", "nylas"]
```
```json
["hootsuite", "faire"]
```
```json
["pointclickcare"]
```
```json
["https://clio.wd3.myworkdayjobs.com/en-US/ClioCareerSite"]
```
```json
["Coveo"]
```
### Tier 2 — Harder or custom surfaces
| Company | HQ | ATS | Notes |
| --- | --- | --- | --- |
| Shopify | Ottawa / remote | Ashby (custom) | Hosted board / GraphQL (`jobs.ashbyhq.com/api/non-user-graphql`, `organizationHostedJobsPageName: "shopify"`) or parse careers HTML — not covered by the slug-based Ashby extractor today. |
| Lightspeed Commerce | Montreal | Custom (often Cloudflare) | Careers HTML at `https://www.lightspeedhq.com/careers/openings/` — browser or tolerant fetcher; no shipped extractor. |
| RBC Borealis | Toronto / Montreal | Greenhouse (embedded) | `boards-api` path **`rbcborealis`** returned **404** when probed — scrape `https://rbcborealis.com/careers/` or rediscover the active board slug before using Greenhouse JSON. |
| Vidyard | KitchenerWaterloo | JS-heavy site | `https://careers.vidyard.com/` — Playwright/Puppeteer if automating. |
| Loblaw Digital | Toronto | Workday (parent) | Parent Workday host may need the correct site segment; careers marketing site often lists roles — browser-backed discovery may be more reliable than guessing CXS paths. |
### Ready-to-use CLI filters (QA-oriented titles)
Ashby (example: Wealthsimple):
```bash
curl -s 'https://api.ashbyhq.com/posting-api/job-board/wealthsimple?includeCompensation=true' \
| jq '.jobs[] | select(.title | test("QA|SDET|Test|Automation"; "i")) | {title, location, url: .jobUrl}'
```
Greenhouse (example: Hootsuite):
```bash
curl -s 'https://boards-api.greenhouse.io/v1/boards/hootsuite/jobs?content=true' \
| jq '.jobs[] | select(.title | test("QA|SDET|Test|Automation"; "i")) | {title, location: .location.name, url: .absolute_url}'
```
Lever (PointClickCare):
```bash
curl -s 'https://api.lever.co/v0/postings/pointclickcare?mode=json' \
| jq '.[] | select(.text | test("QA|SDET|Test|Automation"; "i")) | {title: .text, location: .categories.location, url: .hostedUrl}'
```
Workday (Clio — QA search text):
```bash
curl -s -X POST 'https://clio.wd3.myworkdayjobs.com/wday/cxs/clio/ClioCareerSite/jobs' \
-H 'Content-Type: application/json' \
-d '{"limit":50,"offset":0,"searchText":"QA"}' \
| jq '.jobPostings[] | select(.title | test("QA|SDET|Test|Automation"; "i")) | {title, location: .locationsText}'
```
### Other strong-QA Canadian employers (ATS not deep-verified here)
Worth manual checks or Eluta / LinkedIn cross-reference: **Wattpad**, **Knix**, **Ada**, **Hopper**, **Plusgrade**, **D2L**, **Kinaxis**, **TELUS Digital / Mirum**, **Trulioo**, **OpenText / Hubdoc**.
## Common problems
- **Ashby counts vs `includeCompensation`:** Omitting the query param still returns jobs; compensation fields may be sparser.
- **Greenhouse board slug drift:** If `boards-api` returns `404`, the employer may have renamed the board — inspect their careers page embed or HTML source for the current board id.
- **SmartRecruiters zero postings:** Still a valid integration; dont treat empty arrays as a broken extractor.
## Related pages
- [Extractors overview](/docs/next/extractors/overview)
- [Canadian / NA QA contracting firms](/docs/next/extractors/qa-contract-staffing-canada)
- [Eluta](/docs/next/extractors/eluta)
- [Manual Import](/docs/next/extractors/manual)