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
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>
118 lines
6.3 KiB
Markdown
118 lines
6.3 KiB
Markdown
---
|
||
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 | Kitchener–Waterloo | 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; don’t 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)
|