SPB Git forge

spb/job-ka

Public
229commits 1branches 0releases
38.1 MBsize
maindefault branch
1 h agolast push
HTML 82.1% Python 14.6% TypeScript 1.9% CSS 1% JavaScript 0.5%

History of data/sources.json · clear filter

  1. Thu, Sep 24, 2026 4

    1. [ka6] fix connecteur liferaft: faux positif de supervision (0 offre QC légitime — Liferaft n'a plus aucune offre publiée) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : l'org Workable liferaft n'a AUCUNE offre depuis la dépublication le 2026-09-24 (sync de 15:21, found 1→0 ; sync de 16:52, miss_count=2 → active=0) de l'unique offre québécoise « Senior Software Engineer » A48E333FD5 (Québec, parue 2026-08-17) — détail live 302 → apply.workable.com/oops confirmé (l'équivalent Workable d'un 404), donc les syncs horaires rendent ok=1 found=0 (médiane 0.5) et sont comptés comme non-succès — même profil que csncollision be10fa5, sangoma_3 783ee2c, qohash 2010afc, kodify c952fcc, goalcast a731f01, trupanion1 2cf5c9c, capintel f80c8d4, cliniqued 51913fe, canderel 32f1e24, coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul (15e cas du pattern). Le connecteur est INTACT et re-vérifié live : l'API widget apply.workable.com/api/v1/widget/accounts/liferaft?details=true répond (200, nom « Liferaft », mais 0 offre publiée — le board est entièrement vide, cas plus radical que csncollision/sangoma_3 où il restait des offres hors QC), zéro occurrence de montréal/québec/laval/gatineau/sherbrooke dans le JSON complet (773 octets) ; le widget Workable v1 liste TOUT en une requête (pas de partition par langue ou pays, contrairement à Dayforce) — pas d'angle mort. Correction au passage de l'artefact du générateur vague C dans data/sources.json : url vide → https://liferaftlabs.com (retrouvé via Serper, vérifié 200, « OSINT Platform for Real-Time Threat Intelligence | Liferaft » — plateforme OSINT de renseignement sur les menaces ; la fiche affichait « Site : [Liferaft]() »). Docstring du connecteur mise à jour (re-vérif 2026-09-24). Fiches docs/connecteurs/ liferaft.md + ats-workable.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,1 s, ok=1 — 0 reste le volume légitime tant que Liferaft ne republie pas au Québec ; toute republication sera re-capturée telle quelle (filtre client is_quebec_location opérationnel). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 1 h ago · 1 file +1 −1
    2. [ka6] fix connecteur csncollision: faux positif de supervision (0 offre QC légitime — CSN Collision n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : l'org Workable csncollision n'a AUCUNE offre QC depuis la dépublication le 2026-09-24 (sync de 14:50, found 3→0 ; sync de 16:22, miss_count=2 → active=0) des 3 offres québécoises « Auto Body Technician - RED SEAL » 071A1A35F8 (Kirkland, parue 2023-06-02), « Collision Repair Technician - Apprentice » BC43C97A0F (Kirkland, parue 2023-12-27) et « Technicien en carrosserie automobile - Carrossier Débosseleur » B560734C38 (Québec, parue 2025-12-01) — détails live 302 → apply.workable.com/oops confirmés (l'équivalent Workable d'un 404), donc les syncs horaires rendent ok=1 found=0 (médiane 1.5) et sont comptés comme non-succès — même profil que sangoma_3 783ee2c, qohash 2010afc, kodify c952fcc, goalcast a731f01, trupanion1 2cf5c9c, capintel f80c8d4, cliniqued 51913fe, canderel 32f1e24, coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul (14e cas du pattern). Le connecteur est INTACT et re-vérifié live : l'API widget apply.workable.com/api/v1/widget/accounts/csncollision?details=true répond (200, 96 offres publiées : 63 aux États-Unis — Californie, Illinois, Washington, Hawaï, Nevada, Texas, Minnesota, Wisconsin, Utah, Tennessee, Arizona — et 33 au Canada hors Québec — Ontario, Alberta, Nouveau-Brunswick, Nouvelle-Écosse), zéro occurrence de montréal/québec/laval/gatineau/sherbrooke/kirkland dans le JSON complet, et les 96 offres sont toutes correctement exclues par _keep/is_quebec_location (les 33 CA ont region Ontario/Alberta/NB/NS ≠ Québec) ; le widget Workable v1 liste TOUT en une requête (pas de partition par langue ou pays, contrairement à Dayforce) — pas d'angle mort. Correction au passage de l'artefact du générateur vague B dans data/sources.json : url vide → https://csncollision.com (vérifié 200, « CSN Collision - Auto Body Repair & OEM-Certified Collision Centers » ; la fiche affichait « Site : [CSN Collision]() »). Docstring du connecteur mise à jour (re-vérif 2026-09-24). Fiches docs/connecteurs/ csncollision.md + ats-workable.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,3 s, ok=1 — 0 reste le volume légitime tant que CSN Collision ne republie pas au Québec ; toute republication sera re-capturée telle quelle (filtre client opérationnel — le réseau compte des ateliers QC, ex-Kirkland). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 1 h ago · 1 file +1 −1
    3. [ka6] fix connecteur sangoma_3: faux positif de supervision (0 offre QC légitime — Sangoma n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : l'org Workable sangoma-3 n'a AUCUNE offre QC depuis la dépublication le 2026-09-24 (sync de 13:13, found 1→0 ; sync de 15:31, miss_count=2 → active=0) de l'unique offre montréalaise « Analytics Engineer, Enterprise Data » 6AC6A2A04F (parue le 2026-07-22, détail live 301 → apply.workable.com/sangoma-3/?not_found=true confirmé — l'équivalent Workable d'un 404), donc les syncs horaires rendent ok=1 found=0 (médiane 0.5) et sont comptés comme non-succès — même profil que qohash 2010afc, kodify c952fcc, goalcast a731f01, trupanion1 2cf5c9c, capintel f80c8d4, cliniqued 51913fe, canderel 32f1e24, coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul (13e cas du pattern). Le connecteur est INTACT et re-vérifié live : l'API widget apply.workable.com/api/v1/widget/accounts/sangoma-3?details=true répond (200, 5 entrées publiées : Payroll Manager remote US ×4 lieux Sarasota/Atlanta/Huntsville/Dallas + Senior Accountant Makati Philippines), zéro occurrence de montréal/québec/laval/gatineau/sherbrooke/QC dans le JSON complet (25,9 Ko), et les 5 entrées sont toutes correctement exclues par _keep/is_quebec_location (countryCode US/PH ≠ CA) ; le widget Workable v1 liste TOUT en une requête (pas de partition par langue ou pays, contrairement à Dayforce) — pas d'angle mort. Correction au passage de l'artefact du générateur vague C dans data/sources.json : url vide → https://sangoma.com (vérifié 200, « Sangoma: Business Communications Platform | UCaaS » ; la fiche affichait « Site : [Sangoma]() »). Docstring du connecteur mise à jour (re-vérif 2026-09-24). Fiches docs/connecteurs/ sangoma_3.md + ats-workable.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,1 s, ok=1 — 0 reste le volume légitime tant que Sangoma ne republie pas au Québec ; toute republication sera re-capturée telle quelle (filtre client opérationnel). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 3 h ago · 1 file +1 −1
    4. [ka6] fix connecteur omni_hotels_gestion: migration du tenant iCIMS 'externalmanager-omnihotels' → 'canada-omnihotels' — l'ancien portail « manager » renvoie 500 Internal Server Error avec un corps window.top.location.href='null' (portail iCIMS désactivé, redirection de tout le trafic vers une cible nulle) depuis le sync de 2026-09-23 ~23:48 (2 échecs consécutifs → stale), sur TOUTES ses URLs (/jobs/search, /jobs/intro, avec ou sans in_iframe/hub) alors que les autres tenants iCIMS du repo (careers-capreit, externalhourly-omnihotels, careers-globalexcel) répondent 200 — problème tenant-spécifique, pas plateforme. La page carrières officielle omnihotels.com/careers (403 Akamai en direct, lue via Scrapfly asp+render_js) pointe désormais vers le portail iCIMS consolidé https://canada-omnihotels.icims.com/jobs/intro (+ un portail Dayforce jobs.dayforcehcm.com/en-US/ohmc pour les autres postes), et ce nouveau tenant expose EXACTEMENT les 5 mêmes offres montréalaises avec les MÊMES IDs (133511 Gestionnaire des ventes groupes, 133508 Chef tournant, 133506 Serveur(euse) service aux chambres, 133505 Commis à la réception, 133503 Préposé(e) aux comptes recevables) — même pattern liste iframe (pr=0, page unique) + JSON-LD au détail, aucun changement du connecteur de base icims.py requis. Fix minimal : SUB='canada-omnihotels' dans jobka/connectors/omni_hotels_gestion.py (docstring mise à jour) + careers_url dans data/sources.json. Sync isolé rejoué : found=5 (= médiane 5.0), updated=5 (URLs des offres migrées vers le nouveau domaine, vérifiées en base), ok=1 en 1,4 s. NB: le portail jumeau externalhourly-omnihotels (connecteur omni_hotels_horaire, ok) répond encore 200 et liste les 5 mêmes offres — s'il est désactivé à son tour, appliquer la même migration vers canada-omnihotels. Fiches docs/connecteurs/ omni_hotels_gestion.md + ats-icims.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 15 h ago · 1 file +1 −1
  2. Wed, Sep 23, 2026 2

    1. [ka6] fix connecteur qohash: faux positif de supervision (0 offre QC légitime — Qohash n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le board Greenhouse qohash n'a AUCUNE offre QC depuis la dépublication le 2026-09-23 (sync de 12:10, found 1→0 ; sync rejoué 14:21, miss_count=2 → active=0) de l'unique offre montréalaise « Ingénieur(e) en solutions, bilingue (En, Fr) » 4722050005 (parue le 2026-08-12, détail API live 404 confirmé), donc les syncs horaires rendent ok=1 found=0 (médiane 1.0) et sont comptés comme non-succès — même profil que kodify c952fcc, goalcast a731f01, trupanion1 2cf5c9c, capintel f80c8d4, cliniqued 51913fe, canderel 32f1e24, coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul (12e cas du pattern). Le connecteur est INTACT et re-vérifié live : l'API boards-api.greenhouse.io répond (200, 4 offres publiées : Bilingual Fullstack Developer node/react, Senior Full Stack Developer React/Java, Senior Software Developer Go, Senior Strategic Account Executive Western Canada — toutes en lieu « Remote » SANS province, correctement exclues par is_quebec_location, cohérent avec la doctrine capintel « remote-first surveillé via le lieu du poste »), zéro lieu montréal/québec/laval/gatineau/sherbrooke dans le flux content=true (l'unique occurrence « quebec » est une préférence de résidence dans les Nice to Haves d'une offre Remote, pas un lieu), et l'endpoint /offices confirme que le bureau « Quebec Remote Work » (Quebec, Canada) existe mais n'a AUCUN poste rattaché (les 4 postes live sont au bureau générique « Remote ») — pas d'angle mort multi-bureaux ni de partition par langue (Greenhouse n'est pas partitionné par culture, contrairement à Dayforce). Correction au passage de l'artefact du générateur vague C dans data/sources.json : url vide → https://qohash.com (site officiel confirmé via Serper — qohash.com/fr « Sécurité des données et surveillance sans compromis », cybersécurité québécoise du CAMP ; curl direct 403 Cloudflare mais Scrapfly asp confirme 200 « Qohash - No Compromise Data Security and Monitoring » ; la fiche affichait « Site : [Qohash]() »). Docstring du connecteur mise à jour (re-vérif 2026-09-23). Fiches docs/connecteurs/ qohash.md + ats-greenhouse.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,1 s, ok=1, removed=1 (l'offre dépubliée passée active=0) — 0 reste le volume légitime tant que Qohash ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées (filtre client is_quebec_location opérationnel, « Remote - Quebec » serait gardé). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed yesterday · 1 file +1 −1
    2. [ka6] fix connecteur kodify: faux positif de supervision (0 offre QC légitime — Kodify n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'artefacts sources.json + EMPLOYER (nom = titre de poste) — le statut stale vient de la définition de succès de la supervision : le tenant Recruitee kodify n'a AUCUNE offre QC depuis la dépublication le 2026-09-23 (sync de 12:00, found 1→0 ; sync rejoué 14:01, miss_count=2 → active=0) de l'unique offre montréalaise « Video Ad Designer » 2717647 (parue le 2026-08-20, détail live https://kodify.recruitee.com/o/video-ad-designer 404 confirmé), donc les syncs horaires rendent ok=1 found=0 (médiane 1.0) et sont comptés comme non-succès — même profil que goalcast a731f01, trupanion1 2cf5c9c, capintel f80c8d4, cliniqued 51913fe, canderel 32f1e24, coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul (11e cas du pattern). Le connecteur est INTACT et re-vérifié live : l'API kodify.recruitee.com/api/offers/ répond (200, 5 offres publiées : Senior Data Engineer, Full-Stack Developer, Senior System Administrator, Senior Full-Stack Developer — Barcelone ES remote ×4 — et Junior Set Designer — Los Angeles US), zéro occurrence de montréal/québec/laval/gatineau/sherbrooke/qc dans le JSON complet, et les 5 offres sont toutes correctement exclues par _keep (country_code ES/US ≠ CA) ; Recruitee n'est pas partitionné par langue (contrairement à Dayforce), une seule requête liste tout — pas d'angle mort. Corrections au passage des artefacts du générateur vague C : (1) data/sources.json name « Video Ad Designer » → « Kodify Media Group » et url vide → https://kodify.io (vérifié 200, titre « Kodify Media Group | Careers » — producteur de contenu vidéo/sites à fort trafic, hub montréalais ; kodify.com est une autre entreprise, KODE Associates ; la fiche affichait « Site : [Video Ad Designer]() ») ; (2) jobka/connectors/kodify.py EMPLOYER « Video Ad Designer » → « Kodify Media Group » (le générateur avait pris le TITRE du poste pour le NOM de l'employeur — company_name de l'API : « Kodify » ; toute future offre QC sera attribuée au bon employeur). Docstring du connecteur mise à jour (re-vérif 2026-09-23). Fiches docs/connecteurs/ kodify.md + ats-recruitee.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,2 s, ok=1, removed=1 (l'offre dépubliée passée active=0) — 0 reste le volume légitime tant que Kodify ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed yesterday · 1 file +2 −2
  3. Tue, Sep 22, 2026 1

    1. [ka6] fix connecteur goalcast: faux positif de supervision (0 offre légitime — Goalcast n'a plus aucun poste ouvert) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le board Greenhouse goalcast n'a AUCUNE offre depuis la dépublication le 2026-09-22 (sync de 12:24, miss_count=2 → active=0 à 16:52) des 2 offres montréalaises « Administrative Coordinator - Coordonnateur(trice) Administratif(ive) | 2026 » 7801506003 (parue le 2026-07-10) et « Video Editor - Monteur Video | Unseen » 7759066003 (parue le 2026-06-01), détails live 404 confirmés, donc les syncs horaires rendent ok=1 found=0 (médiane 1.0) et sont comptés comme non-succès — même profil que trupanion1 2cf5c9c, capintel f80c8d4, cliniqued 51913fe, canderel 32f1e24, coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul (10e cas du pattern). Le connecteur est INTACT et re-vérifié live : l'API boards-api.greenhouse.io répond (200, jobs total=0 — board entièrement vide, pas seulement côté QC), l'endpoint /offices confirme un office unique « Goalcast HQ » (Montréal, Quebec, Canada) et /departments liste 12 départements TOUS à 0 poste (pas d'angle mort multi-bureaux ni de partition par langue — Greenhouse n'est pas partitionné par culture, contrairement à Dayforce), la page HTML job-boards.greenhouse.io/goalcast est 200 avec branding complet et message explicite « no current openings », et goalcast.com/careers reste en ligne (200, page Next.js) — pas de migration d'ATS. Goalcast étant un employeur 100 % montréalais (office unique QC), toute republication future sera re-capturée telle quelle. Correction au passage de l'artefact du générateur vague C dans data/sources.json : url vide → https://www.goalcast.com (vérifié 200 ; la fiche affichait « Site : [Goalcast]() »). Docstring du connecteur mise à jour (re-vérif 2026-09-22). Fiches docs/connecteurs/ goalcast.md + ats-greenhouse.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,1 s, ok=1 — 0 reste le volume légitime tant que Goalcast ne republie pas. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 2 days ago · 1 file +1 −1
  4. Mon, Sep 21, 2026 4

    1. [ka6] fix connecteur trupanion1: faux positif de supervision (0 offre QC légitime — Trupanion n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le tenant SmartRecruiters trupanion1 n'a AUCUNE offre QC depuis la dépublication le 2026-09-21 (sync de 17:38, miss_count=2 → active=0 à 19:09) des 2 offres montréalaises « Agent(e) de vente en assurance agréé(e) – Québec (bilingue) » 744000147096689 et « Licensed Insurance Sales Agent - Québec, Bilingual » 744000147096629 (parues le 2026-09-03, détail live 200 mais active=false confirmé — SmartRecruiters garde le détail consultable après dépublication), donc les syncs horaires rendent ok=1 found=0 (médiane 1.0) et sont comptés comme non-succès — même profil que capintel f80c8d4, cliniqued 51913fe, canderel 32f1e24 (volet dépublication), coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul (9e cas du pattern). Le connecteur est INTACT et re-vérifié live : l'API api.smartrecruiters.com répond (totalFound=54, une seule page, offres US/CA/CZ/DE/CH mélangées — l'API postings n'est PAS partitionnée par langue ou pays, pas d'angle mort type Dayforce), zéro occurrence de montréal/québec/laval/gatineau/sherbrooke/qc dans le JSON complet, et les 6 offres canadiennes live (Vancouver BC, Winnipeg MB, Edmonton AB, Calgary AB, London ON, Ottawa ON) sont toutes correctement exclues par _keep/is_quebec_location. Particularité du tenant : Trupanion republie CYCLIQUEMENT les 2 mêmes offres QC avec de nouveaux IDs (3 paires en base : 22/08 → 27/08 → 02/09), elles reviendront donc probablement d'elles-mêmes et le connecteur les re-capturera. Preuve du connecteur : fetch sans filtre QC = 54 offres lues (Seattle ×10, New York ×3, Prague, Berlin…). Correction au passage de l'artefact du générateur vague B dans data/sources.json : url vide → https://www.trupanion.com (site officiel confirmé via Serper — trupanion.com/fr-ca « Assurance pour animaux nº 1 au Canada » ; curl direct 403 Cloudflare mais Scrapfly asp confirme 200 ; la fiche affichait « Site : [Trupanion]() »). Docstring du connecteur mise à jour (re-vérif 2026-09-21). Fiches docs/connecteurs/ trupanion1.md + ats-smartrecruiters.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,5 s, ok=1 — 0 reste le volume légitime tant que Trupanion ne republie pas au Québec. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 2 days ago · 1 file +1 −1
    2. [ka6] fix connecteur cliniqued: faux positif de supervision (0 offre QC légitime — Clinique D n'a plus de poste ouvert) — aucun défaut du connecteur, correction d'artefacts sources.json (url vide, secteurs vides) — le statut stale vient de la définition de succès de la supervision : le compte JazzHR cliniqued est ACTIF (marqueur « resumator » présent, pas d'« Inactive Career Page » type derumarketcatering) mais la page liste affiche « no open positions at this time » depuis la dépublication de l'unique offre « Concierge Esthétique / Technicienne en laser – Laval » 0CYFU0oxZp (Laval, first_seen 2026-08-25 ; détail live 410 Gone confirmé ; found passé de 1 à 0 au sync de 16:50, miss_count=2 → active=0), donc les syncs horaires rendent ok=1 found=0 (médiane 0.5) et sont comptés comme non-succès — même profil que capintel f80c8d4, canderel 32f1e24 (volet dépublication), coorstek 2c4caea, altusgroup f092997 : tenant à volume QC temporairement nul. Le connecteur est INTACT et re-vérifié live : page liste 200 avec structure jobboard valide (le garde-fou anti-faux-zéro de jazzhr.py — marqueur resumator + détection compte fermé — fonctionne), zéro lien /apply/<id>/ dans le HTML complet, mention explicite « no open positions at this time. » ; JazzHR n'est pas partitionné par langue (contrairement à Dayforce), pas d'angle mort. Correction au passage des artefacts du générateur vague E dans data/sources.json : url vide → https://www.cliniqued.com (vérifié 200, titre « Clinique D | Dermatologie esthétique et photothérapie à Laval », retrouvé via Serper — la fiche affichait « Site : [Clinique D]() ») et sectors [] → [Santé, Esthétique] (secteurs déjà au vocabulaire — 58 et 1 sources ; la fiche affichait « Secteurs : n/d »). Docstring du connecteur ajoutée (re-vérif 2026-09-21). Fiches docs/connecteurs/ cliniqued.md + ats-jazzhr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,2 s, ok=1 — 0 reste le volume légitime tant que Clinique D ne republie pas ; les offres reviendront d'elles-mêmes si republiées (liste + filtre Québec au détail opérationnels). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 2 days ago · 1 file +5 −2
    3. [ka6] fix connecteur capintel: faux positif de supervision (0 offre QC légitime — CapIntel n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le board Greenhouse capintel n'a AUCUNE offre QC depuis la dépublication le 2026-09-21 (sync de 16:41, miss_count=2 → active=0 à 18:14) de l'unique offre montréalaise « Context Engineer » 5111380007 (parue le 2026-04-16, détail live 404 confirmé), donc les syncs horaires rendent ok=1 found=0 (médiane 0.5) et sont comptés comme non-succès — même profil que canderel 32f1e24 (volet dépublication), coorstek 2c4caea, altusgroup f092997, quadreal ef41976 : tenant à volume QC temporairement nul. Le connecteur est INTACT et re-vérifié live exhaustivement : l'API boards-api.greenhouse.io répond (3 offres : Senior Account Executive « US (Remote) » 5234414007, Strategic Account Development Associate Toronto 5210626007 et NYC 5210627007, toutes correctement exclues par is_quebec_location), zéro occurrence de montréal/québec/laval/gatineau/sherbrooke/qc dans le JSON complet content=true, et l'endpoint /offices vérifié bureau par bureau : CapIntel a bien des bureaux « Gatineau office (QC) » et « Montreal office (QC) » dans Greenhouse mais 0 poste rattaché à chacun (les 3 postes live : 1 au bureau US NY, 2 sans bureau) — pas d'angle mort multi-lieux, pas de partition par langue (Greenhouse n'est pas partitionné par culture, contrairement à Dayforce). Correction au passage de l'artefact du générateur vague C dans data/sources.json : url vide → https://capintel.com (vérifié 200, titre « CapIntel | Investment Presentations for Wealth Firms » — fintech de présentations de placements, cohérent avec les secteurs Finance/Données déjà en place ; la fiche affichait « Site : [CapIntel]() »). Docstring du connecteur mise à jour (re-vérif 2026-09-21). Fiches docs/connecteurs/ capintel.md + ats-greenhouse.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 0,1 s, ok=1 — 0 reste le volume légitime tant que CapIntel ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées (filtre client is_quebec_location opérationnel, remote-first canadien surveillé via le lieu du poste). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 2 days ago · 1 file +1 −1
    4. [ka6] fix connecteur canderel: bascule en balayage double fr-CA + en-CA (le tenant Dayforce ne publie plus rien en français) + correction artefacts sources.json — le statut stale combinait deux choses : (1) la dépublication NORMALE des 2 offres QC (« Coordonnateur/trice RH et recrutement » 3674/3628, même jobReqId 864, Montréal, parues les 2026-08-10/2026-07-16) confirmée à la source (absentes du search live toutes cultures ; le board en-CA liste 3 offres : Calgary 3709, Edmonton 3698, Toronto 3676), qui a fait tomber found de 2 à 0 au sync de 16:41 (miss_count=2 → active=0 à 18:14), et (2) un VRAI défaut d'aveuglement du connecteur : la recherche Dayforce est PARTITIONNÉE par culture de publication (constat harrisrebar 2026-09-10) et le search fr-CA du tenant canderel renvoie désormais maxCount=0 (vérifié live, 200 JSON valide) alors que en-CA/en-US renvoient les 3 offres du board, toutes publiées en anglais seulement — même défaut que g3canada 77813e5 et stateindustrial. Aucune offre QC live (les 3 offres sont AB/AB/ON, correctement exclues par _is_qc) : 0 reste le volume légitime tant que Canderel ne republie pas au Québec, mais le connecteur n'est plus aveugle et les offres reviendront d'elles-mêmes. Correction dans canderel.py : fetch() balaie fr-CA PUIS en-CA et déduplique par jobPostingId, la version française gagne (pattern harrisrebar, choisi plutôt que la simple bascule CULTURE=en-CA de g3canada car Canderel — promoteur immobilier montréalais — publiait ses offres QC en français : le double balayage garde le fr quand il existe). Preuve du correctif : fetch sans filtre QC = 3 offres lues (Calgary/Edmonton/Toronto), CULTURE restaurée à fr-CA après passage. Correction des artefacts vague C dans data/sources.json : url vide → https://canderel.com (vérifié 200, titre « Home | Welcome to Truly Invested | Canderel ») et secteurs « Agroalimentaire, Fabrication » (confusion du générateur avec l'édulcorant britannique Canderel) → « Immobilier » (déjà au vocabulaire, 30 sources ; les offres historiques — entretien d'immeuble Place Ville Marie, RH — sont bien l'immobilier montréalais). Fiches docs/connecteurs/ canderel.md + ats-dayforce.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). Sync isolé rejoué : found=0 en 5,2 s, ok=1 — cohérent avec la médiane 1.0 sur un tenant à volume QC temporairement nul. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 2 days ago · 1 file +2 −3
  5. Sat, Sep 19, 2026 2

    1. [ka6] fix connecteur coorstek: faux positif de supervision récurrent (0 offre QC toujours légitime — les seules offres historiques étaient à East Granby, CONNECTICUT) + échec nocturne transitoire de maintenance Workday — aucun défaut du connecteur, correction d'artefacts sources.json (url vide, region « East Granby » = ville du Connecticut) et de l'employer en base — le statut stale vient de la définition de succès de la supervision : le tenant Workday coorstek.wd1 n'a AUCUNE offre QC depuis le retrait le 2026-08-27 des 2 faux positifs « Production Operator II » R-114260/R-114269 (East Granby CT mappé par homonymie sur Granby/Estrie, fix générique f4038e4), donc les syncs horaires rendent ok=1 found=0 (médiane 0.0) et sont comptés comme non-succès depuis 560 h — même profil que altusgroup f092997, quadreal ef41976, cpab e498c30, drop_genie 8a53793. Le seul échec réel (sync de 03:37 cette nuit : « Workday non-JSON après 3 essais, HTTP 200 text/html ») est la fenêtre de maintenance nocturne Workday ~03 h EDT documentée dans workday.py (retry+backoff déjà en place), non reproduite au matin. Le connecteur est INTACT et re-vérifié live sous l'angle multi-lieux (angle mort type quadreal) : 91 offres sur 5 pages, zéro occurrence de quebec/montréal/laval/gatineau/sherbrooke dans le JSON complet des listes, recherche serveur searchText Quebec/Montréal → total 0 (Canada → 1, Ottawa ON), et les 4 offres « N Locations » (jusqu'à 29 lieux, dont AI Deployment Engineer R-113714-1) vérifiées UNE À UNE au détail cxs : 38 localisations cumulées, toutes US (Golden CO, Oak Ridge TN, Houston TX…), aucune canadienne. Correction au passage de deux artefacts du générateur vague C dans data/sources.json : url vide → https://www.coorstek.com (vérifié 200, titre « CoorsTek | Global Leader in Engineered Technical Ceramics ») et region « East Granby » → «» (East Granby est au Connecticut — la source n'a jamais eu de localité QC légitime ; 29 sources ont déjà une region vide), avec UPDATE en base de l'employer « Production Operator II » → « CoorsTek » des 2 offres inactives (le générateur avait mis le titre du poste comme employeur ; unifié avec l'EMPLOYER du connecteur). Docstring du connecteur mise à jour (re-vérif 2026-09-19, multi-lieux couverts). Sync isolé rejoué : found=0 en 7,6 s, ok=1 — 0 reste le volume légitime tant que CoorsTek ne publie pas au Québec ; les offres reviendront d'elles-mêmes si publiées (filtre client is_quebec_location + repli facette serveur opérationnels, le garde-fou _NON_QC_REGION_RE continue d'exclure East Granby CT). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 5 days ago · 1 file +2 −2
    2. [ka6] fix connecteur altusgroup: faux positif de supervision récurrent (0 offre QC toujours légitime) + échec nocturne transitoire de maintenance Workday — aucun défaut du connecteur, ajout du secteur manquant dans sources.json — le statut stale vient de la définition de succès de la supervision : le tenant Workday altusgroup.wd3 n'a AUCUNE offre QC depuis la dépublication fin août de l'unique offre montréalaise « Cost Consultant/Conseiller(ère) en analyse de coûts » R0013818 (active=0 depuis le 2026-08-26), donc les syncs horaires rendent ok=1 found=0 (médiane 0.0) et sont comptés comme non-succès depuis 565 h — même profil que quadreal ef41976, cpab e498c30, drop_genie 8a53793, et déjà diagnostiqué sur CE connecteur les 2026-08-26, 2026-09-12 et 2026-09-18. Le seul échec réel (sync de 02:43 cette nuit : « Workday non-JSON après 3 essais, HTTP 200 text/html ») est la fenêtre de maintenance nocturne Workday ~03 h EDT documentée dans workday.py (retry+backoff déjà en place), non reproduite au matin. Le connecteur est INTACT et re-vérifié live sous un angle NOUVEAU (l'angle mort multi-lieux type quadreal) : 42 offres sur 3 pages, zéro occurrence de quebec/montréal/laval/gatineau/sherbrooke/rougemont dans le JSON complet des listes, recherche serveur searchText Quebec/Montréal → total 0, et les 8 offres « N Locations » (jusqu'à 21 lieux) vérifiées UNE À UNE au détail cxs : 41 localisations cumulées, toutes US/UK (Texas, New York, Illinois, London, Manchester…), aucune canadienne hors Ontario/Alberta déjà exclues. Correction au passage du dernier artefact vague D dans data/sources.json : sectors [] → [Immobilier] (Altus Group = intelligence en immobilier commercial ; secteur déjà au vocabulaire, 29 sources ; la fiche affichait « Secteurs : n/d »). Docstring du connecteur mise à jour (re-vérif 2026-09-19, multi-lieux couverts). Sync isolé rejoué : found=0 en 3,9 s, ok=1 — 0 reste le volume légitime tant qu'Altus ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées (filtre client is_quebec_location + repli facette serveur opérationnels). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 5 days ago · 1 file +3 −1
  6. Fri, Sep 18, 2026 6

    1. [ka6] fix connecteur quadreal: faux positif de supervision (0 offre QC légitime — QuadReal n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'artefacts sources.json (url vide, graphie « Quadreal », région) — le statut stale vient de la définition de succès de la supervision : le tenant Workday quadreal.wd10 n'a AUCUNE offre QC depuis la dépublication aujourd'hui (2026-09-18, dernier sync à 1 : 15:26) de l'unique offre montréalaise « Property Administrator/Administrateur immobilier » R0006871 (ajoutée lors de la mission du 2026-09-10, détail live 404, recherche par ID → 0, miss_count=2 → active=0 déjà appliqué), donc les syncs horaires rendent ok=1 found=0 (médiane 0.5) et sont comptés comme non-succès depuis 4,5 h. Le connecteur est INTACT et re-vérifié live sur les DEUX sites du tenant (balayage double instauré le 2026-09-10, commit précédent) : Parkbridge = 8 offres (facette provinces AB 3 / ON 3 / BC 2), QuadReal = 69 offres (ON 31 / BC 29 / AB 6 / NY 5 / CA 3) — zéro valeur Québec dans les facettes, zéro occurrence de quebec/montréal/laval/gatineau/magog dans le JSON des listes, et les 6 offres multi-lieux (« 2/3 Locations », angle mort potentiel du filtre client) vérifiées une à une au détail : toutes Vancouver/Calgary/Toronto. Même profil que cpab e498c30, drop_genie 8a53793, altusgroup 2fc9e63 : tenant à volume QC nul compté non-succès par la supervision. Correction au passage de trois artefacts du générateur vague C dans data/sources.json : nom « Quadreal » → « QuadReal (QuadReal Property Group) » (graphie officielle, titre du site « QuadReal Property Group | QuadReal »), url vide → https://quadreal.com (vérifié 200 ; la fiche affichait « Site : [Quadreal]() »), region « Magog » (lieu de la seule offre Parkbridge historique) → « Montréal, Magog » (les deux localités QC ayant eu des offres), avec UPDATE en base de la graphie employer « Quadreal » → « QuadReal » de l'offre inactive R0006877 (unifiée avec l'EMPLOYER du connecteur). Docstring du connecteur mise à jour (re-vérif 2026-09-18, 0 offre QC sur les deux sites). Sync isolé rejoué : found=0 en 5,0 s, ok=1 — 0 est le volume légitime tant que QuadReal ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées (le double balayage couvre déjà tout le tenant). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 5 days ago · 1 file +3 −3
    2. [ka6] fix connecteur cpab: faux positif de supervision (0 offre QC légitime — le CPAB n'a plus de poste au Québec) — aucun défaut du connecteur, correction d'artefacts sources.json (url vide, nom « Cpab », secteur « Conseil » erroné) — le statut stale vient de la définition de succès de la supervision : le tenant Dayforce cpab n'a AUCUNE offre QC depuis la dépublication aujourd'hui (2026-09-18, sync de 16:24) de son unique offre montréalaise « Adjoint, Affaires juridiques et conseil d'administration » 1159 (parue le 2026-05-27, absente du search live, miss_count=2 → active=0 déjà appliqué au sync de 18:18), donc les syncs horaires rendent ok=1 found=0 (médiane 0.5) et sont comptés comme non-succès depuis 5,1 h. Le connecteur est INTACT et re-vérifié live : le search Dayforce répond 200 en fr-CA/en-CA/en-US avec maxCount=1 — l'unique offre du board est « Directeur, Inspections (Vancouver) » 1173, Vancouver BC, correctement exclue par le filtre Québec (l'aveuglement fr-CA type g3canada/stateindustrial est exclu : le fr-CA sert bien le board, mêmes résultats que en-CA). Même profil que drop_genie 8a53793, altusgroup 2fc9e63, autotradercanada 77020a3 : tenant à volume QC nul compté non-succès par la supervision. Correction au passage de trois artefacts du générateur vague C dans data/sources.json : l'employeur est le Conseil canadien sur la reddition de comptes (CPAB/CCRC, régulateur de l'audit des sociétés ouvertes, bureaux Toronto/Montréal/Vancouver — l'offre « Directeur, Inspections » = inspections de cabinets comptables) — nom « Cpab » → « CPAB (Conseil canadien sur la reddition de comptes) », url vide → https://cpab-ccrc.ca (vérifié 200, version fr /fr, footer « Conseil Canadien Sur La Reddition De Comptes »), secteur « Conseil » (confusion du générateur avec le mot « Conseil » du nom) → « Comptabilité » (déjà au vocabulaire), avec UPDATE du champ employer de l'offre inactive 1159 en base et EMPLOYER du connecteur aligné. Docstring du connecteur mise à jour (1 offre live hors QC, re-vérif 2026-09-18). Sync isolé rejoué : found=0 en 3,9 s, ok=1 — 0 est le volume légitime tant que le CPAB ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 5 days ago · 1 file +3 −3
    3. [ka6] fix connecteur drop_genie: faux positif de supervision (0 offre légitime — DropGenie n'a plus aucun poste ouvert) — aucun défaut du connecteur, correction d'artefacts sources.json (url vide, secteur erroné) — le statut stale vient de la définition de succès de la supervision : le tenant Breezy drop-genie n'a AUCUNE offre depuis la fermeture de son unique poste « Test Engineer - Microfluidics » 0cec9ddfa30d (Montréal, paru le 2026-06-08, page détail live = « Position Closed », miss_count=2 → active=0 déjà appliqué), donc chaque sync horaire rend ok=1 found=0 (médiane 1.0) et est compté comme non-succès depuis 4,8 h. Le connecteur est INTACT et re-vérifié live : l'API https://drop-genie.breezy.hr/json?verbose=true répond 200 avec un tableau vide [], et la page carrières affiche NO_POSITIONS (l'aveuglement type stateindustrial est exclu : zéro offre sur le board, toutes langues confondues). Même profil que altusgroup 2fc9e63, autotradercanada 77020a3, altom_transport ea13137 : tenant à volume nul compté non-succès par la supervision. Correction au passage de deux artefacts du générateur vague C dans data/sources.json : url vide → https://www.dropgenie.com (vérifié 200, titre « DropGenie – Making Personalized Possible » ; la fiche affichait « Site : [DropGenie]() ») et secteur « Logistique » → « Biotechnologie » (DropGenie automatise l'édition génique — « automate gene editing » sur son board —, son unique offre était un poste de microfluidique ; secteur déjà présent dans le vocabulaire, 7 sources). Docstring du connecteur mise à jour (0 offre, re-vérif 2026-09-18). Sync isolé rejoué : found=0 en 0,1 s, ok=1 — 0 est le volume légitime tant que DropGenie ne republie pas ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher committed 6 days ago · 1 file +2 −2
    4. [ka6] fix connecteur g3canada: bascule CULTURE fr-CA → en-CA (le tenant Dayforce ne sert plus rien en fr-CA) + correction artefacts sources.json — le statut stale combinait deux choses : (1) la dépublication NORMALE de l'unique offre QC (« Journalier » 3773, Québec, parue le 2026-07-30) confirmée à la source (404 sur l'API détail), qui a fait tomber found de 1 à 0 (miss_count=2 → active=0), et (2) un VRAI défaut d'aveuglement du connecteur : le search Dayforce du tenant g3canada en cultureCode fr-CA renvoie désormais maxCount=0 (vérifié live, 200 JSON valide) alors que le même search en en-CA/en-US renvoie les 13 offres du board — même défaut que stateindustrial d478a07 (le fr-CA n'est pas cassé globalement chez Dayforce : lavieenrose fr-CA = 154 offres ; c'est ce tenant qui a désactivé/vidé sa culture fr-CA). Aucune offre QC live sur le board (Winnipeg ×3, Alberta ×2, Saskatchewan ×5, North Vancouver, Thunder Bay ×2 — l'unique occurrence de « quebec » dans le JSON complet est « excluding Quebec » dans une description) : 0 reste le volume légitime tant que G3 ne republie pas au Québec (terminal au Port de Québec), mais le connecteur n'est plus aveugle et les offres reviendront d'elles-mêmes. Correction minimale dans g3canada.py : CULTURE='en-CA' (le filtre Québec reste côté client via _is_qc) + correction des artefacts vague C : EMPLOYER/name « Électricien industriel » (titre de poste pris pour un nom d'employeur) → « G3 Canada » (site officiel https://www.g3.ca vérifié 200, titre « G3 - G3 Canada Limited »), url vide → https://www.g3.ca, region « G3 Québec » (nom d'élévateur) → « Québec », avec UPDATE du champ employer de l'offre inactive en base. Sync isolé rejoué : found=0 en 2,9 s, ok=1 — 13 offres lues, 0 QC après filtre, cohérent avec la médiane 0.5. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 6 days ago · 1 file +3 −3
    5. [ka6] fix connecteur altusgroup: faux positif de supervision (0 offre QC légitime — Altus n'a plus de poste au Québec) + échec DNS transitoire ponctuel — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le tenant Workday altusgroup.wd3 (site AltusGroup) n'a AUCUNE offre QC depuis le retrait de l'unique offre montréalaise fin août (R0013818, déjà constaté le 2026-08-26), donc chaque sync horaire rend ok=1 found=0 (médiane 0.0) et est compté comme non-succès depuis le 2026-08-26 (551 h). Le connecteur est INTACT et re-vérifié live : l'API cxs répond 200 avec 42 offres (Toronto, Calgary, Ottawa, US, UK, Paris, Sydney, Singapour, Inde…) — recherche serveur « Quebec »/« Montréal » = 0 résultat, zéro occurrence de quebec/montréal/laval/gatineau/sherbrooke dans le JSON complet des 3 pages (l'aveuglement type stateindustrial est exclu ; le hook _external_id posé le 2026-09-12 reste correct). L'unique sync en échec (18/09 12:51) est une NameResolutionError DNS transitoire sur altusgroup.wd3.myworkdayjobs.com, non reproduite (API OK en live). Même profil que altom_transport ea13137, earthrated f7b1c35, canadasmotorcycle 175b215, jsheldllc bdc5d09, psacunion 4d8080b : tenant à volume QC nul/faible compté non-succès par la supervision. Correction au passage de l'artefact du générateur vague D : url vide dans data/sources.json → https://www.altusgroup.com (vérifié 200, titre « Altus Group - Data-Powered CRE Technology & Analytics » ; la fiche affichait « Site : [Groupe Altus]() »). Le nom d'employeur « Groupe Altus » est correct. Docstring du connecteur mise à jour (42 offres, re-vérif 2026-09-18). Sync isolé rejoué : found=0 en 4,0 s, ok=1 — 0 est le volume légitime tant qu'Altus ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 6 days ago · 1 file +1 −1
    6. [ka6] fix connecteur altom_transport: faux positif de supervision (0 offre QC légitime chez ce transporteur US) + échec DNS transitoire ponctuel — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le tenant Workable altom-transport n'a AUCUNE offre QC depuis la fermeture de « Chauffeur de Camion-Citerne Classe 1 » (Montréal) fin août, donc chaque sync horaire rend ok=1 found=0 (médiane 0.0) et est compté comme non-succès depuis le 2026-08-28 (509 h). Le connecteur est INTACT et re-vérifié live : l'API widget répond 200 avec 52 offres, TOUTES aux États-Unis — zéro lieu CA dans les tableaux locations, zéro poste en télétravail, zéro mention Québec/Montréal dans le JSON complet (l'aveuglement type stateindustrial est exclu). L'unique sync en échec (17/09 20:51) est une NameResolutionError DNS transitoire sur apply.workable.com, non reproduite. Même profil que earthrated f7b1c35, canadasmotorcycle 175b215, jsheldllc bdc5d09, psacunion 4d8080b : tenant à volume QC nul/faible compté non-succès par la supervision. Correction au passage de l'artefact du générateur vague C : url vide dans data/sources.json → https://altomtransport.com (vérifié 200, titre « Altom Transport | Petroleum and Chemical Transportation » ; la fiche affichait « Site : [Altom Transport]() »). Le nom d'employeur « Altom Transport » est correct. Docstring du connecteur mise à jour (52 offres, re-vérif 2026-09-18). Sync isolé rejoué : found=0 en 0,2 s, ok=1 — 0 est le volume légitime tant qu'Altom ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 6 days ago · 1 file +1 −1
  7. Thu, Sep 17, 2026 5

    1. [ka6] fix connecteur stateindustrial: bascule CULTURE fr-CA → en-US (le tenant Dayforce ne sert plus rien en fr-CA) + correction artefacts sources.json — le statut stale combinait deux choses : (1) la dépublication NORMALE des 2 offres QC d'août (« Représentant(e) des ventes externes - Longueuil » 11661 et « Représentant(e) des ventes B2B » 11658, absentes du board dans TOUTES les cultures) qui a fait tomber found à 0 (miss_count=2 → active=0), et (2) un VRAI défaut d'aveuglement du connecteur : le search Dayforce du tenant stateindustrial en cultureCode fr-CA renvoie désormais maxCount=0 (vérifié live, 200 JSON valide) alors que le même search en en-US renvoie 29 offres, dont une offre QC RÉELLE au titre déjà francophone (« Représentant(e) des ventes externes (français/anglais) » 11795, Québec City QC, parue le 2026-09-05, détail API OK avec PayType Salary et fourchette 45-65 k) que le connecteur ne voyait pas. Le fr-CA n'est pas cassé globalement chez Dayforce (lavieenrose fr-CA = 150 offres) : c'est ce tenant qui a désactivé/vidé sa culture fr-CA. Correction minimale dans stateindustrial.py : CULTURE='en-US' (le filtre Québec reste côté client via _is_qc), plus correction des artefacts vague C dans sources.json : url vide → https://www.stateindustrial.com (vérifié 200, titre « Home - State Industrial Products ») et name/EMPLOYER « Stateindustrial » (slug collé) → « State Industrial Products », avec UPDATE du champ employer des 2 offres inactives en base. Sync isolé rejoué : found=1, added=1 en 6,9 s — l'offre 11795 est en base, active, ville Québec, région Capitale-Nationale, volume 1 ≈ médiane 0.5. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 7 days ago · 1 file +2 −2
    2. [ka6] fix connecteur earthrated: faux positif de supervision (dépublication de l'unique offre QC Earth Rated) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient du retrait NORMAL de la dernière offre QC du tenant Greenhouse earthrated (« Social Media Video Creator & Editor/Créateur(trice) de contenu vidéo » 4327936009, Montréal, parue le 2026-07-22) : found=1 stable pendant des semaines jusqu'au sync de 12:21 (17/09), puis found=0 à 14:37 et 16:24, offre à miss_count=2 → active=0 (removed=1). Le connecteur est INTACT et vérifié live : l'API boards-api.greenhouse.io/v1/boards/earthrated/jobs répond 200 avec jobs=[] (0 offre sur TOUT le board, tous lieux confondus — le tenant n'a plus aucun poste ouvert), et le détail API de l'offre retirée renvoie 404 « Job not found » (page publique en 302 — dépublication confirmée à la source). Tous les syncs sont ok=1 dans sync_log — même profil que canadasmotorcycle 175b215, jsheldllc bdc5d09, psacunion 4d8080b, gilead 0760e1f, samsara, delos_data, solmentalhealth, autotradercanada, hera et ogilvycanada : tenant à faible volume QC dont la dépublication fait tomber le volume à 0, compté comme non-succès par la supervision (médiane 0.5). Correction au passage de l'artefact du générateur vague C : url vide dans data/sources.json → https://www.earthrated.com (site officiel vérifié vivant, 200, titre « Earth Rated | Making life with dogs simpler and better. » ; la fiche affichait « Site : [Earth Rated]() »). Le nom d'employeur « Earth Rated » est correct (pas d'artefact titre-de-poste). Sync isolé rejoué : found=0 en 0,1 s, ok — 0 est le volume légitime tant que le tenant n'a pas de poste ouvert ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      Simon-Pierre Boucher committed 7 days ago · 1 file +1 −1
    3. [ka6] fix connecteur canadasmotorcycle: faux positif de supervision (dépublication de l'unique offre QC FortNine) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient du retrait NORMAL de la dernière offre QC du tenant JazzHR canadasmotorcycle.applytojob.com (« Warehouse Associate - Picking / Commis d'entrepôt » woW2CH6Y9y, Montréal, parue le 2026-09-01) : found=1 stable pendant des semaines jusqu'au sync de 12:24 (17/09), puis found=0 à 16:01 et 17:09, offre à miss_count=2 → active=0 (removed=1). Le connecteur est INTACT et vérifié live : le board /apply/ répond 200 et affiche explicitement « There are no open positions at this time. » (zéro lien /apply/<id>), et la page détail de l'offre retirée renvoie HTTP 410 Gone (réponse JazzHR d'une offre dépubliée — dépublication confirmée à la source). Tous les syncs sont ok=1 dans sync_log — même profil que jsheldllc bdc5d09, psacunion 4d8080b, gilead 0760e1f, samsara, delos_data, solmentalhealth, autotradercanada, hera et ogilvycanada : tenant à faible volume QC dont la dépublication fait tomber le volume à 0, compté comme non-succès par la supervision (médiane 0.5). Correction au passage de l'artefact du générateur : url vide dans data/sources.json → https://fortnine.ca (site officiel vérifié vivant — 403 anti-bot en curl direct mais 200 via Scrapfly, titre « Canada's Motorcycle Powersport Online Store | FortNine » ; la fiche affichait « Site : [FortNine]() »). Le nom d'employeur « FortNine » est correct (pas d'artefact titre-de-poste). Sync isolé rejoué : found=0 en 0,2 s, ok — 0 est le volume légitime tant que le tenant n'a pas de poste ouvert ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 7 days ago · 1 file +1 −1
    4. [ka6] fix connecteur jsheldllc: faux positif de supervision (dépublication des 5 offres QC Technorm) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient du retrait NORMAL des 5 offres QC du tenant SmartRecruiters JSHeldLLC (filiale Technorm : Technicien multimédia 744000138400679 Montréal, 2× Technologue en architecture codes et normes 744000137204159 Québec / 744000137204029 Montréal, 2× Architecte conseiller technique OAQ 744000137203030 Québec / 744000137201864 Montréal) : found=4 stable pendant des semaines jusqu'au sync de 08:25 (17/09), puis found=0 à 10:25 et 12:42, les 5 offres à miss_count=2 → active=0 (removed=4+1). Le connecteur est INTACT et vérifié live : l'API postings répond (200, totalFound=105 sur le board, 6 offres Canada — Burlington ON, Winnipeg MB, Halifax NS, 2× Toronto ON, Vancouver BC — AUCUNE au Québec), et le détail API des offres retirées renvoie active:false (dépublication confirmée à la source). Tous les syncs sont ok=1 dans sync_log — même profil que psacunion 4d8080b, gilead 0760e1f, samsara, delos_data, solmentalhealth, autotradercanada, hera et ogilvycanada : tenant à faible volume QC dont la dépublication fait tomber le volume à 0, compté comme non-succès par la supervision (médiane 2.0). Correction au passage de l'artefact du générateur vague C : url vide dans data/sources.json → https://www.jsheld.com (site officiel vérifié vivant — 403 anti-bot en curl direct mais 200 via Scrapfly, titre « Technical, Scientific, Financial & Strategic Consulting Expertise » ; la fiche affichait « Site : []() »). Le nom d'employeur « J.S. Held LLC » est correct (pas d'artefact titre-de-poste cette fois). Sync isolé rejoué : found=0 en 1,7 s, ok — 0 est le volume légitime tant que le tenant n'a pas de poste QC ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      Simon-Pierre Boucher committed 7 days ago · 1 file +1 −1
    5. [ka6] fix connecteur psacunion: faux positif de supervision (dépublication de l'unique offre QC) — aucun défaut du connecteur, correction de deux artefacts de génération (url vide + titre de poste utilisé comme nom d'employeur) — le statut stale vient du retrait NORMAL des offres QC du tenant Workday psacunion.wd10/psac : après « Regional Representative, Gatineau » (JR100166) et « Regional Representative, Montreal » (JR100182), la dernière offre QC « Grievance & Adjudication Officer, Montreal » (JR100033, Montréal) a disparu du board au sync de 23:50 (16/09) → found=0, miss_count 1 puis 2 → active=0. Le connecteur est INTACT et vérifié live : l'API cxs répond (200, total=8 offres sur le board — 7 à Ottawa ON, 1 à Yellowknife NT, AUCUNE au Québec), searchText=Montreal retourne total=0, et le détail cxs de JR100033 renvoie 403 (réponse Workday d'une offre dépubliée). Tous les syncs sont ok=1 dans sync_log — même profil que gilead 0760e1f, samsara 1a3fe57, delos_data 5cf2a52, solmentalhealth fe2debf, autotradercanada e3bb827, hera 4990c80 et ogilvycanada c7adc0c : tenant à faible volume QC dont la dépublication fait tomber le volume à 0, compté comme non-succès par la supervision (médiane 1.0). Correction au passage de DEUX artefacts du générateur vague C : url vide dans data/sources.json → https://syndicatafpc.ca (site officiel FR de l'AFPC, vérifié 200 ; la fiche affichait « Site : []() »), et name/EMPLOYER = « Regional Representative, Gatineau » (un TITRE DE POSTE pris pour le nom de l'employeur) → « Alliance de la Fonction publique du Canada » dans sources.json et psacunion.py, plus UPDATE du champ employer des 3 offres psacunion en base (elles ne reviendront pas via l'upsert puisque dépubliées). Sync isolé rejoué : found=0 en 0,3 s, removed=1 (JR100033 à miss_count=2 → retrait normal), ok — 0 est le volume légitime tant que le tenant n'a pas de poste QC ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      Simon-Pierre Boucher committed 7 days ago · 1 file +2 −2
  8. Wed, Sep 16, 2026 1

    1. [ka6] fix connecteur gilead: faux positif de supervision (dépublication de l'unique offre QC) — aucun défaut du connecteur, correction de deux artefacts de génération (url vide + titre de poste utilisé comme nom d'employeur) — le statut stale vient du retrait NORMAL de l'unique offre QC du tenant Workday gilead.wd1/gileadcareers (« Medical Scientist HIV, Quebec », R0052893, Québec) : found=1 stable depuis des semaines jusqu'au sync de 09:04 (16/09), puis found=0 à 11:24 et 13:37, offre à miss_count=2 → active=0. Le connecteur est INTACT et vérifié live : l'API cxs répond (200, total=485 offres sur le board), la facette « locations » Canada ne liste plus que Edmonton (7), Ontario (1) et Mississauga (3) — plus aucun poste au Québec —, la recherche searchText=Quebec retourne total=0, et le détail cxs de R0052893 renvoie 403 S22 « permission denied » (réponse Workday d'une offre dépubliée ; la page publique 200 n'est que le shell SPA). Tous les syncs sont ok=1 dans sync_log — même profil que samsara 1a3fe57, delos_data 5cf2a52, solmentalhealth fe2debf, autotradercanada e3bb827, hera 4990c80 et ogilvycanada c7adc0c : tenant à offre QC unique dont la dépublication fait tomber le volume à 0, compté comme non-succès par la supervision (médiane 0.5). Correction au passage de DEUX artefacts du générateur vague C : url vide dans data/sources.json → https://www.gilead.com (vérifié 200 ; la fiche affichait « Site : []() »), et name/EMPLOYER = « Medical Scientist HIV, Quebec » (un TITRE DE POSTE pris pour le nom de l'employeur) → « Gilead Sciences » dans sources.json et gilead.py — l'offre inactive en base sera renommée d'elle-même à toute republication (l'UPDATE de l'upsert rafraîchit employer). Sync isolé rejoué : found=0 en 40,5 s (scan client du board, pas de facette QC serveur), ok — 0 est le volume légitime tant que le tenant n'a pas de poste QC ; l'offre reviendra d'elle-même si republiée. 106 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 8 days ago · 1 file +2 −2
  9. Tue, Sep 15, 2026 3

    1. [ka6] fix connecteur ogilvycanada: faux positif de supervision (dépublication de l'unique offre QC) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient du retrait NORMAL de l'unique offre QC du board greenhouse ogilvycanada (« Superviseur(e) De Comptes », id 4699352005, Montréal) : found=1 stable depuis des semaines jusqu'au sync de 15:17 (15/09), puis found=0 à 17:33 et 19:47, offre à miss_count=2 → active=0 (removed=1). Le connecteur est INTACT et vérifié live : l'API Greenhouse répond (200, 1 offre restante « Account Executive » à Toronto, Canada, correctement exclue par is_quebec_location — vérifié → False), l'offre retirée renvoie 404 sur l'API détail et sa page publique redirige vers le board avec ?error=true. Tous les syncs sont ok=1 dans sync_log — même profil que samsara 1a3fe57, delos_data 5cf2a52, solmentalhealth fe2debf, autotradercanada e3bb827 et hera 4990c80 : tenant à offre QC unique dont la dépublication fait tomber le volume à 0, compté comme non-succès par la supervision (médiane 0.5). Correction au passage du même artefact de génération : url vide dans data/sources.json → https://www.ogilvy.com/ca (vérifié 200 ; la fiche affichait « Site : []() »). Sync isolé rejoué : found=0 en 0,1 s, ok — 0 est le volume légitime tant que le tenant n'a pas de poste QC ; l'offre reviendra d'elle-même si republiée. 105 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 8 days ago · 1 file +1 −1
    2. [ka6] fix connecteur eq3_ltd: repli « board délisté » — /json vide alors que les 12 offres restent EN LIGNE (re-vérification live des pages /p/) — le 2026-09-15 vers 12:07, le board Breezy eq3-ltd a cessé de lister ses postes (/json et /json?verbose=true = [] — vérifié direct, UA navigateur ET proxy résidentiel CA —, sitemap.xml sans aucune offre, HTML %LABEL_NO_POSITIONS%) alors que les 12 offres QC connues sont toutes encore en ligne et ouvertes aux candidatures (pages /p/ 200 avec JSON-LD JobPosting complet et bouton APPLY, aucune « Position Closed ») et que la page carrières officielle eq3.com/ca/en/aboutus/careers pointe toujours vers ce même board : delisting du portail côté tenant, PAS une dépublication (contrairement aux précédents hera 4990c80/autotradercanada e3bb827 où les offres retirées affichaient « Position Closed »/404). L'API Breezy est saine globalement (bellatrx 14, brandmomentum 34, recruiting 78…) ; aucun slug alternatif (eq3.breezy.hr existe mais vide) ni endpoint de rechange (embed/feed/rss → 302). Correctif tenant-spécifique dans eq3_ltd.py (breezy.py intact) : quand la liste est vide, re-vérification live de chaque offre active connue via sa page /p/ — JSON-LD JobPosting exigé, rejet des pages « Position Closed »/« no longer accepting » et hors Québec, champs frais depuis le JSON-LD (titre, description, ville, date), libellé salarial conservé du dernier état liste (8/12 avec salaire, préservés). Données réelles constatées à la source, jamais inventées ; limite assumée : pas de découverte de NOUVELLES offres tant que le board est délisté — dès que /json redevient non vide, le chemin normal reprend seul et les offres réellement fermées suivront miss_count → retrait. Correction au passage du même artefact sources.json que samsara/delos_data/solmentalhealth/hera : url vide → https://www.eq3.com. Test unitaire ajouté (offre vivante QC conservée avec salaire, « Position Closed » et hors-QC lâchées, repli jamais sollicité sur liste non vide, 0 requête si base vide). Syncs réels rejoués : found=12 (médiane exacte) ×2, updated=4 puis 0, aucune alerte, miss_count=0 partout. 105 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 9 days ago · 1 file +1 −1
  10. Mon, Sep 14, 2026 3

    1. [ka6] fix connecteur autotradercanada: faux positif de supervision (dépublication des 2 offres QC) — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut broken vient du retrait NORMAL des 2 seules offres QC du board greenhouse autotradercanada (« Gestionnaire de performance/Performance Manager - Montréal » id 7799193003 et « Performance Manager, Longueuil, QC » id 7820524003) : found=2 stable depuis des semaines jusqu'au sync de 12:40, puis found=0 dès 15:05, offres à miss_count=2 → active=0 à 16:18 (removed=2). Le connecteur est INTACT et vérifié live : l'API Greenhouse répond (200, 24 offres — 23 Toronto ON, 1 Remote Canada), les 2 offres retirées renvoient 404 sur l'API détail, et les libellés restants sont correctement exclus par is_quebec_location (vérifié : « Toronto, ON (Canada) » et « Remote (Canada) » → False). Tous les syncs sont ok=1 dans sync_log — même profil que samsara 1a3fe57, delos_data 5cf2a52 et solmentalhealth fe2debf : tenant à peu d'offres QC dont la dépublication fait tomber le volume à 0, compté comme non-succès par la supervision. Correction au passage du même artefact de génération : url vide dans data/sources.json → https://www.autotrader.ca (la fiche affichait « Site : []() »). Sync isolé rejoué : found=0 en 0,1 s, ok — 0 est le volume légitime tant que le tenant n'a pas de poste QC ; les offres reviendront d'elles-mêmes si republiées. 104 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 10 days ago · 1 file +1 −1
    2. [ka6] fix connecteur solmentalhealth: faux positif du filtre Québec — « Quebec St. » (nom de rue à Denver) matchait \bquebec\b — le statut stale vient de la dépublication NORMALE de l'unique offre du tenant (Psychiatric Clinician, id 4704220005, 404 live, retirée à 16:08 miss_count=2 → active=0), mais cette offre n'aurait JAMAIS dû être publiée : son lieu réel est « 3401 Quebec St. Suite 8000, Denver, CO, 80207 » (bureau de SOL Mental Health sur Quebec Street à Denver), classé ville=Québec/Capitale-Nationale et géocodé à Québec parce que _QC_MARKERS (\bquebec\b) est évalué avant le rejet _NON_QC_REGION_RE (« , CO ») dans is_quebec_location. La médiane historique 1.0 est donc elle-même un artefact : le bon volume QC de ce tenant est 0 (vérifié live : API Greenhouse 200, 65 offres, toutes aux États-Unis — NY/VA/MD/CO/DC). Correctif : nouveau _QUEBEC_STREET_RE — « quebec » suivi d'un type de voie anglophone (st/street/ave/blvd/rd/dr/ct/ln/way/pl/hwy/pkwy…) = nom de rue, neutralisé avant tout matching dans is_quebec_location ET parse_location ; le garde (?!-) préserve les abréviations de saints des libellés QC légitimes vérifiés en base (« CAN Quebec St-Hubert/St-Laurent/St-Hyacinthe/Ste-Thérèse », agropur). Tests unitaires ajoutés (4 rues US rejetées, libellés agropur et QC classiques conservés). Correction au passage du même artefact sources.json que samsara/delos_data/findevcanada/dupont : url vide → https://www.solmentalhealth.com (la fiche affichait « Site : []() »). Sync isolé rejoué post-patch : found=0 en 0,2 s, ok — 0 est le volume légitime, l'offre Denver ne reviendra plus même si republiée. 104 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      Simon-Pierre Boucher committed 10 days ago · 1 file +1 −1
  11. Sun, Sep 13, 2026 1

    1. Simon-Pierre Boucher committed 11 days ago · 1 file +1 −1
  12. Sat, Sep 12, 2026 2

  13. Fri, Sep 11, 2026 2

    1. [ka6] fix connecteur findevcanada: volume 0 légitime confirmé en direct — l'employeur a dépublié ses 2 dernières parutions QC le 2026-09-11 (Principal, Financial Institutions FR+EN du 09-03 et Principal, Business Integrity Officer FR+EN du 09-04 : /j/<code> → /oops, tenant-scoped → ?not_found=true, API détail 404) entre 11h31 et 12h41 EDT. Le tenant Workable findevcanada reste le système ACTUEL et vivant (widget v1 200 {name: FinDev Canada, jobs: []} ; API v3 de la SPA total=0 — concordance parfaite) : la migration est dans l'AUTRE sens que ce que suggère la page carrières findevcanada.ca, dont le lien « View our job openings » → edc.taleo.net/careersection/findevcanada_corporate est un VESTIGE pré-migration (instantané Wayback 2026-05-30 : seul le lien Taleo existait, les boutons Workable ont été ajoutés depuis ; la zone edc.taleo.net entière renvoie 503 Zone Maintenance Oracle, et EDC société mère publie elle-même sur apply.workable.com/export-development-canada — 57 lignes vérifiées, aucun poste FinDev). Aucune offre FinDev courante ailleurs (LinkedIn : mêmes parutions désormais fermées ; ecoworks : offre de juillet périmée, Toronto). Employeur ~150 personnes, médiane 4 (2 parutions × 2 langues) : zéro ouverture ponctuelle est normal. Le connecteur est INTACT et fonctionnel — aucune modification du code (plateforme workable et tenant corrects). Correction au passage d'un artefact de génération dans data/sources.json : url vide → https://www.findevcanada.ca (la fiche affichait « Site : []() »). Sync isolé rejoué : found=0 en 0,1 s, statut ok. 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +1 −1
    2. [ka6] fix connecteur derumarketcatering: retrait définitif de la source (précédent projevia 7b871e8) — double condamnation confirmée en direct le 2026-09-11 : (1) le compte JazzHR du tenant est désactivé de façon permanente (page 200 « Inactive Career Page / this account is no longer active », détectée explicitement par jazzhr._fetch_list depuis la mission du 2026-09-04 → RuntimeError sans retry, 60 échecs consécutifs) ; (2) l'employeur était un faux positif de génération : Deru Market + Catering est un restaurant de Kirkland, État de WASHINGTON (derumarket.com, ZipRecruiter « Kirkland, WA »), pas Kirkland QC — sa seule offre jamais ingérée (FOH Staff, Kirkland WA) était américaine et est inactive en base depuis le fix is_quebec_location f4038e4. Deux missions ka6 (2026-08-26, 2026-09-04) avaient déjà conclu site_source_mort sans retirer la source : la supervision la resynchronisait donc en boucle (statut broken). Retrait complet selon le pattern maison : suppression de jobka/connectors/derumarketcatering.py (registre auto-découvrant → 1105 connecteurs), de l'entrée data/sources.json (1107 sources, employeurs_directs 1048→1047, page Sources vérifiée sans Deru) et de la fiche docs/connecteurs/derumarketcatering.md (INDEX/ats-jazzhr seront nettoyés à la prochaine régénération gen_connector_docs). Données en base conservées (offre déjà active=0, historique sync_log intact). Aucune modification de la plateforme jazzhr : non-régression tenant cliniqued found=1 ok. run.py sync derumarketcatering → « connecteur inconnu » (comportement attendu). 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 13 days ago · 1 file +2 −12
  14. Mon, Aug 31, 2026 1

  15. Thu, Aug 27, 2026 2

  16. Tue, Aug 25, 2026 1

    1. Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
      …
      - Nouvelles classes de plateforme : jazzhr.py (liste /apply/ + JSON-LD),
        teamtailor.py (sitemap + JSON-LD), zoho_recruit.py (flux RSS public) —
        filtre QC au détail avec report si budget épuisé (doctrine taleo_tbe/adp).
      - serper_scout.py : 5 nouveaux motifs (jazzhr, teamtailor, zohorecruit,
        talentnest, njoyn avec CLID/CL/hôte) + CLID dans le dédoublonnage.
      - 60 connecteurs : 31 JazzHR (Optel 13, Playground 21, Ultium CAM,
        Altitude Aérospatiale, FortNine, XTL 21, Valnet 22…), 17 Zoho Recruit
        (Mallette Saguenay 26, DRB 22, dentago 20, Carnaval de Québec, FÉRIQUE,
        Altitude Sports, Excavations Lafontaine…), 9 Teamtailor (Norda Stelo 50,
        Workin Group 34, Humanise 13, CAM Mécanique, Synertek…), 3 Njoyn
        (IR-CUSM 37, RTL 17, Groupe Master 17).
      - njoyn.py : correctif _keep — certains habillages mettent la date dans la
        colonne pays (Groupe Master 0 -> 17) ; n'exclure que les pays reconnus.
      - sources.json : 1 108 sources, 23 familles ATS ; docs/connecteurs
        régénérées (1 133 fiches) ; rapport docs/prospection-vagueE.md
        (écartés motivés + reliquats vague F : TalentNest, ENPQ/APCHQ, CUSM).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +606 −3