SPB Git

spb/job-ka

Public
page 1
  1. Tue, Aug 18, 2026 6

    1. Simon-Pierre Boucher · 7 files +12,893 −4
    2. Badge « Offre directe » + stats directes/portails + canal de dépôt direct employeurs
      …
      - is_direct (source hors AGGREGATORS) exposé sur /api/jobs, /api/jobs/{uid}
        et jobs.geojson ; badge sobre sur les cartes d offres (frontend rebuild)
      - /api/stats : direct_jobs, direct_employers, direct_sources, portal_jobs,
        duplicates_hidden ; KPI « Offres directes employeur » au tableau de bord
      - POST /api/employeurs/offres : dépôt direct validé (pydantic + pot de miel),
        normalisé par JobPosting.finalize(), stocké source=depot-direct INACTIF en
        attente de modération ; page /employeurs (formulaire + explications)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 7 files +311 −1
    3. Portails agrégateurs : Guichet-Emplois, Jobillico, Espresso-Jobs — l offre directe gagne toujours la canonique
      …
      - guichet_emplois : recherche HTML fprov=QC fenêtre glissante (fage),
        Crawl-delay 5 s respecté, description via page offre (cache + budget)
      - jobillico : sitemaps job_postings (~30 k), fenêtre des plus récentes,
        JSON-LD JobPosting sur page détail (cache + budget)
      - espresso_jobs : ItemList JSON-LD paginé + détail JobPosting (TI/créatif QC)
      - dedup.AGGREGATORS = {guichet_emplois, jobillico, espresso_jobs} :
        autorité 10 contre 0 pour les pages carrières — les doublons
        portail↔direct sont masqués côté portail (dup_of)
      - sources.json : entrées portails (aggregator: true) + dépôt direct
      
      Québec Emploi (quebecemploi.gouv.qc.ca) sondé mais non retenu : SPA React
      avec API interne authentifiée (clicSÉQUR), pas d accès public propre.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +348 −2
    4. 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC
      …
      - Secteur public : Santé Québec (emplois.sante.quebec), Emplois Santé Montréal
        (njoyn), CIUSSS de l Est-de-l Île-de-Montréal (taleo), CSSDM (workland),
        villes de Gatineau et Terrebonne, STL, RTC (njoyn via Scrapfly anti-Radware)
      - Grands employeurs : Bombardier, Cascades, Domtar (SuccessFactors sitemap
        RSS/urlset + microdonnées), Agnico Eagle, Bell Textron, Bayshore (Taleo REST
        + repli anglophone), Messer Canada (UltiPro), Lassonde, Mitsubishi HC
        Capital, MSI (ADP WFN + repli en_US), CAPREIT, McCarthy Tétrault, Omni,
        EDF Renouvelables (iCIMS + JSON-LD)
      - gen_connectors : EXTRA_ATTRS multi-attributs pour les nouveaux ATS
      - jobka/connectors/_jsonld.py : extraction schema.org/JobPosting partagée
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 34 files +2,093
    5. 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>
      Simon-Pierre Boucher · 65 files +3,728 −2
    6. 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>
      Simon-Pierre Boucher · 2 files +44 −2
  2. Mon, Aug 17, 2026 3

    1. Intégration complète à l'écosystème Groupe KA
      …
      - Design : ka-ui vendoré (tokens.css importé avant le CSS local), accent
        officiel cyan #0c8599 (fin du lime hérité), socle dédupliqué, badge
        « Un service Groupe KA » au header (desktop + mobile, zéro débordement
        à 360/768/1440), prefooter local + KaFooter commun, page /contact
        (ecosystem.json), title « Job-Ka — Un service Groupe KA », assets
        og.png/favicon.svg/apple-touch-icon + meta OG/Twitter absolues.
      - SSO KA ID : jobka/auth.py (client job-ka, cookie jobka_session, table
        users), bouton « Se connecter avec KA » au header, testé bout-en-bout
        jusqu'au hub (307 → /connexion, client reconnu).
      - Stats : /api/stats/dashboard (contrat SPEC, cache 5 min, salaires
        bornés 25–400 k$, série date_posted réelle) + /api/stats/report (PDF
        fpdf2 via jobka/kapdf.py, complet + synthèse), page /stats refaite sur
        ka/stats/kacharts.tsx ; /api/stats historique conservé pour le hub.
      - KA Agent : widget ka-agent.js câblé (site job-ka).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 24 files +3,546 −132
    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>
      Simon-Pierre Boucher · 602 files +14,306 −10
    3. 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>
      Simon-Pierre Boucher · 54 files +7,657
Menu

Theme