01
Local-first with SQLite
Single-user data (CV, matches) stays on the machine, with no hosting cost or third-party data exposure; retention and delete-on-demand are built in.
Personal project
Local-first job matcher: polls Job Bank, scores offers against your CV with an LLM
The scheduler drives each stage in order: ingest from Job Bank, score pending postings, then email a digest of matches over threshold.
Click a step to jump to it. Click a component for details.
A local-first service that polls Canada's Job Bank, filters offers for international-candidate eligibility, and scores them against an uploaded CV using an LLM. It alerts by email and dashboard and prepares tailored cover letters and emails strictly as drafts. A React dashboard manages filters, offers, CV, drafts and settings.
Finding postings that an international candidate can actually be hired for is slow: many require work authorization, and generic matching ignores that. The service automates discovery and fit scoring while never applying on the user's behalf.
01
Single-user data (CV, matches) stays on the machine, with no hosting cost or third-party data exposure; retention and delete-on-demand are built in.
02
Deterministic checks go first and the LLM only sees survivors, which saves cost and makes eligibility decisions auditable and fail-closed.
03
Auto-applying could misrepresent the candidate; keeping a human in the loop for every application is a deliberate safety boundary.
04
Natural writing without hallucination: the model only reorganizes numbered facts and a verifier rejects unsupported statements.
05
Separate api, services, repositories and models keep logic testable, and the exported schema keeps the typed frontend in sync.