Skip to content

feat(visa-sponsors): Canada provider (ESDC positive LMIA employers)#664

Open
type0labs-dev wants to merge 1 commit into
DaKheera47:mainfrom
Type-zero-labs:feat/ca-visa-sponsor-provider
Open

feat(visa-sponsors): Canada provider (ESDC positive LMIA employers)#664
type0labs-dev wants to merge 1 commit into
DaKheera47:mainfrom
Type-zero-labs:feat/ca-visa-sponsor-provider

Conversation

@type0labs-dev

Copy link
Copy Markdown
Contributor

What

Adds a ca visa-sponsor provider backed by ESDC's positive LMIA employers list — employers issued a positive Labour Market Impact Assessment, i.e. cleared to hire temporary foreign workers.

  • Latest quarter resolved via the CKAN API (package_show), never a hardcoded URL: newest English YYYYQn…Positive… resource wins. Note: quarters have shipped as XLSX since 2021 (the CSVs on the dataset stop at 2020Q3), so a minimal sheet extractor (shared strings + inline values, ~70 lines) was added on top of fflate — promoted from transitive to a direct orchestrator dependency (0 new packages in the lockfile).
  • Columns mapped by header name (Province, Stream, Employer, Address, Approved Positions) so the provider survives the layout drift this dataset historically shows.
  • route = program stream (High Wage / Low Wage / etc.), typeRating = "LMIA positive employer (2025Q4: N approved positions)", city parsed from the address, province in the county field.
  • Catalog + docs table updated.

Evidence

  • Live run: 9,737 employers parsed from the real 2025Q4 workbook in ~4.6s (sanity: Shopify Inc., Ottawa, Ontario, High Wage)
  • 6 unit tests, including an in-memory XLSX built with fflate that mirrors the ESDC sheet shape (title rows before header, shared strings, entity decoding, empty-header error path)

Checks

biome ci . clean · shared + orchestrator typechecks · provider tests 6/6 · same 5 pre-existing client test files fail on clean main in my env (locale/timing), unrelated. Docs table conflicts trivially with #662/#663 — happy to rebase whichever lands last.

🤖 Generated with Claude Code

Employers issued a positive Labour Market Impact Assessment in the
latest published quarter. The newest English XLSX is resolved through
the CKAN API (quarters have shipped as XLSX since 2021), parsed with a
minimal sheet extractor built on fflate (promoted from transitive to a
direct orchestrator dependency). Columns are mapped by header name to
survive layout drift across years.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@DaKheera47

Copy link
Copy Markdown
Owner

small finding on this one, other than the merge conflict

The workbook has multiple rows per employer, but search keeps only the first one. This means the positions and streams shown can be incomplete.

Maybe aggregate rows by employer? sum approved positions, combine unique streams, and use “Multiple locations” when needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants