HTML 82.1%
Python 14.6%
TypeScript 1.9%
CSS 1%
JavaScript 0.5%
-
Fri, Sep 18, 2026 1
-
Mon, Sep 14, 2026 1
-
Sat, Sep 12, 2026 1
-
Wed, Aug 26, 2026 1
-
Tue, Aug 25, 2026 1
-
Phase 3 — enrichissement des 1050+ connecteurs (exigences, séniorité) + refonte du display des offres avec métriques claires
…
Backend (enrichissement central via finalize() -> tous les connecteurs) : - normalize.py : extract_requirements() (années d'expérience, scolarité, langues exigées, FR/EN, bornes de plausibilité), parse_seniority() (stage/junior/intermédiaire/senior/direction : titre, libellés ATS, années d'expérience), en-têtes d'avantages élargis - schema.py : champ seniority + branchement des extracteurs (setdefault, jamais d'écrasement des valeurs ATS) - db.py : colonne seniority (migration auto) dans insert/update - web.py : filtre + facette séniorité, salary_context (médiane/quartiles de la catégorie + écart % de l'offre, cache 10 min), employer_jobs, median_salary_year dans /api/stats - scripts/backfill_enrich.py : backfill exécuté — 23 680 offres scannées, 16 606 exigences ajoutées (26 % -> 77 %), 10 966 séniorités (0 -> 46 %) - tests/test_enrich.py : 27 nouveaux tests (101 au total, tous verts) Frontend (display + métriques claires) : - JobCard : badge Nouveau (≤3 j), salaire avec équivalent annuel, badges séniorité/exigences/bilingue, pied fraîcheur · avantages · plateforme - Fiche : panneau « En un coup d'œil » (salaire vs marché avec barre interquartile P25-P75, expérience, scolarité, langues, fraîcheur, date limite), volume d'offres de l'employeur, historique du salaire affiché - Accueil : filtre séniorité ; api.ts : types + helpers (compactMoney, yearlyEquiv, daysSince) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Wed, Aug 19, 2026 1
-
Tue, Aug 18, 2026 2
-
Expansion ×: 59 nouveaux employeurs connectés via sondage massif d ATS + détection de pages carrières
…
- scripts/probe_ats.py : sonde 800+ slugs candidats sur les 9 ATS (timeout 6 s, throttle 0,3 s/domaine, 8 threads) ; confirmé = ≥1 offre ET ≥1 offre QC (is_quebec_location du projet). Découverte Workday sans page HTML (bloquée 406) : cxs 422=tenant absent / 404=hôte bon, puis devinette du site. - scripts/detect_ats.py : visite 6 337 domaines d employeurs QC (accueil + /carrieres|/careers|/emplois|/jobs|/fr/carrieres + liens carrières), reconnaît l ATS par motifs URL/DOM ; ATS non supportés (taleo 11, successfactors 6, adp 5, icims 4, njoyn 4, ukg 3) consignés dans data/detected-other-ats.jsonl pour traitement séparé. - data/feeds-expansion.json : 59 flux vérifiés -> 59 connecteurs générés (workday 22, smartrecruiters 10, bamboohr 12, greenhouse 6, lever 4, workable 2, ashby 1, recruitee 1, breezy 0) dont Vidéotron, CDPQ, BDC, Beneva, Intact, PSP, Investissement Québec, Rio Tinto, Alcoa, Airbus, Walmart Canada, Canadian Tire, RCGT, Lightspeed, Behaviour, Cirque du Soleil, Gameloft, Canam, QSL, Promutuel, EXFO… - 2 107 offres actives ajoutées, 100 % villes QC ; faux positif retiré (genetec smartrecruiters, doublon faible de genetec_inc workable) - normalize.py : villes hors-QC supplémentaires (Las Vegas, Orlando…) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Qualité lieux : rejet des villes canadiennes/monde hors Québec + bâtiments McGill mappés vers Montréal
…
- normalize.py : _NON_QC_CITIES (villes CA hors QC + grandes villes monde) — parse_location ne prend plus ces libellés pour des villes et is_quebec_location les rejette explicitement ; purge BD : 127 offres actives hors-QC désactivées (Toronto 50, etc.) - mcgill.py : les lieux Workday de McGill sont des bâtiments (Bronfman Building, Currie Gymnasium…) -> ville forcée Montréal (Outaouais -> Gatineau) ; 182 offres corrigées en BD Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Mon, Aug 17, 2026 2
-
Création massive : 135 connecteurs employeurs québécois sur 9 plateformes ATS
…
- 4 nouvelles classes de plateforme : Ashby (salaires structurés natifs), Workable (widget v1), Recruitee (offres complètes en liste), Breezy (verbose=true), BambooHR (détail + atsLocation) - Générateur en série scripts/gen_connectors.py (idempotent) + flux vérifiés data/feeds*.json — chaque flux validé par requête HTTP réelle avant génération - 124 connecteurs générés : Circle K, TD, BMO, CIBC, Autodesk, Manuvie, CIMA+, Transat, Reitmans, Rodeo FX, TEHORA, MaintainX, Hopper, Xsolla, dcbel, Robotiq, Toon Boom, BIXI, LG2, Framestore, NOVIPRO, etc. - Corrections : pagination Workday avec facette (total absent après la page 1), lieux « N Locations » résolus via la page détail, canonicalisation des villes, timeout iA à 90 s - 2 796 offres actives, 104 sources productives au moment du commit Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Fondation Job·Ka : socle backend, 5 connecteurs pilotes, frontend, tests
…
- Schéma JobPosting + normalisation (salaires $/h↔$/an, dates ISO, villes canoniques, catégories) — 25 tests unitaires - Pipeline hérité de Lou·Ka : diff par content_hash, délai de grâce, anti-dérive, expiration sur date limite, dédup union-find, géocodage Nominatim + Adresses Québec avec cache - Plateformes ATS : Workday (facette Québec auto-découverte), Lever, Greenhouse, SmartRecruiters — connecteurs pilotes CAE, Desjardins, Poka, Mistplay, Ubisoft (442 offres QC) - API FastAPI (/api/jobs, geojson, facets, sources, stats, /health) + frontend React/Vite (liste, fiche, carte MapLibre, stats) - Fixtures HTTP enregistrées/rejouées hors ligne + hook pre-commit d'en-tête d'auteur (section 17) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-