SPB Git forge

spb/job-ka

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

[ka6] fix connecteur derumarketcatering: source définitivement morte (JazzHR « Inactive Career Page » re-vérifié live le 2026-09-21) déjà retirée le 2026-09-11 — le statut broken reste l'artefact transitoire de rétention de la supervision api-ka (bascule en retired après 14 j sans sync, attendue vers le 26/09) ; angle NOUVEAU vérifié : AUCUN sync fantôme (dernier sync_log = 2026-09-11 15:53, 0 enregistrement depuis, retrait étanche côté runner ; unique offre Kirkland WA active=0) — correction du seul artefact réel trouvé : docs/connecteurs/ jamais régénérée depuis le 2026-08-25, INDEX.md et ats-jazzhr.md listaient encore « Deru Market + Catering » avec lien mort vers derumarketcatering.md (supprimée le 11/09) et statut ✅ trompeur — régénération complète via scripts/gen_connector_docs.py (outil rejouable du repo, BD en lecture seule, purge des fiches orphelines) : 1132 fiches, plus aucun lien mort, seules subsistent les mentions légitimes d'historique git dans les fiches d'autres connecteurs. 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 (Sep 21, 2026) parent 2c4caea

269 changed files +5,702 −5,179

modified docs/connecteurs/4refuel.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/4refuel.md
7 7 Rôle : Fiche connecteur — 4Refuel (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,7 +55,7 @@ Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 25 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 25 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -79,15 +79,15 @@ Exemple réel : *Classe 3 Chauffeur livreur- Quart de Soirs* — Québec · Type
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 84 - **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 2/8 actives (25 %)
86 86 - **GPS** : 8/8 actives (100 %)
87 87 - **Mode** : 0/8 actives (0 %)
88 88 - **Parution** : 8/8 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 05:35 — trouvées 8, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 6
89 +- **Dernier sync** : 2026-09-21 17:44 — trouvées 8, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 217
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/INDEX.md +798 −799
@@ -5,16 +5,16 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/INDEX.md
7 7 Rôle : Index généré de la documentation des connecteurs (ATS, employeurs, portails, dépôt)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Job·Ka — Connecteurs (index)
14 14
15 −> Index généré le 2026-08-25 08:45 EDT par `scripts/gen_connector_docs.py` (rejouable). Croise `data/sources.json`, l'introspection de `jobka/connectors/*.py` et la base live `data/jobka.db`.
15 +> Index généré le 2026-09-21 18:06 EDT par `scripts/gen_connector_docs.py` (rejouable). Croise `data/sources.json`, l'introspection de `jobka/connectors/*.py` et la base live `data/jobka.db`.
16 16
17 −**1104 employeurs directs** connectés via **24 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **23531 offres actives** (21220 directes, 2311 portails ; 130 masquées comme doublons inter-sources, soit 23401 visibles). 1133 fiches.
17 +**1103 employeurs directs** connectés via **24 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **24960 offres actives** (22618 directes, 2342 portails ; 104 masquées comme doublons inter-sources, soit 24856 visibles). 1132 fiches.
18 18
19 19 Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conserve son URL originale ; la candidature se fait chez l'employeur (badge « Offre directe » sur les sources directes).
20 20
@@ -22,917 +22,893 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
22 22
23 23 | Plateforme | Employeurs | Actives | Salaire | GPS |
24 24 |---|---|---|---|---|
25 −| [`workday`](ats-workday.md) | 233 | 6106 | 47 % | 85 % |
26 −| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2862 | 17 % | 98 % |
27 −| [`dayforce`](ats-dayforce.md) | 128 | 1809 | 9 % | 100 % |
28 −| [`successfactors`](ats-successfactors.md) | 11 | 1549 | 15 % | 81 % |
29 −| [`workable`](ats-workable.md) | 71 | 1548 | 20 % | 100 % |
30 −| [`workland`](ats-workland.md) | 1 | 1269 | 34 % | 100 % |
31 −| [`njoyn`](ats-njoyn.md) | 11 | 1228 | 66 % | 84 % |
32 −| [`greenhouse`](ats-greenhouse.md) | 131 | 886 | 22 % | 99 % |
33 −| [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 867 | 8 % | 100 % |
34 −| [`lever`](ats-lever.md) | 58 | 672 | 20 % | 96 % |
35 −| [`breezy`](ats-breezy.md) | 72 | 425 | 39 % | 94 % |
36 −| [`ashby`](ats-ashby.md) | 41 | 332 | 22 % | 57 % |
37 −| [`recruitee`](ats-recruitee.md) | 30 | 275 | 18 % | 97 % |
38 −| [`bamboohr`](ats-bamboohr.md) | 37 | 258 | 12 % | 92 % |
39 −| [`taleo_tbe`](ats-taleo_tbe.md) | 7 | 208 | 29 % | 53 % |
40 −| [`jazzhr`](ats-jazzhr.md) | 31 | 181 | 22 % | 0 % |
41 −| [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 163 | 13 % | 0 % |
42 −| [`adp`](ats-adp.md) | 17 | 134 | 37 % | 21 % |
43 −| [`teamtailor`](ats-teamtailor.md) | 9 | 132 | 28 % | 0 % |
44 −| [`taleo`](ats-taleo.md) | 5 | 82 | 0 % | 99 % |
45 −| [`digitalrecruiters`](ats-digitalrecruiters.md) | 2 | 70 | 91 % | 80 % |
46 −| [`ultipro`](ats-ultipro.md) | 4 | 67 | 51 % | 91 % |
47 −| [`icims`](ats-icims.md) | 7 | 66 | 42 % | 83 % |
48 −| [`custom`](ats-custom.md) | 1 | 31 | 39 % | 87 % |
25 +| [`workday`](ats-workday.md) | 233 | 7523 | 45 % | 86 % |
26 +| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2975 | 17 % | 99 % |
27 +| [`dayforce`](ats-dayforce.md) | 128 | 1824 | 9 % | 100 % |
28 +| [`workable`](ats-workable.md) | 71 | 1764 | 19 % | 100 % |
29 +| [`successfactors`](ats-successfactors.md) | 11 | 1451 | 15 % | 99 % |
30 +| [`workland`](ats-workland.md) | 1 | 1226 | 35 % | 100 % |
31 +| [`njoyn`](ats-njoyn.md) | 11 | 1119 | 76 % | 85 % |
32 +| [`greenhouse`](ats-greenhouse.md) | 131 | 843 | 20 % | 100 % |
33 +| [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 811 | 7 % | 100 % |
34 +| [`lever`](ats-lever.md) | 58 | 630 | 19 % | 96 % |
35 +| [`breezy`](ats-breezy.md) | 72 | 393 | 35 % | 94 % |
36 +| [`ashby`](ats-ashby.md) | 41 | 321 | 41 % | 60 % |
37 +| [`recruitee`](ats-recruitee.md) | 30 | 287 | 18 % | 97 % |
38 +| [`bamboohr`](ats-bamboohr.md) | 37 | 269 | 10 % | 100 % |
39 +| [`taleo_tbe`](ats-taleo_tbe.md) | 7 | 209 | 27 % | 56 % |
40 +| [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 183 | 14 % | 89 % |
41 +| [`jazzhr`](ats-jazzhr.md) | 30 | 149 | 15 % | 95 % |
42 +| [`teamtailor`](ats-teamtailor.md) | 9 | 140 | 29 % | 95 % |
43 +| [`adp`](ats-adp.md) | 17 | 139 | 40 % | 95 % |
44 +| [`taleo`](ats-taleo.md) | 5 | 122 | 0 % | 100 % |
45 +| [`digitalrecruiters`](ats-digitalrecruiters.md) | 2 | 76 | 95 % | 51 % |
46 +| [`ultipro`](ats-ultipro.md) | 4 | 73 | 56 % | 100 % |
47 +| [`icims`](ats-icims.md) | 7 | 58 | 40 % | 78 % |
48 +| [`custom`](ats-custom.md) | 1 | 33 | 33 % | 94 % |
49 49
50 50 ## Portails agrégateurs & dépôt
51 51
52 52 | Source | Actives | Salaire | Dernier sync |
53 53 |---|---|---|---|
54 −| [Espresso-Jobs](espresso_jobs.md) | 327 | 24 % | 2026-08-25 08:23 |
55 −| [Guichet-Emplois (Canada)](guichet_emplois.md) | 519 | 99 % | 2026-08-25 08:38 |
56 −| [Jobillico](jobillico.md) | 1465 | 32 % | 2026-08-25 07:34 |
54 +| [Espresso-Jobs](espresso_jobs.md) | 307 | 14 % | 2026-09-21 16:56 |
55 +| [Guichet-Emplois (Canada)](guichet_emplois.md) | 610 | 99 % | 2026-09-21 17:08 |
56 +| [Jobillico](jobillico.md) | 1425 | 36 % | 2026-09-21 17:19 |
57 57 | [Dépôt direct employeurs](depot-direct.md) | 0 (0 en modération) | — | au fil de l'eau |
58 58
59 59 ## Employeurs directs (par volume d'offres actives)
60 60
61 61 | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK |
62 62 |---|---|---|---|---|---|
63 −| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1269 | 34 % | 100 % | ✅ |
64 −| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1032 | 62 % | 63 % | ✅ |
65 −| [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 1012 | 92 % | 91 % | ✅ |
66 −| [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 809 | 0 % | 100 % | ✅ |
67 −| [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 752 | 97 % | 98 % | ✅ |
68 −| [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 611 | 33 % | 100 % | ✅ |
69 −| [TEHORA](tehora.md) | [`workable`](ats-workable.md) | 346 | 0 % | 100 % | ✅ |
70 −| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 307 | 0 % | 95 % | ✅ |
71 −| [Go RH](gorh.md) | [`lever`](ats-lever.md) | 271 | 17 % | 98 % | ✅ |
72 −| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 254 | 1 % | 92 % | ✅ |
73 −| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 244 | 17 % | 100 % | ✅ |
74 −| [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 236 | 0 % | 100 % | ✅ |
75 −| [Rechercher des](gianttiger.md) | [`workday`](ats-workday.md) | 229 | 0 % | 100 % | ✅ |
76 −| [Alstom](alstom.md) | [`successfactors`](ats-successfactors.md) | 227 | 6 % | 0 % | ✅ |
77 −| [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 196 | 72 % | 100 % | ✅ |
78 −| [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 148 | 1 % | 100 % | ✅ |
79 −| [Ubisoft](ubisoft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 148 | 0 % | 100 % | ✅ |
80 −| [CISSS des Laurentides](cisss_laurentides.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 141 | 11 % | 100 % | ✅ |
81 −| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 140 | 0 % | 100 % | ✅ |
82 −| [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 140 | 22 % | 100 % | ✅ |
83 −| [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 136 | 4 % | 100 % | ✅ |
84 −| [Sodexo Canada](sodexocanadaltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 133 | 82 % | 100 % | ✅ |
85 −| [Consignaction (AQRCB)](consignaction.md) | [`workday`](ats-workday.md) | 132 | 89 % | 100 % | ✅ |
86 −| [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 131 | 5 % | 100 % | ✅ |
87 −| [Vetstrategy](vetstrategy.md) | [`dayforce`](ats-dayforce.md) | 120 | 1 % | 100 % | ✅ |
88 −| [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 117 | 0 % | 98 % | ✅ |
89 −| [Groupe Helios](groupehelios.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 116 | 2 % | 100 % | ✅ |
90 −| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 113 | 8 % | 100 % | ✅ |
91 −| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 111 | 85 % | 84 % | ✅ |
92 −| [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 105 | 31 % | 100 % | ✅ |
93 −| [Deloitte Canada](deloitte.md) | [`successfactors`](ats-successfactors.md) | 105 | 96 % | 100 % | ✅ |
94 −| [Domtar](domtar.md) | [`successfactors`](ats-successfactors.md) | 104 | 0 % | 99 % | ✅ |
95 −| [Le Groupe Maurice](groupemaurice.md) | [`dayforce`](ats-dayforce.md) | 101 | 0 % | 100 % | ✅ |
96 −| [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 100 | 55 % | 7 % | ✅ |
97 −| [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 99 | 77 % | 100 % | ✅ |
98 −| [Dentalcorp](dentalcorp.md) | [`workday`](ats-workday.md) | 95 | 14 % | 99 % | ✅ |
99 −| [Dexterra](dexterra.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 83 | 1 % | 100 % | ✅ |
100 −| [Gflenv](gflenv.md) | [`workday`](ats-workday.md) | 82 | 4 % | 93 % | ✅ |
101 −| [Linen Chest](linenchest.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 82 | 9 % | 100 % | ✅ |
102 −| [Slihrms](slihrms.md) | [`workday`](ats-workday.md) | 81 | 1 % | 93 % | ✅ |
63 +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1226 | 35 % | 100 % | ✅ |
64 +| [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 994 | 96 % | 90 % | ✅ |
65 +| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 987 | 64 % | 65 % | ✅ |
66 +| [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 772 | 98 % | 98 % | ✅ |
67 +| [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 755 | 28 % | 100 % | ✅ |
68 +| [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 741 | 0 % | 100 % | ✅ |
69 +| [TEHORA](tehora.md) | [`workable`](ats-workable.md) | 390 | 0 % | 100 % | ✅ |
70 +| [Globalhr](globalhr.md) | [`workday`](ats-workday.md) | 351 | 0 % | 83 % | ✅ |
71 +| [Go RH](gorh.md) | [`lever`](ats-lever.md) | 264 | 15 % | 98 % | ✅ |
72 +| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 263 | 2 % | 94 % | ✅ |
73 +| [Slihrms](slihrms.md) | [`workday`](ats-workday.md) | 258 | 9 % | 91 % | ✅ |
74 +| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 240 | 21 % | 100 % | ✅ |
75 +| [Rechercher des](gianttiger.md) | [`workday`](ats-workday.md) | 240 | 1 % | 100 % | ✅ |
76 +| [Alstom](alstom.md) | [`successfactors`](ats-successfactors.md) | 237 | 7 % | 100 % | ✅ |
77 +| [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 232 | 3 % | 100 % | ✅ |
78 +| [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 213 | 72 % | 100 % | ✅ |
79 +| [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 205 | 96 % | 92 % | ✅ |
80 +| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 185 | 0 % | 96 % | ✅ |
81 +| [Consignaction (AQRCB)](consignaction.md) | [`workday`](ats-workday.md) | 182 | 86 % | 100 % | ✅ |
82 +| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 165 | 5 % | 99 % | ✅ |
83 +| [Sodexo Canada](sodexocanadaltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 160 | 84 % | 99 % | ✅ |
84 +| [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 159 | 3 % | 100 % | ✅ |
85 +| [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 157 | 3 % | 100 % | ✅ |
86 +| [Ubisoft](ubisoft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 155 | 0 % | 100 % | ✅ |
87 +| [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 152 | 23 % | 100 % | ✅ |
88 +| [Intact Corporation financière](intactfc.md) | [`workday`](ats-workday.md) | 143 | 0 % | 76 % | ✅ |
89 +| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 142 | 0 % | 100 % | ✅ |
90 +| [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | [`workday`](ats-workday.md) | 142 | 97 % | 100 % | ✅ |
91 +| [Le Groupe Maurice](groupemaurice.md) | [`dayforce`](ats-dayforce.md) | 135 | 0 % | 100 % | ✅ |
92 +| [CISSS des Laurentides](cisss_laurentides.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 134 | 6 % | 100 % | ✅ |
93 +| [Vetstrategy](vetstrategy.md) | [`dayforce`](ats-dayforce.md) | 130 | 2 % | 100 % | ✅ |
94 +| [Groupe Helios](groupehelios.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 117 | 2 % | 100 % | ✅ |
95 +| [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 116 | 0 % | 99 % | ✅ |
96 +| [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 108 | 74 % | 100 % | ✅ |
97 +| [Deloitte Canada](deloitte.md) | [`successfactors`](ats-successfactors.md) | 108 | 98 % | 100 % | ✅ |
98 +| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 101 | 3 % | 100 % | ✅ |
99 +| [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 97 | 54 % | 9 % | ✅ |
100 +| [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 96 | 6 % | 100 % | ✅ |
101 +| [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 95 | 29 % | 100 % | ✅ |
102 +| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 93 | 86 % | 83 % | ✅ |
103 +| [Genetec](genetec_inc.md) | [`workable`](ats-workable.md) | 93 | 0 % | 100 % | ✅ |
104 +| [Dentalcorp](dentalcorp.md) | [`workday`](ats-workday.md) | 92 | 13 % | 100 % | ✅ |
105 +| [Dexterra](dexterra.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 91 | 1 % | 100 % | ✅ |
106 +| [iA Groupe financier](ia_groupe.md) | [`workday`](ats-workday.md) | 90 | 100 % | 96 % | ✅ |
107 +| [Linen Chest](linenchest.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 87 | 8 % | 100 % | ✅ |
108 +| [UAP Inc.](uapinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 87 | 45 % | 97 % | ✅ |
109 +| [HIKINEX](recruiting.md) | [`breezy`](ats-breezy.md) | 85 | 0 % | 100 % | ✅ |
110 +| [Vidéotron](videotron.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 82 | 4 % | 100 % | ✅ |
111 +| [Promutuel Assurance](promutuel.md) | [`workday`](ats-workday.md) | 81 | 2 % | 100 % | ✅ |
103 112 | [Bulkbarn](bulkbarn.md) | [`dayforce`](ats-dayforce.md) | 80 | 0 % | 100 % | ✅ |
104 −| [Globalhr](globalhr.md) | [`workday`](ats-workday.md) | 80 | 0 % | 88 % | ✅ |
105 −| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 79 | 1 % | 100 % | ✅ |
106 −| [Genetec](genetec_inc.md) | [`workable`](ats-workable.md) | 79 | 0 % | 100 % | ✅ |
107 −| [HIKINEX](recruiting.md) | [`breezy`](ats-breezy.md) | 77 | 0 % | 100 % | ✅ |
108 −| [Vidéotron](videotron.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 76 | 17 % | 100 % | ✅ |
109 −| [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 75 | 96 % | 100 % | ✅ |
110 −| [Gray Collection (Groupe Antonopoulos)](graycollection.md) | [`dayforce`](ats-dayforce.md) | 74 | 0 % | 100 % | ✅ |
111 −| [MaintainX](maintainx.md) | [`ashby`](ats-ashby.md) | 72 | 6 % | 86 % | ✅ |
112 −| [Lightspeed Commerce](lightspeedhq.md) | [`ashby`](ats-ashby.md) | 68 | 7 % | 99 % | ✅ |
113 −| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 67 | 94 % | 100 % | ✅ |
114 −| [Autodesk](autodesk.md) | [`workday`](ats-workday.md) | 67 | 90 % | 46 % | ✅ |
115 −| [Hydro-Québec](hydroquebec.md) | [`successfactors`](ats-successfactors.md) | 66 | 58 % | 82 % | ✅ |
116 −| [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 64 | 44 % | 100 % | ✅ |
117 −| [Renaud-Bray](renaud_bray.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 64 | 2 % | 100 % | ✅ |
118 −| [Lifeworks](lifeworks.md) | [`workday`](ats-workday.md) | 62 | 21 % | 87 % | ✅ |
119 −| [UAP Inc.](uapinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 62 | 42 % | 98 % | ✅ |
120 −| [ANCIA Personnel](anciapersonnelinc.md) | [`recruitee`](ats-recruitee.md) | 60 | 10 % | 100 % | ✅ |
121 −| [CHU de Québec — Université Laval](chu_quebec.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 59 | 7 % | 100 % | ✅ |
122 −| [CAE](cae.md) | [`workday`](ats-workday.md) | 58 | 7 % | 93 % | ✅ |
123 −| [Fairstone](fairstone.md) | [`workday`](ats-workday.md) | 57 | 21 % | 91 % | ✅ |
124 −| [Groupe Canam](groupecanam.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 57 | 63 % | 98 % | ✅ |
125 −| [Squarepoint Capital](squarepointcapital.md) | [`greenhouse`](ats-greenhouse.md) | 55 | 42 % | 100 % | ✅ |
126 −| [Kruger](kruger.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 54 | 9 % | 100 % | ✅ |
127 −| [Lesymcaquebec](lesymcaquebec.md) | [`dayforce`](ats-dayforce.md) | 52 | 13 % | 100 % | ✅ |
128 −| [Manuvie](manulife.md) | [`workday`](ats-workday.md) | 51 | 90 % | 71 % | ✅ |
129 −| [AccorHotel](accorhotel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 50 | 74 % | 100 % | ✅ |
130 −| [BPA (Experts-conseils)](bpa.md) | [`dayforce`](ats-dayforce.md) | 50 | 0 % | 100 % | ✅ |
131 −| [Kiewit (Ganotec)](kiewit_ganotec.md) | [`successfactors`](ats-successfactors.md) | 50 | 0 % | 0 % | ✅ |
132 −| [Norda Stelo](nordastelo.md) | [`teamtailor`](ats-teamtailor.md) | 50 | 0 % | 0 % | ✅ |
133 −| [Gdv](gdv.md) | [`dayforce`](ats-dayforce.md) | 49 | 0 % | 100 % | ✅ |
134 −| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 48 | 0 % | 100 % | ✅ |
135 −| [Beneva](beneva.md) | [`workday`](ats-workday.md) | 47 | 4 % | 100 % | ✅ |
136 −| [JD Sports Canada](jdsports.md) | [`dayforce`](ats-dayforce.md) | 47 | 0 % | 100 % | ✅ |
113 +| [Renaud-Bray](renaud_bray.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 79 | 1 % | 100 % | ✅ |
114 +| [CAE](cae.md) | [`workday`](ats-workday.md) | 78 | 22 % | 97 % | ✅ |
115 +| [Intelcom (Dragonfly)](intelcomgroup.md) | [`workday`](ats-workday.md) | 77 | 0 % | 99 % | ✅ |
116 +| [Agnico Eagle Mines](agnico_eagle.md) | [`taleo`](ats-taleo.md) | 70 | 0 % | 100 % | ✅ |
117 +| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 69 | 0 % | 97 % | ✅ |
118 +| [Lightspeed Commerce](lightspeedhq.md) | [`ashby`](ats-ashby.md) | 68 | 6 % | 100 % | ✅ |
119 +| [Gflenv](gflenv.md) | [`workday`](ats-workday.md) | 67 | 3 % | 91 % | ✅ |
120 +| [TELUS](telus.md) | [`successfactors`](ats-successfactors.md) | 66 | 0 % | 100 % | ✅ |
121 +| [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 65 | 42 % | 100 % | ✅ |
122 +| [Gevernova](gevernova.md) | [`workday`](ats-workday.md) | 65 | 34 % | 94 % | ✅ |
123 +| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 64 | 94 % | 97 % | ✅ |
124 +| [Lifeworks](lifeworks.md) | [`workday`](ats-workday.md) | 63 | 25 % | 84 % | ✅ |
125 +| [Gray Collection (Groupe Antonopoulos)](graycollection.md) | [`dayforce`](ats-dayforce.md) | 61 | 0 % | 100 % | ✅ |
126 +| [January 2027](pwc.md) | [`workday`](ats-workday.md) | 61 | 0 % | 100 % | ✅ |
127 +| [Santé Québec](sante_quebec.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 61 | 97 % | 39 % | ✅ |
128 +| [MaintainX](maintainx.md) | [`ashby`](ats-ashby.md) | 59 | 61 % | 80 % | ✅ |
129 +| [Norda Stelo](nordastelo.md) | [`teamtailor`](ats-teamtailor.md) | 58 | 0 % | 95 % | ✅ |
130 +| [CHU de Québec — Université Laval](chu_quebec.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 57 | 5 % | 100 % | ✅ |
131 +| [Groupe Canam](groupecanam.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 57 | 74 % | 98 % | ✅ |
132 +| [Squarepoint Capital](squarepointcapital.md) | [`greenhouse`](ats-greenhouse.md) | 57 | 40 % | 100 % | ✅ |
133 +| [ANCIA Personnel](anciapersonnelinc.md) | [`recruitee`](ats-recruitee.md) | 56 | 7 % | 100 % | ✅ |
134 +| [Beneva](beneva.md) | [`workday`](ats-workday.md) | 56 | 4 % | 100 % | ✅ |
135 +| [Autodesk](autodesk.md) | [`workday`](ats-workday.md) | 54 | 83 % | 41 % | ✅ |
136 +| [Fairstone](fairstone.md) | [`workday`](ats-workday.md) | 54 | 44 % | 91 % | ✅ |
137 +| [Gdv](gdv.md) | [`dayforce`](ats-dayforce.md) | 54 | 0 % | 100 % | ✅ |
138 +| [Manuvie](manulife.md) | [`workday`](ats-workday.md) | 54 | 83 % | 65 % | ✅ |
139 +| [Hydro-Québec](hydroquebec.md) | [`successfactors`](ats-successfactors.md) | 53 | 34 % | 77 % | ✅ |
140 +| [Kruger](kruger.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 53 | 9 % | 100 % | ✅ |
141 +| [Automobileendirect](automobileendirect.md) | [`dayforce`](ats-dayforce.md) | 52 | 0 % | 100 % | ✅ |
142 +| [Kiewit (Ganotec)](kiewit_ganotec.md) | [`successfactors`](ats-successfactors.md) | 52 | 0 % | 100 % | ✅ |
143 +| [Laporte Experts Conseils](laportefr.md) | [`greenhouse`](ats-greenhouse.md) | 52 | 0 % | 100 % | ✅ |
144 +| [Bdo](bdo.md) | [`workday`](ats-workday.md) | 50 | 10 % | 76 % | ✅ |
145 +| [Saputo](saputo.md) | [`workday`](ats-workday.md) | 47 | 87 % | 100 % | ✅ |
146 +| [AccorHotel](accorhotel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 46 | 59 % | 100 % | ✅ |
147 +| [Advanceauto](advanceauto.md) | [`workday`](ats-workday.md) | 46 | 0 % | 50 % | ✅ |
137 148 | [ApexFocusGroup](afg.md) | [`workable`](ats-workable.md) | 46 | 0 % | 100 % | ✅ |
138 −| [Cogeco](cogeco.md) | [`workday`](ats-workday.md) | 45 | 16 % | 62 % | ✅ |
139 −| [Eurofins EnvironeX](eurofinsenvironex.md) | [`recruitee`](ats-recruitee.md) | 45 | 0 % | 100 % | ✅ |
140 −| [January 2027](pwc.md) | [`workday`](ats-workday.md) | 45 | 2 % | 100 % | ✅ |
141 −| [Laura Canada](lauracanada.md) | [`dayforce`](ats-dayforce.md) | 45 | 0 % | 100 % | ✅ |
142 −| [TELUS](telus.md) | [`successfactors`](ats-successfactors.md) | 45 | 0 % | 98 % | ✅ |
143 −| [McKesson Canada](mckesson.md) | [`workday`](ats-workday.md) | 44 | 80 % | 89 % | ✅ |
144 −| [Santé Québec](sante_quebec.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 44 | 98 % | 68 % | ✅ |
145 −| [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 44 | 59 % | 100 % | ✅ |
146 −| [Investissements PSP](investpsp.md) | [`workday`](ats-workday.md) | 43 | 5 % | 100 % | ✅ |
147 −| [La Maison Simons](simons.md) | [`workday`](ats-workday.md) | 43 | 0 % | 93 % | ✅ |
148 −| [Myhrabc](myhrabc.md) | [`workday`](ats-workday.md) | 43 | 56 % | 56 % | ✅ |
149 −| [Cohere](cohere.md) | [`ashby`](ats-ashby.md) | 42 | 17 % | 36 % | ✅ |
150 −| [Levio](levio.md) | [`greenhouse`](ats-greenhouse.md) | 42 | 0 % | 100 % | ✅ |
151 −| [Uhaul](uhaul.md) | [`workday`](ats-workday.md) | 42 | 0 % | 100 % | ✅ |
152 −| [SOGECLAIR](sogeclair.md) | [`workable`](ats-workable.md) | 41 | 2 % | 100 % | ✅ |
149 +| [Alterra](alterra.md) | [`workday`](ats-workday.md) | 45 | 62 % | 100 % | ✅ |
150 +| [La Maison Simons](simons.md) | [`workday`](ats-workday.md) | 45 | 0 % | 91 % | ✅ |
151 +| [Levio](levio.md) | [`greenhouse`](ats-greenhouse.md) | 45 | 0 % | 100 % | ✅ |
152 +| [Unoria](unoria.md) | [`dayforce`](ats-dayforce.md) | 45 | 0 % | 100 % | ✅ |
153 +| [Investissements PSP](investpsp.md) | [`workday`](ats-workday.md) | 44 | 2 % | 100 % | ✅ |
154 +| [SOGECLAIR](sogeclair.md) | [`workable`](ats-workable.md) | 44 | 2 % | 100 % | ✅ |
155 +| [Camions Excellence Peterbilt](excellencepeterbilt.md) | [`dayforce`](ats-dayforce.md) | 43 | 16 % | 100 % | ✅ |
156 +| [Cogeco](cogeco.md) | [`workday`](ats-workday.md) | 43 | 14 % | 49 % | ✅ |
157 +| [Eurofins EnvironeX](eurofinsenvironex.md) | [`recruitee`](ats-recruitee.md) | 43 | 0 % | 100 % | ✅ |
158 +| [Laura Canada](lauracanada.md) | [`dayforce`](ats-dayforce.md) | 43 | 0 % | 100 % | ✅ |
159 +| [McKesson Canada](mckesson.md) | [`workday`](ats-workday.md) | 43 | 79 % | 88 % | ✅ |
160 +| [BPA (Experts-conseils)](bpa.md) | [`dayforce`](ats-dayforce.md) | 42 | 0 % | 100 % | ✅ |
161 +| [JD Sports Canada](jdsports.md) | [`dayforce`](ats-dayforce.md) | 42 | 0 % | 100 % | ✅ |
162 +| [Groupe CH (Canadiens de Montréal, Centre Bell)](groupech.md) | [`dayforce`](ats-dayforce.md) | 41 | 2 % | 100 % | ✅ |
163 +| [Cohere](cohere.md) | [`ashby`](ats-ashby.md) | 40 | 92 % | 32 % | ✅ |
164 +| [Lesymcaquebec](lesymcaquebec.md) | [`dayforce`](ats-dayforce.md) | 40 | 28 % | 100 % | ✅ |
153 165 | [Lgs](lgs.md) | [`dayforce`](ats-dayforce.md) | 40 | 0 % | 100 % | ✅ |
154 166 | [Transat A.T.](transatat1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 40 | 5 % | 100 % | ✅ |
155 −| [Unoria](unoria.md) | [`dayforce`](ats-dayforce.md) | 40 | 0 % | 100 % | ✅ |
156 −| [Advanceauto](advanceauto.md) | [`workday`](ats-workday.md) | 39 | 0 % | 33 % | ✅ |
167 +| [Valsoft](valsoft_corp.md) | [`workable`](ats-workable.md) | 40 | 12 % | 100 % | ✅ |
157 168 | [Info-Ways](info_ways.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 39 | 0 % | 100 % | ✅ |
158 −| [Kenworthmaska](kenworthmaska.md) | [`dayforce`](ats-dayforce.md) | 39 | 3 % | 100 % | ✅ |
159 −| [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 38 | 0 % | 100 % | ✅ |
160 −| [Camions Excellence Peterbilt](excellencepeterbilt.md) | [`dayforce`](ats-dayforce.md) | 38 | 3 % | 100 % | ✅ |
161 169 | [system canada technologies](systemcanadatechnologies.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 38 | 0 % | 100 % | ✅ |
162 −| [Institut de recherche du CUSM](cusm_ir.md) | [`njoyn`](ats-njoyn.md) | 37 | 97 % | 0 % | ✅ |
170 +| [Wabtec](wabtec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 38 | 18 % | 100 % | ✅ |
171 +| [Firststudent](firststudent.md) | [`workday`](ats-workday.md) | 37 | 43 % | 97 % | ✅ |
163 172 | [KABS](kabs.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 37 | 0 % | 100 % | ✅ |
164 −| [Automobileendirect](automobileendirect.md) | [`dayforce`](ats-dayforce.md) | 36 | 0 % | 100 % | ✅ |
165 −| [Laporte Experts Conseils](laportefr.md) | [`greenhouse`](ats-greenhouse.md) | 36 | 0 % | 100 % | ✅ |
166 −| [Promutuel Assurance](promutuel.md) | [`workday`](ats-workday.md) | 36 | 3 % | 100 % | ✅ |
167 −| [Valsoft](valsoft_corp.md) | [`workable`](ats-workable.md) | 36 | 11 % | 100 % | ✅ |
168 −| [Montreal Export Package Handler (18:00-23:00)](hcmportal.md) | [`workday`](ats-workday.md) | 35 | 94 % | 94 % | ✅ |
173 +| [Myhrabc](myhrabc.md) | [`workday`](ats-workday.md) | 37 | 49 % | 51 % | ✅ |
174 +| [AppDirect](appdirect.md) | [`greenhouse`](ats-greenhouse.md) | 36 | 50 % | 100 % | ✅ |
175 +| [Kenworthmaska](kenworthmaska.md) | [`dayforce`](ats-dayforce.md) | 36 | 3 % | 100 % | ✅ |
176 +| [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 36 | 44 % | 100 % | ✅ |
177 +| [Workin Group](workinquebec.md) | [`teamtailor`](ats-teamtailor.md) | 36 | 56 % | 100 % | ✅ |
178 +| [Best Buy Canada](bestbuycanada.md) | [`workday`](ats-workday.md) | 35 | 0 % | 49 % | ✅ |
179 +| [EXFO](exfo.md) | [`workday`](ats-workday.md) | 35 | 0 % | 100 % | ✅ |
180 +| [exo (transport métropolitain)](exo.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 35 | 0 % | 94 % | ✅ |
181 +| [Sopra Steria](soprasteria1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 35 | 0 % | 100 % | ✅ |
182 +| [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 34 | 0 % | 100 % | ✅ |
183 +| [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 34 | 0 % | 100 % | ✅ |
184 +| [Exportation et développement Canada (EDC)](export_development_canada.md) | [`workable`](ats-workable.md) | 34 | 97 % | 100 % | ✅ |
169 185 | [Ms](ms.md) | [`workday`](ats-workday.md) | 34 | 0 % | 100 % | ✅ |
170 −| [NBCUniversal](nbcuniversal3.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 34 | 0 % | 100 % | ✅ |
171 −| [Workin Group](workinquebec.md) | [`teamtailor`](ats-teamtailor.md) | 34 | 53 % | 0 % | ✅ |
172 −| [Brand Momentum](brandmomentum.md) | [`breezy`](ats-breezy.md) | 33 | 73 % | 100 % | ✅ |
173 −| [Firststudent](firststudent.md) | [`workday`](ats-workday.md) | 33 | 36 % | 100 % | ✅ |
174 −| [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | [`workday`](ats-workday.md) | 32 | 100 % | 100 % | ✅ |
175 −| [Groupe CH (Canadiens de Montréal, Centre Bell)](groupech.md) | [`dayforce`](ats-dayforce.md) | 31 | 0 % | 100 % | ✅ |
176 −| [Industries Lassonde](lassonde.md) | [`custom`](ats-custom.md) | 31 | 39 % | 87 % | ✅ |
177 −| [Intelcom (Dragonfly)](intelcomgroup.md) | [`workday`](ats-workday.md) | 31 | 0 % | 100 % | ✅ |
178 −| [QSL](qsl.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 31 | 23 % | 100 % | ✅ |
179 −| [Service alimentaire Gordon](gfs.md) | [`workday`](ats-workday.md) | 31 | 77 % | 100 % | ✅ |
180 −| [Side (PTW)](sideinc.md) | [`workable`](ats-workable.md) | 31 | 0 % | 100 % | ✅ |
181 −| [Abinbev](abinbev.md) | [`workday`](ats-workday.md) | 30 | 100 % | 100 % | ✅ |
182 −| [CHUM](chum.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 30 | 0 % | 100 % | ✅ |
183 −| [Gevernova](gevernova.md) | [`workday`](ats-workday.md) | 30 | 30 % | 100 % | ✅ |
184 −| [H&M](hmgroup.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 29 | 0 % | 100 % | ✅ |
185 −| [LGI Healthcare Solutions Santé Inc.](lgihealthcaresolutionssanteinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 29 | 0 % | 100 % | ✅ |
186 −| [Wabtec](wabtec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 29 | 24 % | 21 % | ✅ |
187 −| [Altasciences](altasciences.md) | [`workday`](ats-workday.md) | 28 | 0 % | 100 % | ✅ |
188 −| [Alterra](alterra.md) | [`workday`](ats-workday.md) | 28 | 54 % | 100 % | ✅ |
189 −| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | [`workday`](ats-workday.md) | 28 | 0 % | 93 % | ✅ |
190 −| [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 28 | 0 % | 100 % | ✅ |
191 −| [Directive](directive.md) | [`ashby`](ats-ashby.md) | 28 | 18 % | 0 % | ✅ |
192 −| [Sany](imperialdade.md) | [`dayforce`](ats-dayforce.md) | 28 | 0 % | 100 % | ✅ |
193 −| [Soprema](soprema.md) | [`dayforce`](ats-dayforce.md) | 28 | 39 % | 100 % | ✅ |
194 −| [Agnico Eagle Mines](agnico_eagle.md) | [`taleo`](ats-taleo.md) | 27 | 0 % | 100 % | ✅ |
195 −| [Comptable en immobilier](belron.md) | [`workday`](ats-workday.md) | 27 | 0 % | 96 % | ✅ |
196 −| [Coveo](coveoen.md) | [`greenhouse`](ats-greenhouse.md) | 27 | 0 % | 100 % | ✅ |
197 −| [Echodyne Corp](echodynecorp.md) | [`greenhouse`](ats-greenhouse.md) | 27 | 100 % | 100 % | ✅ |
198 −| [Groupe Bellemare](groupe_bellemare.md) | [`njoyn`](ats-njoyn.md) | 27 | 0 % | 0 % | ✅ |
199 −| [Keywords Studios](keywords_intl1.md) | [`workable`](ats-workable.md) | 27 | 89 % | 100 % | ✅ |
200 −| [Scotts Canada (Fafard)](scottsmiraclegro.md) | [`workday`](ats-workday.md) | 27 | 4 % | 100 % | ✅ |
201 −| [Stellajones](stellajones.md) | [`dayforce`](ats-dayforce.md) | 27 | 19 % | 100 % | ✅ |
202 −| [Airliquidehr](airliquidehr.md) | [`workday`](ats-workday.md) | 26 | 19 % | 100 % | ✅ |
203 −| [AppDirect](appdirect.md) | [`greenhouse`](ats-greenhouse.md) | 26 | 38 % | 100 % | ✅ |
204 −| [Associé des ventes](childrensplace.md) | [`workday`](ats-workday.md) | 26 | 0 % | 23 % | ✅ |
205 −| [Best Buy Canada](bestbuycanada.md) | [`workday`](ats-workday.md) | 26 | 0 % | 0 % | ✅ |
206 −| [CSS des Découvreurs](cssdd.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 26 | 81 % | 100 % | ✅ |
207 −| [exo (transport métropolitain)](exo.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 26 | 0 % | 100 % | ✅ |
208 −| [Mallette - Saguenay](mallette_sag.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 26 | 4 % | 0 % | ✅ |
186 +| [Onepoint (nventive / Logient)](onepoint.md) | [`workday`](ats-workday.md) | 34 | 0 % | 100 % | ✅ |
187 +| [XTL Transport](xtltransportlogistics.md) | [`jazzhr`](ats-jazzhr.md) | 34 | 0 % | 97 % | ✅ |
188 +| [Brand Momentum](brandmomentum.md) | [`breezy`](ats-breezy.md) | 33 | 61 % | 100 % | ✅ |
189 +| [Industries Lassonde](lassonde.md) | [`custom`](ats-custom.md) | 33 | 33 % | 94 % | ✅ |
190 +| [Nortera](nortera.md) | [`ultipro`](ats-ultipro.md) | 33 | 64 % | 100 % | ✅ |
191 +| [OPENLANE Canada](openlane.md) | [`workday`](ats-workday.md) | 33 | 21 % | 94 % | ✅ |
192 +| [QSL](qsl.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 33 | 21 % | 100 % | ✅ |
193 +| [Sapsol Technologies Inc](sapsol_technologies_inc_7.md) | [`workable`](ats-workable.md) | 33 | 0 % | 100 % | ✅ |
194 +| [Uhaul](uhaul.md) | [`workday`](ats-workday.md) | 33 | 0 % | 100 % | ✅ |
195 +| [NBCUniversal](nbcuniversal3.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 32 | 0 % | 100 % | ✅ |
196 +| [Altasciences](altasciences.md) | [`workday`](ats-workday.md) | 31 | 6 % | 94 % | ✅ |
197 +| [Coveo](coveoen.md) | [`greenhouse`](ats-greenhouse.md) | 30 | 0 % | 100 % | ✅ |
198 +| [Distribution stox](distributionstox2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 30 | 60 % | 100 % | ✅ |
199 +| [Estimator](tranetechnologies.md) | [`workday`](ats-workday.md) | 30 | 100 % | 97 % | ✅ |
200 +| [Groupe Bellemare](groupe_bellemare.md) | [`njoyn`](ats-njoyn.md) | 30 | 0 % | 0 % | ✅ |
201 +| [Institut de recherche du CUSM](cusm_ir.md) | [`njoyn`](ats-njoyn.md) | 30 | 97 % | 0 % | ✅ |
202 +| [Sany](imperialdade.md) | [`dayforce`](ats-dayforce.md) | 30 | 0 % | 100 % | ✅ |
203 +| [CHUM](chum.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 29 | 3 % | 100 % | ✅ |
204 +| [Domtar](domtar.md) | [`successfactors`](ats-successfactors.md) | 29 | 0 % | 100 % | ✅ |
205 +| [Abinbev](abinbev.md) | [`workday`](ats-workday.md) | 28 | 89 % | 100 % | ✅ |
206 +| [Galderma](galderma.md) | [`workday`](ats-workday.md) | 28 | 14 % | 100 % | ✅ |
207 +| [MEDFAR Solutions Cliniques](medfar.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 28 | 0 % | 100 % | ✅ |
208 +| [Rollsroyce](rollsroyce.md) | [`workday`](ats-workday.md) | 28 | 0 % | 100 % | ✅ |
209 +| [Scotts Canada (Fafard)](scottsmiraclegro.md) | [`workday`](ats-workday.md) | 28 | 4 % | 100 % | ✅ |
210 +| [Associé des ventes](childrensplace.md) | [`workday`](ats-workday.md) | 27 | 0 % | 22 % | ✅ |
211 +| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | [`workday`](ats-workday.md) | 27 | 0 % | 100 % | ✅ |
212 +| [LGI Healthcare Solutions Santé Inc.](lgihealthcaresolutionssanteinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 27 | 0 % | 100 % | ✅ |
213 +| [Logm](logm.md) | [`dayforce`](ats-dayforce.md) | 26 | 85 % | 100 % | ✅ |
214 +| [Mallette - Saguenay](mallette_sag.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 26 | 4 % | 85 % | ✅ |
209 215 | [RM Staffing B.V.](rebootmonkey.md) | [`recruitee`](ats-recruitee.md) | 26 | 85 % | 100 % | ✅ |
210 −| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 25 | 0 % | 100 % | ✅ |
211 −| [Distribution stox](distributionstox2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 25 | 60 % | 100 % | ✅ |
212 −| [Groupeguilbault](groupeguilbault.md) | [`workday`](ats-workday.md) | 25 | 0 % | 100 % | ✅ |
213 −| [Responsable Stratégie des Affaires](uniselect.md) | [`workday`](ats-workday.md) | 25 | 8 % | 100 % | ✅ |
214 −| [Saputo](saputo.md) | [`workday`](ats-workday.md) | 25 | 76 % | 100 % | ✅ |
215 −| [Structube](structube1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 25 | 0 % | 100 % | ✅ |
216 −| [Architecte Salesforce Sommaire](jam.md) | [`dayforce`](ats-dayforce.md) | 24 | 0 % | 100 % | ✅ |
217 −| [Comptable prix de revient](exceldorfoods478.md) | [`dayforce`](ats-dayforce.md) | 24 | 25 % | 100 % | ✅ |
216 +| [Service alimentaire Gordon](gfs.md) | [`workday`](ats-workday.md) | 26 | 69 % | 100 % | ✅ |
217 +| [Spectrum Health Care](spectrumhealthcare.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 26 | 88 % | 100 % | ✅ |
218 +| [Airliquidehr](airliquidehr.md) | [`workday`](ats-workday.md) | 25 | 20 % | 100 % | ✅ |
219 +| [Baseten](baseten.md) | [`ashby`](ats-ashby.md) | 25 | 100 % | 0 % | ✅ |
220 +| [dcbel](dcbel.md) | [`bamboohr`](ats-bamboohr.md) | 25 | 0 % | 100 % | ✅ |
221 +| [DRB Distribution](drbdistribution.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 25 | 0 % | 96 % | ✅ |
222 +| [mthree](mthreerecruitingportal.md) | [`greenhouse`](ats-greenhouse.md) | 25 | 0 % | 100 % | ✅ |
223 +| [Progesys](progesys_inc.md) | [`breezy`](ats-breezy.md) | 25 | 4 % | 96 % | ✅ |
224 +| [Rio Tinto](riotinto.md) | [`workday`](ats-workday.md) | 25 | 4 % | 100 % | ✅ |
225 +| [Rodeo FX](rodeofx.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 25 | 0 % | 92 % | ✅ |
226 +| [Side (PTW)](sideinc.md) | [`workable`](ats-workable.md) | 25 | 4 % | 100 % | ✅ |
227 +| [Tecsys](tecsys.md) | [`workable`](ats-workable.md) | 25 | 0 % | 100 % | ✅ |
228 +| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 24 | 42 % | 29 % | ✅ |
229 +| [Cineplex](cineplex.md) | [`workday`](ats-workday.md) | 24 | 4 % | 96 % | ✅ |
230 +| [Directive](directive.md) | [`ashby`](ats-ashby.md) | 24 | 8 % | 0 % | ✅ |
218 231 | [FedEx Express Canada](fedex.md) | [`workday`](ats-workday.md) | 24 | 100 % | 88 % | ✅ |
219 −| [mthree](mthreerecruitingportal.md) | [`greenhouse`](ats-greenhouse.md) | 24 | 0 % | 100 % | ✅ |
220 −| [Nortera](nortera.md) | [`ultipro`](ats-ultipro.md) | 24 | 58 % | 100 % | ✅ |
221 −| [OSEDEA](osedea.md) | [`lever`](ats-lever.md) | 24 | 0 % | 100 % | ✅ |
222 −| [Progesys](progesys_inc.md) | [`breezy`](ats-breezy.md) | 24 | 4 % | 96 % | ✅ |
223 −| [Sopra Steria](soprasteria1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 24 | 0 % | 100 % | ✅ |
224 −| [Spectrum Health Care](spectrumhealthcare.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 24 | 88 % | 100 % | ✅ |
232 +| [H&M](hmgroup.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 24 | 0 % | 100 % | ✅ |
233 +| [Huawei Canada](huaweicanada.md) | [`recruitee`](ats-recruitee.md) | 24 | 0 % | 100 % | ✅ |
234 +| [Montreal Export Package Handler (18:00-23:00)](hcmportal.md) | [`workday`](ats-workday.md) | 24 | 88 % | 92 % | ✅ |
235 +| [Search for](bcf.md) | [`workday`](ats-workday.md) | 24 | 0 % | 100 % | ✅ |
236 +| [Stellajones](stellajones.md) | [`dayforce`](ats-dayforce.md) | 24 | 17 % | 100 % | ✅ |
237 +| [Structube](structube1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 24 | 0 % | 100 % | ✅ |
238 +| [Sun Life](sunlife.md) | [`workday`](ats-workday.md) | 24 | 8 % | 67 % | ✅ |
239 +| [Tmx](tmx.md) | [`workday`](ats-workday.md) | 24 | 0 % | 67 % | ✅ |
225 240 | [VIA Rail Canada](via_rail.md) | [`successfactors`](ats-successfactors.md) | 24 | 0 % | 100 % | ✅ |
226 −| [Artiste technique sénior·e UI / Senior UI Tech Artist](x2k.md) | [`greenhouse`](ats-greenhouse.md) | 23 | 9 % | 100 % | ✅ |
227 241 | [ATIA Ltd](atialtd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 23 | 43 % | 100 % | ✅ |
228 −| [Baseten](baseten.md) | [`ashby`](ats-ashby.md) | 23 | 100 % | 0 % | ✅ |
229 −| [Cirque du Soleil](cirquedusoleil.md) | [`lever`](ats-lever.md) | 23 | 0 % | 87 % | ✅ |
242 +| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 23 | 0 % | 100 % | ✅ |
230 243 | [Egis Group](egisgroup.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 23 | 0 % | 100 % | ✅ |
231 −| [Huawei Canada](huaweicanada.md) | [`recruitee`](ats-recruitee.md) | 23 | 0 % | 100 % | ✅ |
232 −| [Intact Corporation financière](intactfc.md) | [`workday`](ats-workday.md) | 23 | 0 % | 100 % | ✅ |
233 −| [MEDFAR Solutions Cliniques](medfar.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 23 | 0 % | 100 % | ✅ |
244 +| [Keywords Studios](keywords_intl1.md) | [`workable`](ats-workable.md) | 23 | 91 % | 100 % | ✅ |
245 +| [LG2](lg2.md) | [`recruitee`](ats-recruitee.md) | 23 | 4 % | 100 % | ✅ |
234 246 | [Messer Canada](messer_canada.md) | [`ultipro`](ats-ultipro.md) | 23 | 87 % | 100 % | ✅ |
235 −| [OPENLANE Canada](openlane.md) | [`workday`](ats-workday.md) | 23 | 30 % | 83 % | ✅ |
236 −| [Tecsys](tecsys.md) | [`workable`](ats-workable.md) | 23 | 0 % | 100 % | ✅ |
247 +| [Ville de Gatineau](ville_gatineau.md) | [`njoyn`](ats-njoyn.md) | 23 | 100 % | 0 % | ✅ |
248 +| [Vooban](vooban.md) | [`greenhouse`](ats-greenhouse.md) | 23 | 0 % | 100 % | ✅ |
249 +| [Wolseley Canada](wolseley.md) | [`workday`](ats-workday.md) | 23 | 0 % | 100 % | ✅ |
250 +| [AVP](aviva.md) | [`workday`](ats-workday.md) | 22 | 14 % | 86 % | ✅ |
237 251 | [Baro RH](barorh.md) | [`workable`](ats-workable.md) | 22 | 0 % | 100 % | ✅ |
238 −| [Bdo](bdo.md) | [`workday`](ats-workday.md) | 22 | 0 % | 100 % | ✅ |
239 −| [Broccolini](broccolini.md) | [`bamboohr`](ats-bamboohr.md) | 22 | 0 % | 100 % | ✅ |
240 −| [Cineplex](cineplex.md) | [`workday`](ats-workday.md) | 22 | 5 % | 100 % | ✅ |
241 −| [DRB Distribution](drbdistribution.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 22 | 0 % | 0 % | ✅ |
242 −| [EXFO](exfo.md) | [`workday`](ats-workday.md) | 22 | 0 % | 100 % | ✅ |
243 −| [McCarthy Tétrault](mccarthy_tetrault.md) | [`icims`](ats-icims.md) | 22 | 0 % | 100 % | ✅ |
244 −| [Merchandising Consultants Associates](merchandising_consultants_associates.md) | [`breezy`](ats-breezy.md) | 22 | 100 % | 95 % | ✅ |
245 −| [Monteur CVC 1 /HVAC Assembler 1](sunbeltrentals.md) | [`workday`](ats-workday.md) | 22 | 0 % | 55 % | ✅ |
246 −| [Rio Tinto](riotinto.md) | [`workday`](ats-workday.md) | 22 | 0 % | 100 % | ✅ |
247 −| [Rollsroyce](rollsroyce.md) | [`workday`](ats-workday.md) | 22 | 0 % | 100 % | ✅ |
248 −| [Search for](bcf.md) | [`workday`](ats-workday.md) | 22 | 0 % | 100 % | ✅ |
249 −| [Systemex](systemex.md) | [`lever`](ats-lever.md) | 22 | 0 % | 100 % | ✅ |
250 −| [Valnet](valnetconcept.md) | [`jazzhr`](ats-jazzhr.md) | 22 | 0 % | 0 % | ✅ |
251 −| [dcbel](dcbel.md) | [`bamboohr`](ats-bamboohr.md) | 21 | 0 % | 100 % | ✅ |
252 −| [Hubinternational](hubinternational.md) | [`workday`](ats-workday.md) | 21 | 14 % | 86 % | ✅ |
253 −| [Logm](logm.md) | [`dayforce`](ats-dayforce.md) | 21 | 86 % | 100 % | ✅ |
254 −| [Playground](playground.md) | [`jazzhr`](ats-jazzhr.md) | 21 | 76 % | 0 % | ✅ |
255 −| [Xsolla](xsolla.md) | [`lever`](ats-lever.md) | 21 | 95 % | 95 % | ✅ |
256 −| [XTL Transport](xtltransportlogistics.md) | [`jazzhr`](ats-jazzhr.md) | 21 | 0 % | 0 % | ✅ |
257 −| [AECOM](aecom2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ |
258 −| [CAA-Québec](caaquebec.md) | [`workday`](ats-workday.md) | 20 | 20 % | 100 % | ✅ |
259 −| [CONTRÔLEUR](novatech.md) | [`dayforce`](ats-dayforce.md) | 20 | 45 % | 100 % | ✅ |
260 −| [dentago](dentago.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 20 | 5 % | 0 % | ✅ |
261 −| [Epic Games](epicgames.md) | [`greenhouse`](ats-greenhouse.md) | 20 | 0 % | 100 % | ✅ |
262 −| [JLL](jll.md) | [`workday`](ats-workday.md) | 20 | 5 % | 90 % | ✅ |
263 −| [Rodeo FX](rodeofx.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ |
264 −| [Vooban](vooban.md) | [`greenhouse`](ats-greenhouse.md) | 20 | 0 % | 100 % | ✅ |
265 −| [WPP Media](wppmedia.md) | [`greenhouse`](ats-greenhouse.md) | 20 | 5 % | 100 % | ✅ |
266 −| [Estimator](tranetechnologies.md) | [`workday`](ats-workday.md) | 19 | 100 % | 100 % | ✅ |
267 −| [Explorance](explorance.md) | [`bamboohr`](ats-bamboohr.md) | 19 | 0 % | 100 % | ✅ |
252 +| [Comptable en immobilier](belron.md) | [`workday`](ats-workday.md) | 22 | 5 % | 95 % | ✅ |
253 +| [Comptable prix de revient](exceldorfoods478.md) | [`dayforce`](ats-dayforce.md) | 22 | 27 % | 100 % | ✅ |
254 +| [Produits Labelink](labelink.md) | [`bamboohr`](ats-bamboohr.md) | 22 | 0 % | 100 % | ✅ |
255 +| [Unitytech](unitytech.md) | [`workday`](ats-workday.md) | 22 | 91 % | 82 % | ✅ |
256 +| [Valnet](valnetconcept.md) | [`jazzhr`](ats-jazzhr.md) | 22 | 0 % | 100 % | ✅ |
257 +| [Xsolla](xsolla.md) | [`lever`](ats-lever.md) | 22 | 100 % | 95 % | ✅ |
258 +| [Alsglobal](alsglobal.md) | [`workday`](ats-workday.md) | 21 | 5 % | 95 % | ✅ |
259 +| [dentago](dentago.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 21 | 5 % | 81 % | ✅ |
260 +| [JLL](jll.md) | [`workday`](ats-workday.md) | 21 | 5 % | 86 % | ✅ |
261 +| [Responsable Stratégie des Affaires](uniselect.md) | [`workday`](ats-workday.md) | 21 | 14 % | 100 % | ✅ |
262 +| [Soprema](soprema.md) | [`dayforce`](ats-dayforce.md) | 21 | 24 % | 100 % | ✅ |
263 +| [Talan](talan.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 21 | 0 % | 100 % | ✅ |
264 +| [Ur](ur.md) | [`workday`](ats-workday.md) | 21 | 0 % | 100 % | ✅ |
265 +| [Cirque du Soleil](cirquedusoleil.md) | [`lever`](ats-lever.md) | 20 | 0 % | 85 % | ✅ |
266 +| [Frima Studio](frimastudio.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ |
267 +| [Monteur CVC 1 /HVAC Assembler 1](sunbeltrentals.md) | [`workday`](ats-workday.md) | 20 | 0 % | 65 % | ✅ |
268 +| [OPAL-RT Technologies](opalrt.md) | [`bamboohr`](ats-bamboohr.md) | 20 | 0 % | 100 % | ✅ |
269 +| [Playground](playground.md) | [`jazzhr`](ats-jazzhr.md) | 20 | 70 % | 75 % | ✅ |
270 +| [Sia](sia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ |
271 +| [Starlink Aviation](starlink_aviation.md) | [`workable`](ats-workable.md) | 20 | 0 % | 100 % | ✅ |
272 +| [Systemex](systemex.md) | [`lever`](ats-lever.md) | 20 | 0 % | 100 % | ✅ |
273 +| [Vosker](vosker.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ |
274 +| [Broccolini](broccolini.md) | [`bamboohr`](ats-bamboohr.md) | 19 | 0 % | 100 % | ✅ |
275 +| [Cmpams](cmpams.md) | [`dayforce`](ats-dayforce.md) | 19 | 0 % | 100 % | ✅ |
268 276 | [Immiland Canada Inc.](immiland_canada_inc.md) | [`lever`](ats-lever.md) | 19 | 16 % | 100 % | ✅ |
269 −| [Produits Labelink](labelink.md) | [`bamboohr`](ats-bamboohr.md) | 19 | 0 % | 100 % | ✅ |
270 −| [REXEL](rexel1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 19 | 0 % | 100 % | ✅ |
271 −| [Sapsol Technologies Inc](sapsol_technologies_inc_7.md) | [`workable`](ats-workable.md) | 19 | 0 % | 100 % | ✅ |
272 −| [Uniboard](uniboard.md) | [`adp`](ats-adp.md) | 19 | 21 % | 0 % | ✅ |
273 −| [Ur](ur.md) | [`workday`](ats-workday.md) | 19 | 11 % | 100 % | ✅ |
274 −| [Colabor](colabor.md) | [`dayforce`](ats-dayforce.md) | 18 | 0 % | 100 % | ✅ |
277 +| [Pré-assemblage](motionc.md) | [`dayforce`](ats-dayforce.md) | 19 | 0 % | 100 % | ✅ |
278 +| [Sandvik](sandvik.md) | [`workday`](ats-workday.md) | 19 | 0 % | 21 % | ✅ |
279 +| [TSMG](tsmg.md) | [`lever`](ats-lever.md) | 19 | 0 % | 100 % | ✅ |
280 +| [Uniboard](uniboard.md) | [`adp`](ats-adp.md) | 19 | 37 % | 63 % | ✅ |
281 +| [Victoria Park Medispa](vicpark.md) | [`bamboohr`](ats-bamboohr.md) | 19 | 0 % | 100 % | ✅ |
282 +| [AbbVie](abbvie.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 18 | 0 % | 100 % | ✅ |
283 +| [Artiste technique sénior·e UI / Senior UI Tech Artist](x2k.md) | [`greenhouse`](ats-greenhouse.md) | 18 | 6 % | 100 % | ✅ |
284 +| [Bell Textron Canada](bell_textron.md) | [`taleo`](ats-taleo.md) | 18 | 0 % | 100 % | ✅ |
285 +| [CAA-Québec](caaquebec.md) | [`workday`](ats-workday.md) | 18 | 28 % | 100 % | ✅ |
286 +| [CONTRÔLEUR](novatech.md) | [`dayforce`](ats-dayforce.md) | 18 | 33 % | 100 % | ✅ |
275 287 | [DRW](drweng.md) | [`greenhouse`](ats-greenhouse.md) | 18 | 6 % | 100 % | ✅ |
276 −| [Sales Associate III](tapestry.md) | [`workday`](ats-workday.md) | 18 | 100 % | 100 % | ✅ |
277 −| [Sia](sia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 18 | 0 % | 100 % | ✅ |
278 −| [Alsglobal](alsglobal.md) | [`workday`](ats-workday.md) | 17 | 6 % | 100 % | ✅ |
279 −| [Aylo](aylo.md) | [`greenhouse`](ats-greenhouse.md) | 17 | 0 % | 100 % | ✅ |
280 −| [Aylo](aylofr.md) | [`greenhouse`](ats-greenhouse.md) | 17 | 0 % | 100 % | ✅ |
281 −| [BDC](bdc.md) | [`workday`](ats-workday.md) | 17 | 0 % | 100 % | ✅ |
282 −| [Canadian Royalties](canadian_royalties.md) | [`adp`](ats-adp.md) | 17 | 47 % | 0 % | ✅ |
288 +| [Groupeguilbault](groupeguilbault.md) | [`workday`](ats-workday.md) | 18 | 0 % | 100 % | ✅ |
289 +| [Lyft](lyft.md) | [`greenhouse`](ats-greenhouse.md) | 18 | 100 % | 100 % | ✅ |
290 +| [McCarthy Tétrault](mccarthy_tetrault.md) | [`icims`](ats-icims.md) | 18 | 0 % | 94 % | ✅ |
291 +| [ORA Partenaires](orapartenaires.md) | [`teamtailor`](ats-teamtailor.md) | 18 | 78 % | 94 % | ✅ |
292 +| [Préparateur de commandes](sysco.md) | [`workday`](ats-workday.md) | 18 | 6 % | 94 % | ✅ |
293 +| [Teknion Roy & Breton](teknionroybreton.md) | [`recruitee`](ats-recruitee.md) | 18 | 56 % | 89 % | ✅ |
294 +| [Ville de Terrebonne](ville_terrebonne.md) | [`njoyn`](ats-njoyn.md) | 18 | 94 % | 0 % | ✅ |
295 +| [Énergir](energir.md) | [`successfactors`](ats-successfactors.md) | 18 | 0 % | 100 % | ✅ |
283 296 | [DRW Montreal](drwfr.md) | [`greenhouse`](ats-greenhouse.md) | 17 | 0 % | 100 % | ✅ |
284 −| [Groupe Master](groupe_master.md) | [`njoyn`](ats-njoyn.md) | 17 | 35 % | 0 % | ✅ |
297 +| [Epic Games](epicgames.md) | [`greenhouse`](ats-greenhouse.md) | 17 | 0 % | 100 % | ✅ |
298 +| [Fund Accountant / Comptable de Fonds](sagardholdings.md) | [`workday`](ats-workday.md) | 17 | 18 % | 100 % | ✅ |
299 +| [Groupe Mach](groupemach.md) | [`dayforce`](ats-dayforce.md) | 17 | 12 % | 100 % | ✅ |
300 +| [Hubinternational](hubinternational.md) | [`workday`](ats-workday.md) | 17 | 18 % | 82 % | ✅ |
301 +| [Jci](jci.md) | [`workday`](ats-workday.md) | 17 | 100 % | 94 % | ✅ |
285 302 | [La Senza](lasenza.md) | [`greenhouse`](ats-greenhouse.md) | 17 | 12 % | 100 % | ✅ |
286 −| [LG2](lg2.md) | [`recruitee`](ats-recruitee.md) | 17 | 6 % | 100 % | ✅ |
287 −| [Maya HTT](maya_htt.md) | [`ashby`](ats-ashby.md) | 17 | 0 % | 0 % | ✅ |
288 −| [Onelineage](onelineage.md) | [`workday`](ats-workday.md) | 17 | 0 % | 94 % | ✅ |
289 −| [Réseau de transport de la Capitale](rtc_quebec.md) | [`njoyn`](ats-njoyn.md) | 17 | 0 % | 0 % | ✅ |
290 −| [Réseau de transport de Longueuil (RTL)](rtl.md) | [`njoyn`](ats-njoyn.md) | 17 | 24 % | 0 % | ✅ |
291 −| [Sandvik](sandvik.md) | [`workday`](ats-workday.md) | 17 | 0 % | 0 % | ✅ |
292 −| [Société de transport de Laval](stl_laval.md) | [`njoyn`](ats-njoyn.md) | 17 | 29 % | 0 % | ✅ |
293 −| [VO2 Group](vo2_group.md) | [`lever`](ats-lever.md) | 17 | 6 % | 100 % | ✅ |
294 −| [Vosker](vosker.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 17 | 0 % | 100 % | ✅ |
295 −| [Bell Textron Canada](bell_textron.md) | [`taleo`](ats-taleo.md) | 16 | 0 % | 100 % | ✅ |
296 −| [Cuisinier(ère) 2, Restaurant Marcus & Lounge (Sur appel) / Cook 2 ...](fourseasons.md) | [`workday`](ats-workday.md) | 16 | 6 % | 100 % | ✅ |
297 −| [Intervenant·e au suivi psychosocial](obm.md) | [`dayforce`](ats-dayforce.md) | 16 | 19 % | 100 % | ✅ |
298 −| [NOVIPRO](novipro.md) | [`breezy`](ats-breezy.md) | 16 | 0 % | 100 % | ✅ |
299 −| [Onepoint (nventive / Logient)](onepoint.md) | [`workday`](ats-workday.md) | 16 | 0 % | 0 % | ✅ |
300 −| [Pré-assemblage](motionc.md) | [`dayforce`](ats-dayforce.md) | 16 | 0 % | 100 % | ✅ |
301 −| [Relais & Châteaux](relaischateaux.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 16 | 0 % | 100 % | ✅ |
303 +| [Le Massif de Charlevoix](lemassif.md) | [`dayforce`](ats-dayforce.md) | 17 | 0 % | 100 % | ✅ |
304 +| [Onelineage](onelineage.md) | [`workday`](ats-workday.md) | 17 | 6 % | 100 % | ✅ |
305 +| [REXEL](rexel1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 17 | 0 % | 100 % | ✅ |
306 +| [Sci](sci.md) | [`workday`](ats-workday.md) | 17 | 29 % | 88 % | ✅ |
307 +| [Strathmore](strathmore.md) | [`adp`](ats-adp.md) | 17 | 47 % | 100 % | ✅ |
308 +| [WPP Media](wppmedia.md) | [`greenhouse`](ats-greenhouse.md) | 17 | 6 % | 100 % | ✅ |
309 +| [Avocat·e, Bureau de l'avocate générale](mthris.md) | [`dayforce`](ats-dayforce.md) | 16 | 38 % | 100 % | ✅ |
310 +| [Aylo](aylo.md) | [`greenhouse`](ats-greenhouse.md) | 16 | 0 % | 100 % | ✅ |
311 +| [Aylo](aylofr.md) | [`greenhouse`](ats-greenhouse.md) | 16 | 0 % | 100 % | ✅ |
312 +| [EQ3](eq3_ltd.md) | [`breezy`](ats-breezy.md) | 16 | 56 % | 94 % | ✅ |
313 +| [Journalier(ère) de production](vestis.md) | [`dayforce`](ats-dayforce.md) | 16 | 0 % | 100 % | ✅ |
314 +| [Lemay](lemay.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 16 | 6 % | 100 % | ✅ |
315 +| [Réseau de transport de Longueuil (RTL)](rtl.md) | [`njoyn`](ats-njoyn.md) | 16 | 31 % | 0 % | ✅ |
316 +| [Réseau Mieux-Être](reseau_mieux_etre.md) | [`breezy`](ats-breezy.md) | 16 | 0 % | 100 % | ✅ |
317 +| [Sales Associate III](tapestry.md) | [`workday`](ats-workday.md) | 16 | 100 % | 100 % | ✅ |
302 318 | [Sanimax](sanimax.md) | [`workday`](ats-workday.md) | 16 | 38 % | 100 % | ✅ |
303 −| [Sony Pictures Imageworks](sonypicturesimageworks.md) | [`greenhouse`](ats-greenhouse.md) | 16 | 31 % | 100 % | ✅ |
304 −| [Ville de Gatineau](ville_gatineau.md) | [`njoyn`](ats-njoyn.md) | 16 | 94 % | 0 % | ✅ |
305 −| [Wealthy Group of Companies LLC](wealthy_recruiting.md) | [`breezy`](ats-breezy.md) | 16 | 100 % | 94 % | ✅ |
306 −| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 15 | 13 % | 40 % | ✅ |
307 −| [BellatRx](bellatrx_inc.md) | [`breezy`](ats-breezy.md) | 15 | 0 % | 100 % | ✅ |
308 −| [Bilingual Customer Experience Representative (English ...](superiorplus.md) | [`dayforce`](ats-dayforce.md) | 15 | 80 % | 100 % | ✅ |
309 −| [Boralex](boralex.md) | [`dayforce`](ats-dayforce.md) | 15 | 0 % | 100 % | ✅ |
310 −| [Hygiéniste Industrielle](kdcone.md) | [`dayforce`](ats-dayforce.md) | 15 | 0 % | 100 % | ✅ |
311 −| [Larian Studios](larian.md) | [`lever`](ats-lever.md) | 15 | 0 % | 100 % | ✅ |
312 −| [Teknion Roy & Breton](teknionroybreton.md) | [`recruitee`](ats-recruitee.md) | 15 | 53 % | 93 % | ✅ |
313 −| [Vice-President, Strategic Procurement](eddyfi.md) | [`dayforce`](ats-dayforce.md) | 15 | 0 % | 100 % | ✅ |
319 +| [Allstate Canada](allstate.md) | [`workday`](ats-workday.md) | 15 | 27 % | 80 % | ✅ |
320 +| [Canada Vie](canada_vie.md) | [`successfactors`](ats-successfactors.md) | 15 | 0 % | 100 % | ✅ |
321 +| [Canadian Royalties](canadian_royalties.md) | [`adp`](ats-adp.md) | 15 | 47 % | 100 % | ✅ |
322 +| [CSS des Découvreurs](cssdd.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 15 | 87 % | 100 % | ✅ |
323 +| [Gea](gea.md) | [`workday`](ats-workday.md) | 15 | 33 % | 100 % | ✅ |
324 +| [Maya HTT](maya_htt.md) | [`ashby`](ats-ashby.md) | 15 | 0 % | 100 % | ✅ |
325 +| [NOVIPRO](novipro.md) | [`breezy`](ats-breezy.md) | 15 | 0 % | 100 % | ✅ |
326 +| [Scalian](scalian.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 15 | 20 % | 100 % | ✅ |
327 +| [Société de transport de Laval](stl_laval.md) | [`njoyn`](ats-njoyn.md) | 15 | 27 % | 0 % | ✅ |
328 +| [Sony Pictures Imageworks](sonypicturesimageworks.md) | [`greenhouse`](ats-greenhouse.md) | 15 | 33 % | 100 % | ✅ |
329 +| [Spisante](spisante.md) | [`dayforce`](ats-dayforce.md) | 15 | 0 % | 100 % | ✅ |
314 330 | [VinFast Canada](vinfastcanada.md) | [`dayforce`](ats-dayforce.md) | 15 | 33 % | 100 % | ✅ |
331 +| [VO2 Group](vo2_group.md) | [`lever`](ats-lever.md) | 15 | 7 % | 100 % | ✅ |
315 332 | [Work From Home Customer Service Representative](usasurveyjob.md) | [`lever`](ats-lever.md) | 15 | 13 % | 100 % | ✅ |
316 −| [Allstate Canada](allstate.md) | [`workday`](ats-workday.md) | 14 | 21 % | 86 % | ✅ |
333 +| [AlayaCare](alayacare.md) | [`greenhouse`](ats-greenhouse.md) | 14 | 0 % | 100 % | ✅ |
334 +| [Altitude Sports](altitude_sports.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 14 | 21 % | 100 % | ✅ |
317 335 | [Aviso Wealth](aviso.md) | [`workable`](ats-workable.md) | 14 | 100 % | 100 % | ✅ |
318 −| [Avocat·e, Bureau de l'avocate générale](mthris.md) | [`dayforce`](ats-dayforce.md) | 14 | 21 % | 100 % | ✅ |
319 −| [Chef.fe de service de quart, soir](lantic.md) | [`dayforce`](ats-dayforce.md) | 14 | 43 % | 100 % | ✅ |
320 −| [Clinical Research Associate](syneoshealth.md) | [`workday`](ats-workday.md) | 14 | 0 % | 100 % | ✅ |
321 −| [Comptable](cloudimperiumgames.md) | [`workday`](ats-workday.md) | 14 | 0 % | 100 % | ✅ |
322 −| [EMD-Batimo](batimoinc.md) | [`bamboohr`](ats-bamboohr.md) | 14 | 0 % | 0 % | ✅ |
323 −| [EQ3](eq3_ltd.md) | [`breezy`](ats-breezy.md) | 14 | 64 % | 100 % | ✅ |
324 −| [Fruit d'Or](fruitdor.md) | [`ultipro`](ats-ultipro.md) | 14 | 0 % | 100 % | ✅ |
325 −| [Groupe AGF](groupeagf.md) | [`dayforce`](ats-dayforce.md) | 14 | 50 % | 100 % | ✅ |
326 −| [iA Groupe financier](ia_groupe.md) | [`workday`](ats-workday.md) | 14 | 100 % | 100 % | ✅ |
327 −| [Lamour](lamour.md) | [`workable`](ats-workable.md) | 14 | 0 % | 100 % | ✅ |
328 −| [Premierparks](premierparks.md) | [`dayforce`](ats-dayforce.md) | 14 | 7 % | 100 % | ✅ |
336 +| [Ccmhockey](ccmhockey.md) | [`dayforce`](ats-dayforce.md) | 14 | 0 % | 100 % | ✅ |
337 +| [Clinical Research Associate](syneoshealth.md) | [`workday`](ats-workday.md) | 14 | 0 % | 93 % | ✅ |
338 +| [Comptable de projet / Project Accountant](ellisdon.md) | [`workday`](ats-workday.md) | 14 | 21 % | 93 % | ✅ |
339 +| [Faspac](faspac.md) | [`lever`](ats-lever.md) | 14 | 14 % | 100 % | ✅ |
340 +| [Groupe AGF](groupeagf.md) | [`dayforce`](ats-dayforce.md) | 14 | 29 % | 100 % | ✅ |
341 +| [GSK](gsk.md) | [`workday`](ats-workday.md) | 14 | 0 % | 93 % | ✅ |
342 +| [Larian Studios](larian.md) | [`lever`](ats-lever.md) | 14 | 0 % | 100 % | ✅ |
343 +| [Lindt & Sprüngli Canada](lindt_sprunglicanada.md) | [`breezy`](ats-breezy.md) | 14 | 0 % | 93 % | ✅ |
344 +| [Medavie](medaviehs.md) | [`workday`](ats-workday.md) | 14 | 79 % | 36 % | ✅ |
345 +| [OSEDEA](osedea.md) | [`lever`](ats-lever.md) | 14 | 0 % | 100 % | ✅ |
346 +| [Pfizer Canada](pfizer.md) | [`workday`](ats-workday.md) | 14 | 100 % | 7 % | ✅ |
329 347 | [Renovco](renovco.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 14 | 0 % | 100 % | ✅ |
330 −| [Sci](sci.md) | [`workday`](ats-workday.md) | 14 | 21 % | 71 % | ✅ |
331 −| [Starlink Aviation](starlink_aviation.md) | [`workable`](ats-workable.md) | 14 | 0 % | 100 % | ✅ |
348 +| [Responsable bilingue du marketing événementiel / Event ...](fil.md) | [`workday`](ats-workday.md) | 14 | 100 % | 71 % | ✅ |
349 +| [Sika Canada](sikaag.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 14 | 7 % | 100 % | ✅ |
350 +| [Uman Recrutement](umanrecrutement.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 14 | 0 % | 100 % | ✅ |
332 351 | [United Services Group](unitedservices.md) | [`dayforce`](ats-dayforce.md) | 14 | 0 % | 100 % | ✅ |
333 −| [VA Desk](vadesk.md) | [`breezy`](ats-breezy.md) | 14 | 21 % | 100 % | ✅ |
334 −| [Victoria Park Medispa](vicpark.md) | [`bamboohr`](ats-bamboohr.md) | 14 | 0 % | 100 % | ✅ |
335 −| [Ville de Terrebonne](ville_terrebonne.md) | [`njoyn`](ats-njoyn.md) | 14 | 93 % | 0 % | ✅ |
336 −| [Avisbudget](avisbudget.md) | [`workday`](ats-workday.md) | 13 | 0 % | 100 % | ✅ |
337 −| [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 13 | 0 % | 100 % | ✅ |
338 −| [Chef de secteur](gsknch.md) | [`workday`](ats-workday.md) | 13 | 8 % | 92 % | ✅ |
339 −| [Fastco Canada](fastcocanada.md) | [`dayforce`](ats-dayforce.md) | 13 | 0 % | 100 % | ✅ |
340 −| [Fempro (First Quality)](firstquality.md) | [`workday`](ats-workday.md) | 13 | 38 % | 0 % | ✅ |
341 −| [Fund Accountant / Comptable de Fonds](sagardholdings.md) | [`workday`](ats-workday.md) | 13 | 23 % | 100 % | ✅ |
342 −| [Gea](gea.md) | [`workday`](ats-workday.md) | 13 | 31 % | 100 % | ✅ |
343 −| [Humanise](humanisecollective.md) | [`teamtailor`](ats-teamtailor.md) | 13 | 0 % | 0 % | ✅ |
344 −| [Investissement Québec](investquebec.md) | [`workday`](ats-workday.md) | 13 | 8 % | 100 % | ✅ |
345 −| [Le Massif de Charlevoix](lemassif.md) | [`dayforce`](ats-dayforce.md) | 13 | 0 % | 100 % | ✅ |
352 +| [UV Assurance](uv_assurance.md) | [`adp`](ats-adp.md) | 14 | 0 % | 100 % | ✅ |
353 +| [Wealthy Group of Companies LLC](wealthy_recruiting.md) | [`breezy`](ats-breezy.md) | 14 | 100 % | 93 % | ✅ |
354 +| [Aritzia](aritzia.md) | [`workday`](ats-workday.md) | 13 | 62 % | 100 % | ✅ |
355 +| [Bridgestone](bridgestone.md) | [`workday`](ats-workday.md) | 13 | 38 % | 100 % | ✅ |
356 +| [Colabor](colabor.md) | [`dayforce`](ats-dayforce.md) | 13 | 0 % | 100 % | ✅ |
357 +| [Défis RH](defisrh.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 13 | 31 % | 92 % | ✅ |
358 +| [Fieracapital](fieracapital.md) | [`workday`](ats-workday.md) | 13 | 31 % | 69 % | ✅ |
359 +| [Global Excel Management](globalexcel.md) | [`icims`](ats-icims.md) | 13 | 54 % | 38 % | ✅ |
360 +| [Groupe Master](groupe_master.md) | [`njoyn`](ats-njoyn.md) | 13 | 62 % | 100 % | ✅ |
361 +| [H2O Innovation](h2o_innovation.md) | [`adp`](ats-adp.md) | 13 | 8 % | 100 % | ✅ |
362 +| [Hygiéniste Industrielle](kdcone.md) | [`dayforce`](ats-dayforce.md) | 13 | 0 % | 100 % | ✅ |
363 +| [JG Rive-Sud (GFS)](jgrivesud.md) | [`workday`](ats-workday.md) | 13 | 69 % | 100 % | ✅ |
364 +| [Lamour](lamour.md) | [`workable`](ats-workable.md) | 13 | 0 % | 100 % | ✅ |
365 +| [LawZero](lawzero.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 0 % | 100 % | ✅ |
366 +| [Les Excavations Lafontaine Inc.](lafontaineinc.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 13 | 0 % | 92 % | ✅ |
367 +| [LoiZéro](loizero.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 0 % | 100 % | ✅ |
346 368 | [MicroHabitat](microhabitat.md) | [`breezy`](ats-breezy.md) | 13 | 100 % | 100 % | ✅ |
347 −| [OPAL-RT Technologies](opalrt.md) | [`bamboohr`](ats-bamboohr.md) | 13 | 0 % | 100 % | ✅ |
348 −| [Optel Group](optelgroup.md) | [`jazzhr`](ats-jazzhr.md) | 13 | 0 % | 0 % | ✅ |
349 −| [ORA Partenaires](orapartenaires.md) | [`teamtailor`](ats-teamtailor.md) | 13 | 92 % | 0 % | ✅ |
350 −| [Peoplecorporation](peoplecorporation.md) | [`workday`](ats-workday.md) | 13 | 0 % | 77 % | ✅ |
369 +| [Peoplecorporation](peoplecorporation.md) | [`workday`](ats-workday.md) | 13 | 15 % | 62 % | ✅ |
370 +| [Portage CyberTech](portagecybertech.md) | [`bamboohr`](ats-bamboohr.md) | 13 | 15 % | 100 % | ✅ |
371 +| [Premierparks](premierparks.md) | [`dayforce`](ats-dayforce.md) | 13 | 8 % | 100 % | ✅ |
351 372 | [Quadbridge](quadbridge.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 46 % | 100 % | ✅ |
352 −| [Ryder](ryder.md) | [`workday`](ats-workday.md) | 13 | 100 % | 31 % | ✅ |
353 −| [Réseau Mieux-Être](reseau_mieux_etre.md) | [`breezy`](ats-breezy.md) | 13 | 0 % | 100 % | ✅ |
354 −| [Scalian](scalian.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 13 | 31 % | 100 % | ✅ |
355 −| [Sid Lee](sidlee.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 0 % | 100 % | ✅ |
356 −| [Talan](talan.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 13 | 0 % | 100 % | ✅ |
357 −| [Uman Recrutement](umanrecrutement.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 13 | 0 % | 0 % | ✅ |
358 −| [36Pix](pix36.md) | [`jazzhr`](ats-jazzhr.md) | 12 | 0 % | 0 % | ✅ |
359 −| [Administrateur comptable principal](bird.md) | [`workday`](ats-workday.md) | 12 | 0 % | 100 % | ✅ |
360 −| [Aritzia](aritzia.md) | [`workday`](ats-workday.md) | 12 | 67 % | 100 % | ✅ |
361 −| [AVP](aviva.md) | [`workday`](ats-workday.md) | 12 | 25 % | 83 % | ✅ |
362 −| [Bridgestone](bridgestone.md) | [`workday`](ats-workday.md) | 12 | 33 % | 100 % | ✅ |
363 −| [Chef d'équipe Agile](aspentech.md) | [`workday`](ats-workday.md) | 12 | 0 % | 100 % | ✅ |
364 −| [Cloud Chamber](cloudchamberen.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ |
365 −| [Cloud Chamber Montréal](cloudchamberfr.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ |
366 −| [Cmpams](cmpams.md) | [`dayforce`](ats-dayforce.md) | 12 | 0 % | 100 % | ✅ |
367 −| [Défis RH](defisrh.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 12 | 17 % | 0 % | ✅ |
368 −| [Erb](erb.md) | [`dayforce`](ats-dayforce.md) | 12 | 42 % | 100 % | ✅ |
369 −| [Evolving Web](evolving_web.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ |
370 −| [Frima Studio](frimastudio.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 100 % | ✅ |
371 −| [Gameloft](gameloft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 100 % | ✅ |
372 −| [Groupe Montoni](groupemontoni.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 8 % | 100 % | ✅ |
373 −| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | [`adp`](ats-adp.md) | 12 | 8 % | 0 % | ✅ |
374 −| [HEC Montréal — corps professoral](hec_montreal_profs.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 12 | 0 % | 100 % | ✅ |
375 −| [Iqvia](iqvia.md) | [`workday`](ats-workday.md) | 12 | 100 % | 67 % | ✅ |
376 −| [ISAAC Instruments](isaacinstruments.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 33 % | ✅ |
377 −| [JG Rive-Sud (GFS)](jgrivesud.md) | [`workday`](ats-workday.md) | 12 | 75 % | 100 % | ✅ |
378 −| [Josephribkoff](josephribkoff.md) | [`dayforce`](ats-dayforce.md) | 12 | 0 % | 100 % | ✅ |
379 −| [LawZero](lawzero.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ |
380 −| [Lemay](lemay.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 8 % | 100 % | ✅ |
381 −| [LIDD Consultants](lidd.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ |
382 −| [LoiZéro](loizero.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ |
383 −| [Quincaillerie Richelieu](richelieu.md) | [`adp`](ats-adp.md) | 12 | 0 % | 0 % | ✅ |
384 −| [Running Room Canada](runningroom.md) | [`dayforce`](ats-dayforce.md) | 12 | 0 % | 100 % | ✅ |
385 −| [Spiria](spiria.md) | [`lever`](ats-lever.md) | 12 | 58 % | 100 % | ✅ |
386 −| [Strathmore](strathmore.md) | [`adp`](ats-adp.md) | 12 | 25 % | 0 % | ✅ |
387 −| [Valnetinc](valnetinc.md) | [`dayforce`](ats-dayforce.md) | 12 | 8 % | 100 % | ✅ |
388 −| [ZAYAT AROMA - ZAYAT AROMA](zayataroma.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 12 | 0 % | 0 % | ✅ |
389 −| [3 Brasseurs Canada](trois_brasseurs.md) | [`breezy`](ats-breezy.md) | 11 | 73 % | 100 % | ✅ |
373 +| [Valnetinc](valnetinc.md) | [`dayforce`](ats-dayforce.md) | 13 | 0 % | 100 % | ✅ |
374 +| [AECOM](aecom2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 100 % | ✅ |
375 +| [Bilingual Customer Experience Representative (English ...](superiorplus.md) | [`dayforce`](ats-dayforce.md) | 12 | 75 % | 100 % | ✅ |
376 +| [Boralex](boralex.md) | [`dayforce`](ats-dayforce.md) | 12 | 0 % | 100 % | ✅ |
377 +| [C.H. Guenther & Son](chg.md) | [`workday`](ats-workday.md) | 12 | 58 % | 100 % | ✅ |
378 +| [Chef.fe de service de quart, soir](lantic.md) | [`dayforce`](ats-dayforce.md) | 12 | 50 % | 100 % | ✅ |
379 +| [Comptable](cloudimperiumgames.md) | [`workday`](ats-workday.md) | 12 | 0 % | 100 % | ✅ |
380 +| [Erb](erb.md) | [`dayforce`](ats-dayforce.md) | 12 | 33 % | 100 % | ✅ |
381 +| [Explorance](explorance.md) | [`bamboohr`](ats-bamboohr.md) | 12 | 0 % | 100 % | ✅ |
382 +| [Frigoriste](vantagedc.md) | [`workday`](ats-workday.md) | 12 | 0 % | 100 % | ✅ |
383 +| [Fruit d'Or](fruitdor.md) | [`ultipro`](ats-ultipro.md) | 12 | 0 % | 100 % | ✅ |
384 +| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | [`adp`](ats-adp.md) | 12 | 33 % | 100 % | ✅ |
385 +| [Hitachi](hitachi.md) | [`workday`](ats-workday.md) | 12 | 8 % | 100 % | ✅ |
386 +| [Intervenant·e au suivi psychosocial](obm.md) | [`dayforce`](ats-dayforce.md) | 12 | 0 % | 100 % | ✅ |
387 +| [Investissement Québec](investquebec.md) | [`workday`](ats-workday.md) | 12 | 0 % | 100 % | ✅ |
388 +| [Relais & Châteaux](relaischateaux.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 100 % | ✅ |
389 +| [Ryder](ryder.md) | [`workday`](ats-workday.md) | 12 | 100 % | 33 % | ✅ |
390 +| [Réseau de transport de la Capitale](rtc_quebec.md) | [`njoyn`](ats-njoyn.md) | 12 | 0 % | 0 % | ✅ |
391 +| [Senior Azure Solution Architect (Montreal – French Speaking)](accenture.md) | [`workday`](ats-workday.md) | 12 | 100 % | 42 % | ✅ |
392 +| [ZAYAT AROMA - ZAYAT AROMA](zayataroma.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 12 | 0 % | 100 % | ✅ |
393 +| [Associé(e), entretien préventif](boardwalkreit.md) | [`dayforce`](ats-dayforce.md) | 11 | 0 % | 100 % | ✅ |
390 394 | [Avantage Plus](avantageplus.md) | [`recruitee`](ats-recruitee.md) | 11 | 9 % | 100 % | ✅ |
391 −| [Ccmhockey](ccmhockey.md) | [`dayforce`](ats-dayforce.md) | 11 | 0 % | 100 % | ✅ |
392 −| [FLO (AddÉnergie)](flo_addenergie.md) | [`workable`](ats-workable.md) | 11 | 0 % | 100 % | ✅ |
393 −| [Groupe Mach](groupemach.md) | [`dayforce`](ats-dayforce.md) | 11 | 9 % | 100 % | ✅ |
394 −| [GSK](gsk.md) | [`workday`](ats-workday.md) | 11 | 0 % | 82 % | ✅ |
395 −| [HEC Montréal](hec_montreal.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 11 | 0 % | 100 % | ✅ |
396 −| [KPI Digital](kpidigital.md) | [`bamboohr`](ats-bamboohr.md) | 11 | 0 % | 100 % | ✅ |
397 −| [Logisco](logisco.md) | [`bamboohr`](ats-bamboohr.md) | 11 | 36 % | 100 % | ✅ |
398 −| [Medavie](medaviehs.md) | [`workday`](ats-workday.md) | 11 | 73 % | 0 % | ✅ |
399 −| [Mindrift](toloka_ai.md) | [`workable`](ats-workable.md) | 11 | 100 % | 100 % | ✅ |
400 −| [People Can Fly](peoplecanfly.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 11 | 0 % | 100 % | ✅ |
401 −| [Spisante](spisante.md) | [`dayforce`](ats-dayforce.md) | 11 | 0 % | 100 % | ✅ |
402 −| [Tmx](tmx.md) | [`workday`](ats-workday.md) | 11 | 0 % | 100 % | ✅ |
403 −| [TSMG](tsmg.md) | [`lever`](ats-lever.md) | 11 | 0 % | 100 % | ✅ |
404 −| [Unitytech](unitytech.md) | [`workday`](ats-workday.md) | 11 | 64 % | 100 % | ✅ |
405 −| [UV Assurance](uv_assurance.md) | [`adp`](ats-adp.md) | 11 | 0 % | 0 % | ✅ |
406 −| [Énergir](energir.md) | [`successfactors`](ats-successfactors.md) | 11 | 0 % | 100 % | ✅ |
395 +| [Bain Magique](bainmagique.md) | [`greenhouse`](ats-greenhouse.md) | 11 | 73 % | 100 % | ✅ |
396 +| [Bento Sushi](bento_sushi.md) | [`adp`](ats-adp.md) | 11 | 91 % | 100 % | ✅ |
397 +| [Cfibfcei](cfibfcei.md) | [`dayforce`](ats-dayforce.md) | 11 | 18 % | 100 % | ✅ |
398 +| [Cuisinier(ère) 2, Restaurant Marcus & Lounge (Sur appel) / Cook 2 ...](fourseasons.md) | [`workday`](ats-workday.md) | 11 | 0 % | 100 % | ✅ |
399 +| [Egon Zehnder](ezrecruiting.md) | [`workable`](ats-workable.md) | 11 | 0 % | 100 % | ✅ |
400 +| [Fempro (First Quality)](firstquality.md) | [`workday`](ats-workday.md) | 11 | 55 % | 100 % | ✅ |
401 +| [FLO (AddÉnergie)](flo_addenergie.md) | [`workable`](ats-workable.md) | 11 | 9 % | 100 % | ✅ |
402 +| [Gameloft](gameloft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 11 | 0 % | 100 % | ✅ |
403 +| [Heavy Machinery Operator](dhilmarele.md) | [`dayforce`](ats-dayforce.md) | 11 | 0 % | 100 % | ✅ |
404 +| [Humanise](humanisecollective.md) | [`teamtailor`](ats-teamtailor.md) | 11 | 0 % | 91 % | ✅ |
405 +| [Huron](huron.md) | [`workday`](ats-workday.md) | 11 | 100 % | 45 % | ✅ |
406 +| [JYSK Canada](jyskcanada.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 11 | 0 % | 100 % | ✅ |
407 +| [Quincaillerie Richelieu](richelieu.md) | [`adp`](ats-adp.md) | 11 | 0 % | 100 % | ✅ |
408 +| [Rentokil Initial](rentokil_initial.md) | [`workable`](ats-workable.md) | 11 | 73 % | 100 % | ✅ |
409 +| [Running Room Canada](runningroom.md) | [`dayforce`](ats-dayforce.md) | 11 | 0 % | 100 % | ✅ |
410 +| [SIA Innovations](siainnovationsinc.md) | [`greenhouse`](ats-greenhouse.md) | 11 | 45 % | 100 % | ✅ |
411 +| [VF Corporation (The North Face, Vans)](vfc.md) | [`workday`](ats-workday.md) | 11 | 82 % | 100 % | ✅ |
407 412 | [1perTInent inc](x1pertinentinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 0 % | 100 % | ✅ |
408 −| [Abbott](abbott.md) | [`workday`](ats-workday.md) | 10 | 20 % | 90 % | ✅ |
413 +| [3 Brasseurs Canada](trois_brasseurs.md) | [`breezy`](ats-breezy.md) | 10 | 70 % | 100 % | ✅ |
414 +| [ADI - Albert Davidson Industries](adi_albert_davidson_industries.md) | [`breezy`](ats-breezy.md) | 10 | 100 % | 100 % | ✅ |
415 +| [Administrateur comptable principal](bird.md) | [`workday`](ats-workday.md) | 10 | 0 % | 100 % | ✅ |
409 416 | [Airlab Inc.](airlabinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 0 % | 100 % | ✅ |
410 −| [BDL Énergie](bdl_energie.md) | [`breezy`](ats-breezy.md) | 10 | 0 % | 30 % | ✅ |
417 +| [AJ Walter Aviation](ajwalter.md) | [`recruitee`](ats-recruitee.md) | 10 | 0 % | 100 % | ✅ |
418 +| [BellatRx](bellatrx_inc.md) | [`breezy`](ats-breezy.md) | 10 | 0 % | 100 % | ✅ |
419 +| [Botpress](botpress.md) | [`workable`](ats-workable.md) | 10 | 0 % | 100 % | ✅ |
411 420 | [Cadence](cadence.md) | [`workday`](ats-workday.md) | 10 | 40 % | 70 % | ✅ |
412 −| [Cfibfcei](cfibfcei.md) | [`dayforce`](ats-dayforce.md) | 10 | 10 % | 100 % | ✅ |
413 −| [Eminent Valet](eminent_valet.md) | [`workable`](ats-workable.md) | 10 | 100 % | 100 % | ✅ |
414 −| [Faspac](faspac.md) | [`lever`](ats-lever.md) | 10 | 20 % | 100 % | ✅ |
421 +| [Canadian Tire](canadiantirecorporation.md) | [`workday`](ats-workday.md) | 10 | 60 % | 90 % | ✅ |
422 +| [CF Montréal](cfmontreal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 0 % | 100 % | ✅ |
423 +| [Colliers](colliers.md) | [`workday`](ats-workday.md) | 10 | 0 % | 100 % | ✅ |
424 +| [Evolving Web](evolving_web.md) | [`workable`](ats-workable.md) | 10 | 0 % | 100 % | ✅ |
415 425 | [Framestore](framestore.md) | [`recruitee`](ats-recruitee.md) | 10 | 0 % | 100 % | ✅ |
416 −| [Frigoriste](vantagedc.md) | [`workday`](ats-workday.md) | 10 | 0 % | 100 % | ✅ |
417 −| [Groupe PMI](groupepmi.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 10 | 50 % | 0 % | ✅ |
426 +| [Groupe PMI](groupepmi.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 10 | 50 % | 100 % | ✅ |
418 427 | [Groupe Scandinave (Scandinave Spa)](gscandinave.md) | [`dayforce`](ats-dayforce.md) | 10 | 0 % | 100 % | ✅ |
419 −| [Hitachi](hitachi.md) | [`workday`](ats-workday.md) | 10 | 10 % | 100 % | ✅ |
420 −| [JYSK Canada](jyskcanada.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 20 % | 80 % | ✅ |
421 −| [Manitoulin Group of Companies](manitoulingroupofcompanies.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 30 % | 100 % | ✅ |
428 +| [Lapresse2018Inc](lapresse2018inc.md) | [`dayforce`](ats-dayforce.md) | 10 | 0 % | 100 % | ✅ |
429 +| [Logisco](logisco.md) | [`bamboohr`](ats-bamboohr.md) | 10 | 10 % | 100 % | ✅ |
430 +| [Luqia (INO)](ino_ca.md) | [`breezy`](ats-breezy.md) | 10 | 0 % | 100 % | ✅ |
431 +| [Merchandising Consultants Associates](merchandising_consultants_associates.md) | [`breezy`](ats-breezy.md) | 10 | 100 % | 100 % | ✅ |
422 432 | [Mirego](mirego.md) | [`lever`](ats-lever.md) | 10 | 0 % | 100 % | ✅ |
423 −| [Nortekinc](nortekinc.md) | [`workday`](ats-workday.md) | 10 | 50 % | 100 % | ✅ |
424 −| [Pyrotek](pyrotek3.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 100 % | 90 % | ✅ |
425 433 | [R&D Partners](rdpartners1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 0 % | 100 % | ✅ |
434 +| [Robotiq](robotiq.md) | [`bamboohr`](ats-bamboohr.md) | 10 | 0 % | 100 % | ✅ |
426 435 | [Royal Vet](royalvet.md) | [`greenhouse`](ats-greenhouse.md) | 10 | 0 % | 100 % | ✅ |
427 −| [Sales Associate-Retail](roots.md) | [`dayforce`](ats-dayforce.md) | 10 | 0 % | 100 % | ✅ |
428 −| [Sika Canada](sikaag.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 0 % | 100 % | ✅ |
429 −| [Stay22](stay22.md) | [`greenhouse`](ats-greenhouse.md) | 10 | 0 % | 100 % | ✅ |
436 +| [Stay22](stay22.md) | [`greenhouse`](ats-greenhouse.md) | 10 | 10 % | 100 % | ✅ |
430 437 | [Technica Mining](technica_mining.md) | [`breezy`](ats-breezy.md) | 10 | 0 % | 10 % | ✅ |
431 −| [Telesat](telesat.md) | [`lever`](ats-lever.md) | 10 | 0 % | 100 % | ✅ |
432 438 | [Tetrix](tetrix.md) | [`ashby`](ats-ashby.md) | 10 | 100 % | 10 % | ✅ |
433 −| [VF Corporation (The North Face, Vans)](vfc.md) | [`workday`](ats-workday.md) | 10 | 80 % | 100 % | ✅ |
439 +| [Toboggan Labs](tobogganlabs.md) | [`greenhouse`](ats-greenhouse.md) | 10 | 0 % | 100 % | ✅ |
434 440 | [act digital](altersolutions.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 0 % | 100 % | ✅ |
435 −| [ADI - Albert Davidson Industries](adi_albert_davidson_industries.md) | [`breezy`](ats-breezy.md) | 9 | 100 % | 100 % | ✅ |
436 −| [AlayaCare](alayacare.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 100 % | ✅ |
437 −| [Alo Yoga](aloyoga.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 78 % | ✅ |
438 −| [Altg](altg.md) | [`dayforce`](ats-dayforce.md) | 9 | 11 % | 100 % | ✅ |
439 −| [Altitude Sports](altitude_sports.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 9 | 33 % | 0 % | ✅ |
440 −| [Associé(e), entretien préventif](boardwalkreit.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
441 −| [Bento Sushi](bento_sushi.md) | [`adp`](ats-adp.md) | 9 | 89 % | 100 % | ✅ |
442 −| [Botpress](botpress.md) | [`workable`](ats-workable.md) | 9 | 0 % | 100 % | ✅ |
443 −| [Canada Vie](canada_vie.md) | [`successfactors`](ats-successfactors.md) | 9 | 0 % | 0 % | ✅ |
444 −| [Canadian Tire](canadiantirecorporation.md) | [`workday`](ats-workday.md) | 9 | 56 % | 100 % | ✅ |
445 −| [CAPREIT](capreit.md) | [`icims`](ats-icims.md) | 9 | 0 % | 100 % | ✅ |
446 −| [Cominar](cominar.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
447 −| [EDF Renouvelables Canada](edf_renouvelables.md) | [`icims`](ats-icims.md) | 9 | 78 % | 67 % | ✅ |
448 −| [Eldoradogold](eldoradogold.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
449 −| [Fieracapital](fieracapital.md) | [`workday`](ats-workday.md) | 9 | 0 % | 100 % | ✅ |
450 −| [Hasbro](hasbro.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 100 % | ✅ |
441 +| [Avisbudget](avisbudget.md) | [`workday`](ats-workday.md) | 9 | 11 % | 100 % | ✅ |
442 +| [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 9 | 0 % | 100 % | ✅ |
443 +| [Chef d'équipe Agile](aspentech.md) | [`workday`](ats-workday.md) | 9 | 0 % | 100 % | ✅ |
444 +| [Cloud Chamber](cloudchamberen.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 100 % | ✅ |
445 +| [Cloud Chamber Montréal](cloudchamberfr.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 100 % | ✅ |
446 +| [Coordinateur, Achats Numériques](dentsuaegis.md) | [`workday`](ats-workday.md) | 9 | 89 % | 89 % | ✅ |
447 +| [Cornerstone Building Brands](cornerstonebuildingbrandscareers.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 22 % | 100 % | ✅ |
448 +| [Devimco Appartements](devimco.md) | [`bamboohr`](ats-bamboohr.md) | 9 | 11 % | 100 % | ✅ |
449 +| [Distro](distro.md) | [`lever`](ats-lever.md) | 9 | 89 % | 100 % | ✅ |
450 +| [EDF Renouvelables Canada](edf_renouvelables.md) | [`icims`](ats-icims.md) | 9 | 89 % | 78 % | ✅ |
451 +| [EMD-Batimo](batimoinc.md) | [`bamboohr`](ats-bamboohr.md) | 9 | 0 % | 100 % | ✅ |
452 +| [Fccfac](fccfac.md) | [`workday`](ats-workday.md) | 9 | 100 % | 44 % | ✅ |
453 +| [Fonds de solidarité FTQ](fondsftq.md) | [`workday`](ats-workday.md) | 9 | 0 % | 100 % | ✅ |
454 +| [GURUS Solutions](gurussolutions.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 100 % | ✅ |
455 +| [HEC Montréal](hec_montreal.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 9 | 0 % | 100 % | ✅ |
456 +| [HEC Montréal — corps professoral](hec_montreal_profs.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 9 | 0 % | 100 % | ✅ |
457 +| [Indigo Books & Music](indigobooksmusic.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 0 % | 100 % | ✅ |
451 458 | [J'Excelle](jexcelleinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 0 % | 100 % | ✅ |
452 −| [Journalier(ère) de production](vestis.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
453 −| [Lapresse2018Inc](lapresse2018inc.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
454 −| [Les Excavations Lafontaine Inc.](lafontaineinc.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 9 | 0 % | 0 % | ✅ |
459 +| [Josephribkoff](josephribkoff.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
455 460 | [LGT](lgt1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 0 % | 100 % | ✅ |
456 −| [Lindt & Sprüngli Canada](lindt_sprunglicanada.md) | [`breezy`](ats-breezy.md) | 9 | 0 % | 100 % | ✅ |
457 −| [Nora Pharma](nora_pharma.md) | [`breezy`](ats-breezy.md) | 9 | 100 % | 89 % | ✅ |
458 −| [Oliver & Bonacini](oliverbonacini.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 11 % | 100 % | ✅ |
459 −| [Portage CyberTech](portagecybertech.md) | [`bamboohr`](ats-bamboohr.md) | 9 | 44 % | 100 % | ✅ |
460 −| [Rentokil Initial](rentokil_initial.md) | [`workable`](ats-workable.md) | 9 | 89 % | 100 % | ✅ |
461 −| [SIA Innovations](siainnovationsinc.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 44 % | 100 % | ✅ |
462 −| [Sun Life](sunlife.md) | [`workday`](ats-workday.md) | 9 | 22 % | 100 % | ✅ |
461 +| [LIDD Consultants](lidd.md) | [`workable`](ats-workable.md) | 9 | 0 % | 100 % | ✅ |
462 +| [Manitoulin Group of Companies](manitoulingroupofcompanies.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 22 % | 100 % | ✅ |
463 +| [Nationex](nationex.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
464 +| [Nuovo Photography](nuovophotography.md) | [`workable`](ats-workable.md) | 9 | 22 % | 100 % | ✅ |
465 +| [Puma](puma.md) | [`workday`](ats-workday.md) | 9 | 100 % | 100 % | ✅ |
463 466 | [Utask](utask.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 0 % | 100 % | ✅ |
464 −| [Valtech](valtech.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 11 % | 100 % | ✅ |
467 +| [Vice-President, Strategic Procurement](eddyfi.md) | [`dayforce`](ats-dayforce.md) | 9 | 0 % | 100 % | ✅ |
465 468 | [4Refuel](4refuel.md) | [`dayforce`](ats-dayforce.md) | 8 | 25 % | 100 % | ✅ |
466 −| [AbbVie](abbvie.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
467 −| [AJ Walter Aviation](ajwalter.md) | [`recruitee`](ats-recruitee.md) | 8 | 0 % | 100 % | ✅ |
468 −| [Artefact North America](artefactnoram.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 50 % | 100 % | ✅ |
469 +| [Agile DSS](agiledss.md) | [`recruitee`](ats-recruitee.md) | 8 | 0 % | 100 % | ✅ |
470 +| [Allegion](allegion.md) | [`workday`](ats-workday.md) | 8 | 62 % | 100 % | ✅ |
471 +| [Associé (e) d'entrepôt](cardinalhealth.md) | [`workday`](ats-workday.md) | 8 | 62 % | 88 % | ✅ |
472 +| [Behavox](behavox.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 12 % | 100 % | ✅ |
469 473 | [Big Bang](bigbang.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 25 % | 100 % | ✅ |
470 −| [Bloom](makeitbloom.md) | [`jazzhr`](ats-jazzhr.md) | 8 | 0 % | 0 % | ✅ |
474 +| [Blgllp](blgllp.md) | [`workday`](ats-workday.md) | 8 | 25 % | 75 % | ✅ |
471 475 | [Canadian Helicopters](canadianhelicopters.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
472 −| [CF Montréal](cfmontreal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
473 −| [Comptable de projet / Project Accountant](ellisdon.md) | [`workday`](ats-workday.md) | 8 | 25 % | 100 % | ✅ |
474 −| [Coordinateur, Achats Numériques](dentsuaegis.md) | [`workday`](ats-workday.md) | 8 | 100 % | 88 % | ✅ |
475 −| [Egon Zehnder](ezrecruiting.md) | [`workable`](ats-workable.md) | 8 | 0 % | 100 % | ✅ |
476 −| [Exportation et développement Canada (EDC)](export_development_canada.md) | [`workable`](ats-workable.md) | 8 | 88 % | 100 % | ✅ |
477 −| [Groupe Meloche](melocheinc.md) | [`workday`](ats-workday.md) | 8 | 88 % | 0 % | ✅ |
478 −| [GURUS Solutions](gurussolutions.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ |
479 −| [H2O Innovation](h2o_innovation.md) | [`adp`](ats-adp.md) | 8 | 12 % | 0 % | ✅ |
480 −| [Indigo Books & Music](indigobooksmusic.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
481 −| [Liberty Mutual Canada](liberty_mutual_canada.md) | [`workable`](ats-workable.md) | 8 | 0 % | 100 % | ✅ |
482 −| [Lyft](lyft.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 100 % | 100 % | ✅ |
476 +| [CAPREIT](capreit.md) | [`icims`](ats-icims.md) | 8 | 0 % | 100 % | ✅ |
477 +| [eStruxture](estruxture.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 12 % | 100 % | ✅ |
478 +| [GoMaterials](gomaterials.md) | [`lever`](ats-lever.md) | 8 | 0 % | 100 % | ✅ |
479 +| [Groupemarcelle](groupemarcelle.md) | [`dayforce`](ats-dayforce.md) | 8 | 12 % | 100 % | ✅ |
480 +| [Hasbro](hasbro.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ |
481 +| [KPI Digital](kpidigital.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 0 % | 100 % | ✅ |
483 482 | [MalOPlus Group](maloplusteleservices.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 0 % | ✅ |
484 483 | [MalOPlus Group Inc.](maloplusteleservices1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
485 −| [Mila — Institut québécois d'IA](mila_2.md) | [`workable`](ats-workable.md) | 8 | 0 % | 100 % | ✅ |
486 −| [New York Holdings](new_york_holdings.md) | [`breezy`](ats-breezy.md) | 8 | 12 % | 100 % | ✅ |
484 +| [Mejuri](mejuri.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 75 % | 100 % | ✅ |
485 +| [Moneris](moneris.md) | [`workday`](ats-workday.md) | 8 | 100 % | 88 % | ✅ |
486 +| [Nora Pharma](nora_pharma.md) | [`breezy`](ats-breezy.md) | 8 | 100 % | 88 % | ✅ |
487 +| [North West Rubber](northwestrubber.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 12 % | 100 % | ✅ |
488 +| [Northbridgefinancial](northbridgefinancial.md) | [`workday`](ats-workday.md) | 8 | 0 % | 100 % | ✅ |
487 489 | [O-I](o_i.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 50 % | 100 % | ✅ |
488 −| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | [`icims`](ats-icims.md) | 8 | 88 % | 100 % | ✅ |
489 −| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | [`icims`](ats-icims.md) | 8 | 88 % | 100 % | ✅ |
490 −| [Préparateur de commandes](sysco.md) | [`workday`](ats-workday.md) | 8 | 0 % | 100 % | ✅ |
491 −| [Terrapure](terrapure.md) | [`dayforce`](ats-dayforce.md) | 8 | 12 % | 100 % | ✅ |
492 −| [Toboggan Labs](tobogganlabs.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ |
493 −| [Trackforce](tracktik.md) | [`lever`](ats-lever.md) | 8 | 12 % | 62 % | ✅ |
494 −| [Turner & Townsend](turnertownsend.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 50 % | 100 % | ✅ |
495 −| [Turning Point Brands Canada](recreationmarketing.md) | [`jazzhr`](ats-jazzhr.md) | 8 | 0 % | 0 % | ✅ |
496 −| [Alveole](alveole.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 71 % | 100 % | ✅ |
497 −| [ARC'TERYX](arcteryx_com.md) | [`lever`](ats-lever.md) | 7 | 71 % | 100 % | ✅ |
498 −| [Associé (e) d'entrepôt](cardinalhealth.md) | [`workday`](ats-workday.md) | 7 | 71 % | 100 % | ✅ |
499 −| [Associé principal (Ressources de gestion)](roberthalf.md) | [`workday`](ats-workday.md) | 7 | 0 % | 71 % | ✅ |
500 −| [BETA Technologies](betatechnologiesinc.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 86 % | 100 % | ✅ |
501 −| [Blgllp](blgllp.md) | [`workday`](ats-workday.md) | 7 | 0 % | 100 % | ✅ |
502 −| [Carrier](carrier.md) | [`workday`](ats-workday.md) | 7 | 43 % | 0 % | ✅ |
490 +| [Optel Group](optelgroup.md) | [`jazzhr`](ats-jazzhr.md) | 8 | 0 % | 100 % | ✅ |
491 +| [People Can Fly](peoplecanfly.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
492 +| [Prep Academy Tutors](prep_academy_tutors.md) | [`breezy`](ats-breezy.md) | 8 | 100 % | 100 % | ✅ |
493 +| [Sales Associate-Retail](roots.md) | [`dayforce`](ats-dayforce.md) | 8 | 0 % | 100 % | ✅ |
494 +| [Sid Lee](sidlee.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ |
495 +| [Spiria](spiria.md) | [`lever`](ats-lever.md) | 8 | 62 % | 100 % | ✅ |
496 +| [STAS](stasinc.md) | [`recruitee`](ats-recruitee.md) | 8 | 0 % | 100 % | ✅ |
497 +| [Sweat Pants Agency](sweat_pants_agency.md) | [`workable`](ats-workable.md) | 8 | 25 % | 100 % | ✅ |
498 +| [Telesat](telesat.md) | [`lever`](ats-lever.md) | 8 | 0 % | 100 % | ✅ |
499 +| [ThirdChannel](thirdchannel_inc.md) | [`breezy`](ats-breezy.md) | 8 | 100 % | 100 % | ✅ |
500 +| [Trackforce](tracktik.md) | [`lever`](ats-lever.md) | 8 | 38 % | 75 % | ✅ |
501 +| [Valtech](valtech.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ |
502 +| [Abbott](abbott.md) | [`workday`](ats-workday.md) | 7 | 14 % | 100 % | ✅ |
503 +| [Administration portuaire de Québec](portquebec.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
504 +| [Aliaxis](aliaxis.md) | [`workday`](ats-workday.md) | 7 | 43 % | 86 % | ✅ |
505 +| [Alo Yoga](aloyoga.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 0 % | 57 % | ✅ |
506 +| [Altg](altg.md) | [`dayforce`](ats-dayforce.md) | 7 | 14 % | 100 % | ✅ |
507 +| [Artefact North America](artefactnoram.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 57 % | 100 % | ✅ |
508 +| [CEP Forensique](cep.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
503 509 | [Chagall Design](chagalldesign.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 0 % | 100 % | ✅ |
504 −| [Ciena](ciena.md) | [`workday`](ats-workday.md) | 7 | 14 % | 57 % | ✅ |
505 −| [Colliers](colliers.md) | [`workday`](ats-workday.md) | 7 | 0 % | 100 % | ✅ |
506 −| [CSC Generation](cscgeneration_2.md) | [`lever`](ats-lever.md) | 7 | 0 % | 100 % | ✅ |
507 −| [CTS Foods Brokers](cts_foods_brokers_inc.md) | [`workable`](ats-workable.md) | 7 | 29 % | 100 % | ✅ |
508 −| [Devimco Appartements](devimco.md) | [`bamboohr`](ats-bamboohr.md) | 7 | 14 % | 100 % | ✅ |
509 −| [Devoted Studios](devoted_studios_1.md) | [`workable`](ats-workable.md) | 7 | 0 % | 100 % | ✅ |
510 −| [Distro](distro.md) | [`lever`](ats-lever.md) | 7 | 100 % | 100 % | ✅ |
511 −| [E-Commerce Shipping Associate](slg001.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
512 −| [Expresco Foods](exprescofoods.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 14 % | 100 % | ✅ |
513 −| [Fonds de solidarité FTQ](fondsftq.md) | [`workday`](ats-workday.md) | 7 | 0 % | 100 % | ✅ |
514 −| [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
515 −| [Global Excel Management](globalexcel.md) | [`icims`](ats-icims.md) | 7 | 57 % | 0 % | ✅ |
516 −| [Haemonetics](haemonetics.md) | [`workday`](ats-workday.md) | 7 | 0 % | 0 % | ✅ |
517 −| [Heavy Machinery Operator](dhilmarele.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
518 −| [Highdive](highdive.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 0 % | 100 % | ✅ |
510 +| [Challenger Motor Freight Inc.](challenger.md) | [`jazzhr`](ats-jazzhr.md) | 7 | 43 % | 100 % | ✅ |
511 +| [Chanel](cc.md) | [`workday`](ats-workday.md) | 7 | 14 % | 100 % | ✅ |
512 +| [Chef de secteur](gsknch.md) | [`workday`](ats-workday.md) | 7 | 0 % | 100 % | ✅ |
513 +| [Cook It](cookit.md) | [`adp`](ats-adp.md) | 7 | 100 % | 100 % | ✅ |
514 +| [Dulcedo Management](dulcedo.md) | [`lever`](ats-lever.md) | 7 | 71 % | 86 % | ✅ |
515 +| [Eidos-Montréal](eidosmontreal.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
516 +| [Eldoradogold](eldoradogold.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
517 +| [Eminent Valet](eminent_valet.md) | [`workable`](ats-workable.md) | 7 | 100 % | 100 % | ✅ |
518 +| [Groupe Montoni](groupemontoni.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 14 % | 100 % | ✅ |
519 +| [Haemonetics](haemonetics.md) | [`workday`](ats-workday.md) | 7 | 0 % | 100 % | ✅ |
519 520 | [Human Agency](humanagency.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 0 % | 100 % | ✅ |
520 521 | [Hydrogen Research Institute](hydrogenresearchinstitute.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 14 % | 100 % | ✅ |
521 522 | [Innovation RH inc.](innovationrh.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 14 % | 100 % | ✅ |
522 −| [John Brooks Company](john_brooks_company.md) | [`workable`](ats-workable.md) | 7 | 57 % | 100 % | ✅ |
523 −| [Levittsafety](levittsafety.md) | [`dayforce`](ats-dayforce.md) | 7 | 71 % | 100 % | ✅ |
524 −| [LifeStance Health](lifestance.md) | [`lever`](ats-lever.md) | 7 | 100 % | 100 % | ✅ |
525 −| [Luqia (INO)](ino_ca.md) | [`breezy`](ats-breezy.md) | 7 | 0 % | 100 % | ✅ |
523 +| [Liftow](liftow.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
524 +| [Lush Cosmétiques](lush.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 100 % | 100 % | ✅ |
526 525 | [Manœuvre générale](athos.md) | [`dayforce`](ats-dayforce.md) | 7 | 57 % | 100 % | ✅ |
527 526 | [McWane Canada](mcwanecanada.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 57 % | 100 % | ✅ |
528 −| [Mejuri](mejuri.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 71 % | 100 % | ✅ |
529 −| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | [`adp`](ats-adp.md) | 7 | 43 % | 100 % | ✅ |
530 −| [Msd](msd.md) | [`workday`](ats-workday.md) | 7 | 86 % | 100 % | ✅ |
531 −| [Nationex](nationex.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ |
532 −| [Nexapp](nexapp.md) | [`bamboohr`](ats-bamboohr.md) | 7 | 0 % | 100 % | ✅ |
533 −| [Northbridgefinancial](northbridgefinancial.md) | [`workday`](ats-workday.md) | 7 | 0 % | 100 % | ✅ |
534 −| [Nuovo Photography](nuovophotography.md) | [`workable`](ats-workable.md) | 7 | 29 % | 100 % | ✅ |
535 −| [Pfizer Canada](pfizer.md) | [`workday`](ats-workday.md) | 7 | 100 % | 43 % | ✅ |
536 −| [Prep Academy Tutors](prep_academy_tutors.md) | [`breezy`](ats-breezy.md) | 7 | 100 % | 100 % | ✅ |
537 −| [Responsable bilingue du marketing événementiel / Event ...](fil.md) | [`workday`](ats-workday.md) | 7 | 100 % | 100 % | ✅ |
538 −| [Sweeney Conrad](sweeneyconrad.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 100 % | 100 % | ✅ |
527 +| [Mistral AI](mistral_ai.md) | [`ashby`](ats-ashby.md) | 7 | 0 % | 71 % | ✅ |
539 528 | [Trigyn Technologies](trigyntechnologies1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 0 % | 100 % | ✅ |
540 −| [US Mobile](usmobile.md) | [`lever`](ats-lever.md) | 7 | 100 % | 100 % | ✅ |
541 −| [Ville de Mirabel](ville_mirabel.md) | [`njoyn`](ats-njoyn.md) | 7 | 100 % | 0 % | ✅ |
542 −| [2026 GameChanger Scholarship Application](kabam.md) | [`lever`](ats-lever.md) | 6 | 17 % | 100 % | ✅ |
543 −| [Abritek](abritek.md) | [`adp`](ats-adp.md) | 6 | 100 % | 0 % | ✅ |
529 +| [Tsys](tsys.md) | [`workday`](ats-workday.md) | 7 | 43 % | 57 % | ✅ |
530 +| [Turning Point Brands Canada](recreationmarketing.md) | [`jazzhr`](ats-jazzhr.md) | 7 | 0 % | 100 % | ✅ |
531 +| [2026 GameChanger Scholarship Application](kabam.md) | [`lever`](ats-lever.md) | 6 | 33 % | 100 % | ✅ |
544 532 | [Accedian Networks](accediannetworks.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
545 −| [Administration portuaire de Québec](portquebec.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
546 −| [Aliaxis](aliaxis.md) | [`workday`](ats-workday.md) | 6 | 33 % | 0 % | ✅ |
547 −| [Also Recrutement - Carrière](alsorecrutement.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 17 % | 0 % | ✅ |
548 −| [Altitude Aerospace](altitudeaerospace.md) | [`jazzhr`](ats-jazzhr.md) | 6 | 17 % | 0 % | ✅ |
549 −| [Averna](averna1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
550 −| [Behavox](behavox.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 0 % | 100 % | ✅ |
551 −| [CAM Mécanique](cammecanique.md) | [`teamtailor`](ats-teamtailor.md) | 6 | 0 % | 0 % | ✅ |
552 −| [CEP Forensique](cep.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
553 −| [Challenger Motor Freight Inc.](challenger.md) | [`jazzhr`](ats-jazzhr.md) | 6 | 67 % | 0 % | ✅ |
554 −| [Chanel](cc.md) | [`workday`](ats-workday.md) | 6 | 17 % | 0 % | ✅ |
555 −| [Church & Dwight Canada](churchdwight.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
556 −| [Citronhygiene](citronhygiene.md) | [`dayforce`](ats-dayforce.md) | 6 | 100 % | 100 % | ✅ |
557 −| [Cook It](cookit.md) | [`adp`](ats-adp.md) | 6 | 100 % | 0 % | ✅ |
558 −| [Cornerstone Building Brands](cornerstonebuildingbrandscareers.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 33 % | 100 % | ✅ |
559 −| [Cultures Gen V](cultures_genv.md) | [`adp`](ats-adp.md) | 6 | 33 % | 100 % | ✅ |
560 −| [Daniels Health Canada](daniels_sharpsmart.md) | [`lever`](ats-lever.md) | 6 | 17 % | 33 % | ✅ |
561 −| [delisoft](delisoft.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 0 % | 0 % | ✅ |
562 −| [EQ Bank](eqbank.md) | [`lever`](ats-lever.md) | 6 | 50 % | 50 % | ✅ |
563 −| [eStruxture](estruxture.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 17 % | 0 % | ✅ |
564 −| [FinDev Canada](findevcanada.md) | [`workable`](ats-workable.md) | 6 | 67 % | 100 % | ✅ |
565 −| [Fortigo Freight Services Inc.](fortigofreightservicesinc.md) | [`jazzhr`](ats-jazzhr.md) | 6 | 17 % | 0 % | ✅ |
566 −| [Ggi](ggi.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
533 +| [Alimentiv](alimentiv_2.md) | [`lever`](ats-lever.md) | 6 | 100 % | 17 % | ✅ |
534 +| [Also Recrutement - Carrière](alsorecrutement.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 17 % | 50 % | ✅ |
535 +| [Alveole](alveole.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 100 % | 100 % | ✅ |
536 +| [Associé principal (Ressources de gestion)](roberthalf.md) | [`workday`](ats-workday.md) | 6 | 0 % | 67 % | ✅ |
537 +| [Avocat·e de litige / Litigation Associate](clydeco.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
538 +| [BETA Technologies](betatechnologiesinc.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 83 % | 100 % | ✅ |
539 +| [Brasseries Sleeman (Unibroue)](sleeman.md) | [`workday`](ats-workday.md) | 6 | 17 % | 83 % | ✅ |
540 +| [CAM Mécanique](cammecanique.md) | [`teamtailor`](ats-teamtailor.md) | 6 | 0 % | 100 % | ✅ |
541 +| [Cerence](cerence.md) | [`workday`](ats-workday.md) | 6 | 50 % | 33 % | ✅ |
542 +| [Continental Group Sector ContiTech](continentalgroupsectorcontitech.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 17 % | 100 % | ✅ |
543 +| [delisoft](delisoft.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 0 % | 100 % | ✅ |
544 +| [Ensiti](ensiti.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
545 +| [Expresco Foods](exprescofoods.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 17 % | 100 % | ✅ |
546 +| [Fastco Canada](fastcocanada.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
547 +| [Field Mechanic](bly.md) | [`dayforce`](ats-dayforce.md) | 6 | 100 % | 100 % | ✅ |
548 +| [Flynn Group of Companies](flynncompanies.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ |
567 549 | [GHGSAT](ghgsat.md) | [`workable`](ats-workable.md) | 6 | 0 % | 100 % | ✅ |
568 −| [GoMaterials](gomaterials.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ |
569 −| [Intersand](intersand.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
570 −| [Jci](jci.md) | [`workday`](ats-workday.md) | 6 | 100 % | 100 % | ✅ |
571 −| [Keel Infrastructure](keelinfrastructure.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 0 % | 100 % | ✅ |
572 −| [LFG Construction](lfgconstruction.md) | [`teamtailor`](ats-teamtailor.md) | 6 | 17 % | 0 % | ✅ |
573 −| [Liftow](liftow.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
550 +| [Groupe Meloche](melocheinc.md) | [`workday`](ats-workday.md) | 6 | 100 % | 100 % | ✅ |
551 +| [Hpe](hpe.md) | [`workday`](ats-workday.md) | 6 | 0 % | 50 % | ✅ |
552 +| [Iqvia](iqvia.md) | [`workday`](ats-workday.md) | 6 | 100 % | 50 % | ✅ |
553 +| [ISAAC Instruments](isaacinstruments.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
554 +| [Ivalua](ivalua.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 0 % | 100 % | ✅ |
574 555 | [Logistics Associate](harry.md) | [`workday`](ats-workday.md) | 6 | 17 % | 100 % | ✅ |
575 −| [LRDG (Language Research Development Group)](lrdgonline.md) | [`lever`](ats-lever.md) | 6 | 100 % | 100 % | ✅ |
556 +| [Maintenance Expert M.S.L.G](maintenancexpert.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 100 % | 17 % | ✅ |
576 557 | [Maquette Virtuelle](maquettevirtuelle.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ |
558 +| [Mattel (Mega Bloks)](mattelinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
577 559 | [MXO](mxo.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 83 % | 100 % | ✅ |
560 +| [Nortekinc](nortekinc.md) | [`workday`](ats-workday.md) | 6 | 33 % | 100 % | ✅ |
561 +| [Nrfcanada](nrfcanada.md) | [`workday`](ats-workday.md) | 6 | 67 % | 33 % | ✅ |
562 +| [Nssl](nssl.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
578 563 | [Oldcastle BuildingEnvelope](oldcastlebuildingenvelope.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 0 % | 100 % | ✅ |
579 −| [Petal](petalmd.md) | [`recruitee`](ats-recruitee.md) | 6 | 0 % | 100 % | ✅ |
580 −| [Puma](puma.md) | [`workday`](ats-workday.md) | 6 | 100 % | 100 % | ✅ |
564 +| [Petal](petalmd.md) | [`recruitee`](ats-recruitee.md) | 6 | 17 % | 100 % | ✅ |
565 +| [Raymond Chabot Grant Thornton](rcgt.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
581 566 | [Right Talent Right Now](righttalentrightnow.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
582 −| [Robotiq](robotiq.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 0 % | 100 % | ✅ |
583 −| [RTINGS.com (FR)](laboratoirertingscom.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 83 % | 100 % | ✅ |
584 −| [Sel Windsor (Mines Seleine)](selwindsor.md) | [`ultipro`](ats-ultipro.md) | 6 | 0 % | 0 % | ✅ |
585 −| [STAS](stasinc.md) | [`recruitee`](ats-recruitee.md) | 6 | 0 % | 100 % | ✅ |
586 −| [Sweat Pants Agency](sweat_pants_agency.md) | [`workable`](ats-workable.md) | 6 | 50 % | 100 % | ✅ |
587 −| [ThirdChannel](thirdchannel_inc.md) | [`breezy`](ats-breezy.md) | 6 | 100 % | 100 % | ✅ |
588 −| [Warner Bros. Discovery (WB Games Montréal)](warnerbros.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
589 −| [WestGroupe](westgroupe.md) | [`jazzhr`](ats-jazzhr.md) | 6 | 0 % | 0 % | ✅ |
567 +| [Sbdinc](sbdinc.md) | [`workday`](ats-workday.md) | 6 | 83 % | 100 % | ✅ |
568 +| [Synertek](synertek.md) | [`teamtailor`](ats-teamtailor.md) | 6 | 67 % | 100 % | ✅ |
569 +| [Syntronic](syntronic.md) | [`lever`](ats-lever.md) | 6 | 17 % | 100 % | ✅ |
570 +| [TEN Canada (Transportation Equipment Network)](ten_canada.md) | [`breezy`](ats-breezy.md) | 6 | 17 % | 67 % | ✅ |
571 +| [Terrapure](terrapure.md) | [`dayforce`](ats-dayforce.md) | 6 | 17 % | 100 % | ✅ |
572 +| [Turner & Townsend](turnertownsend.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 33 % | 100 % | ✅ |
573 +| [Vendeur 3ème Clé (Thirdy Key)](fossil.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
590 574 | [Yaksa](yaksa.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ |
591 −| [Acumatica](acumatica.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 5 | 0 % | 100 % | ✅ |
575 +| [36Pix](pix36.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 0 % | 100 % | ✅ |
592 576 | [Adèle Express](adeleexpressfr.md) | [`recruitee`](ats-recruitee.md) | 5 | 60 % | 100 % | ✅ |
593 577 | [Air Canada Rouge](acadierouge.md) | [`dayforce`](ats-dayforce.md) | 5 | 20 % | 100 % | ✅ |
594 578 | [Alphanumeric Systems](alphanumeric_systems.md) | [`breezy`](ats-breezy.md) | 5 | 100 % | 100 % | ✅ |
579 +| [Altitude Aerospace](altitudeaerospace.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 0 % | 100 % | ✅ |
580 +| [ARC'TERYX](arcteryx_com.md) | [`lever`](ats-lever.md) | 5 | 80 % | 100 % | ✅ |
581 +| [Architecte Salesforce Sommaire](jam.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
582 +| [Associé au Marketing et Opérations Clients – Est](diageo.md) | [`workday`](ats-workday.md) | 5 | 100 % | 100 % | ✅ |
583 +| [Astucemedia](astucemedia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 5 | 0 % | 100 % | ✅ |
595 584 | [Aviya Aerospace Systems](aviyatech.md) | [`lever`](ats-lever.md) | 5 | 0 % | 100 % | ✅ |
596 −| [Avocat·e de litige / Litigation Associate](clydeco.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
597 −| [Bain Magique](bainmagique.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 100 % | 100 % | ✅ |
598 −| [Bardel Entertainment](bardel_entertainment.md) | [`workable`](ats-workable.md) | 5 | 100 % | 100 % | ✅ |
599 −| [C.H. Guenther & Son](chg.md) | [`workday`](ats-workday.md) | 5 | 40 % | 0 % | ✅ |
600 −| [Capco](capco.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 100 % | 100 % | ✅ |
601 −| [CWP Energy](mcgillstlaurent.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 0 % | 0 % | ✅ |
602 −| [DoorDash Quebec](doordashquebec.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 60 % | 100 % | ✅ |
603 −| [Ensiti](ensiti.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 5 | 0 % | 100 % | ✅ |
604 −| [ePac Flexible Packaging](epacllc.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 60 % | 0 % | ✅ |
605 −| [Flynn Group of Companies](flynncompanies.md) | [`lever`](ats-lever.md) | 5 | 0 % | 100 % | ✅ |
606 −| [FOREMAN ASSISTANT SHIPPING RECEIVING](benmor.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
607 −| [Galderma](galderma.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
608 −| [Gategroup](gategroup.md) | [`workday`](ats-workday.md) | 5 | 60 % | 100 % | ✅ |
609 −| [Groupenorbec](groupenorbec.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
610 −| [Hopper](hopper.md) | [`ashby`](ats-ashby.md) | 5 | 0 % | 60 % | ✅ |
611 −| [Insomnia Cookies](insomniacookies.md) | [`lever`](ats-lever.md) | 5 | 20 % | 100 % | ✅ |
612 −| [Interpublic](interpublic.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
613 −| [Kestra Medical Technologies Inc.](kestramedicaltechnologiesinc.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 80 % | 100 % | ✅ |
614 −| [Kiongroup](kiongroup.md) | [`workday`](ats-workday.md) | 5 | 80 % | 80 % | ✅ |
615 −| [Lighting](lighting.md) | [`workday`](ats-workday.md) | 5 | 100 % | 100 % | ✅ |
616 −| [Ludia / Jam City](ludia.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 0 % | 100 % | ✅ |
617 −| [Lush Cosmétiques](lush.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 100 % | 100 % | ✅ |
618 −| [Marcus evans](marcusevanscareers.md) | [`recruitee`](ats-recruitee.md) | 5 | 60 % | 100 % | ✅ |
619 −| [Medline](medline.md) | [`workday`](ats-workday.md) | 5 | 100 % | 100 % | ✅ |
620 −| [Mistral AI](mistral_ai.md) | [`ashby`](ats-ashby.md) | 5 | 0 % | 100 % | ✅ |
585 +| [Bath Fitter Corporate](bathfitterdistributinginc.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 60 % | 100 % | ✅ |
586 +| [Bdx](bdx.md) | [`workday`](ats-workday.md) | 5 | 40 % | 80 % | ✅ |
587 +| [Broadsign](broadsign.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 0 % | 100 % | ✅ |
588 +| [Broadsign](broadsignfr.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 0 % | 100 % | ✅ |
589 +| [Carrier](carrier.md) | [`workday`](ats-workday.md) | 5 | 80 % | 60 % | ✅ |
590 +| [Ciena](ciena.md) | [`workday`](ats-workday.md) | 5 | 40 % | 60 % | ✅ |
591 +| [Cisco](cisco.md) | [`workday`](ats-workday.md) | 5 | 100 % | 40 % | ✅ |
592 +| [Citronhygiene](citronhygiene.md) | [`dayforce`](ats-dayforce.md) | 5 | 100 % | 100 % | ✅ |
593 +| [Cominar](cominar.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
594 +| [Cultures Gen V](cultures_genv.md) | [`adp`](ats-adp.md) | 5 | 20 % | 100 % | ✅ |
595 +| [Devoted Studios](devoted_studios_1.md) | [`workable`](ats-workable.md) | 5 | 0 % | 100 % | ✅ |
596 +| [Digital Moment](digitalmoment.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 0 % | 100 % | ✅ |
597 +| [Ecosystem Énergie](ecosystem.md) | [`lever`](ats-lever.md) | 5 | 0 % | 100 % | ✅ |
598 +| [EQ Bank](eqbank.md) | [`lever`](ats-lever.md) | 5 | 60 % | 40 % | ✅ |
599 +| [Gestion FÉRIQUE](ferique.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 5 | 0 % | 100 % | ✅ |
600 +| [Ggi](ggi.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
601 +| [Graymont](graymont.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 5 | 0 % | 100 % | ✅ |
602 +| [Internal](internaljobsatlush.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 100 % | 100 % | ✅ |
603 +| [Interpublic](interpublic.md) | [`workday`](ats-workday.md) | 5 | 40 % | 80 % | ✅ |
604 +| [Irth Solutions](irth_solutions.md) | [`workable`](ats-workable.md) | 5 | 100 % | 100 % | ✅ |
605 +| [Mila — Institut québécois d'IA](mila_2.md) | [`workable`](ats-workable.md) | 5 | 0 % | 100 % | ✅ |
621 606 | [Mlp](mlp.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
622 −| [Moneris](moneris.md) | [`workday`](ats-workday.md) | 5 | 100 % | 100 % | ✅ |
607 +| [Msd](msd.md) | [`workday`](ats-workday.md) | 5 | 60 % | 100 % | ✅ |
623 608 | [MSI Gestion immobilière](msi_gestion.md) | [`adp`](ats-adp.md) | 5 | 100 % | 100 % | ✅ |
624 609 | [MVV](mvv1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 5 | 0 % | 100 % | ✅ |
625 610 | [Médialo](medialo.md) | [`recruitee`](ats-recruitee.md) | 5 | 0 % | 80 % | ✅ |
626 −| [North West Rubber](northwestrubber.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 0 % | 100 % | ✅ |
627 −| [Nssl](nssl.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
628 −| [One Medical](onemedical.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 100 % | 100 % | ✅ |
629 −| [Place et Forme inc](placeetforme.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 5 | 60 % | 0 % | ✅ |
630 −| [Plusgrade](plusgrade.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
631 −| [Porta](porta.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
611 +| [New York Holdings](new_york_holdings.md) | [`breezy`](ats-breezy.md) | 5 | 20 % | 100 % | ✅ |
612 +| [Nexapp](nexapp.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 0 % | 100 % | ✅ |
613 +| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | [`icims`](ats-icims.md) | 5 | 80 % | 80 % | ✅ |
614 +| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | [`icims`](ats-icims.md) | 5 | 80 % | 80 % | ✅ |
615 +| [Place et Forme inc](placeetforme.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 5 | 60 % | 60 % | ✅ |
632 616 | [Propriétés Scalia](scalia.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 20 % | 100 % | ✅ |
633 −| [Raymond Chabot Grant Thornton](rcgt.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
617 +| [Pyrotek](pyrotek3.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 5 | 100 % | 100 % | ✅ |
634 618 | [Realstar](realstar.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
635 −| [Reddyice](reddyice.md) | [`workday`](ats-workday.md) | 5 | 100 % | 100 % | ✅ |
636 −| [Senior Azure Solution Architect (Montreal – French Speaking)](accenture.md) | [`workday`](ats-workday.md) | 5 | 100 % | 100 % | ✅ |
619 +| [RTINGS.com (FR)](laboratoirertingscom.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 60 % | 100 % | ✅ |
620 +| [Sel Windsor (Mines Seleine)](selwindsor.md) | [`ultipro`](ats-ultipro.md) | 5 | 0 % | 100 % | ✅ |
621 +| [Sobeys](sobeys.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
637 622 | [Surmesur](surmesur.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 80 % | 100 % | ✅ |
638 623 | [Swarovski](swarovski.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
639 −| [Targray](targray.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 0 % | 0 % | ✅ |
640 −| [Teal Communications, Inc.](tealcommunicationsinc.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 60 % | 0 % | ✅ |
624 +| [Targray](targray.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 0 % | 100 % | ✅ |
641 625 | [Toon Boom Animation](toonboom.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 0 % | 100 % | ✅ |
642 626 | [TransPerfect](transperfect.md) | [`recruitee`](ats-recruitee.md) | 5 | 0 % | 100 % | ✅ |
643 627 | [Triotech](triotech.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 0 % | 100 % | ✅ |
628 +| [US Mobile](usmobile.md) | [`lever`](ats-lever.md) | 5 | 100 % | 100 % | ✅ |
629 +| [Vaco](vaco.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 80 % | 100 % | ✅ |
630 +| [Valmet](valmet.md) | [`workday`](ats-workday.md) | 5 | 0 % | 80 % | ✅ |
631 +| [Ville de Mirabel](ville_mirabel.md) | [`njoyn`](ats-njoyn.md) | 5 | 100 % | 0 % | ✅ |
644 632 | [Vortex](vortex.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
645 −| [3M](x3m.md) | [`workday`](ats-workday.md) | 4 | 50 % | 100 % | ✅ |
646 −| [Acuity Insights](acuity_insights.md) | [`workable`](ats-workable.md) | 4 | 75 % | 100 % | ✅ |
633 +| [Warner Bros. Discovery (WB Games Montréal)](warnerbros.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
634 +| [Acumatica](acumatica.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 25 % | 100 % | ✅ |
647 635 | [Administrateur Immobilier](gwlra.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
648 −| [Agent(e) de liaison médicale et scientifique, biologiques – Québec ...](organon.md) | [`workday`](ats-workday.md) | 4 | 25 % | 100 % | ✅ |
649 −| [Agent(e) de location de communauté](iip.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
650 −| [Agile DSS](agiledss.md) | [`recruitee`](ats-recruitee.md) | 4 | 0 % | 100 % | ✅ |
651 −| [Ajholdingsltd](ajholdingsltd.md) | [`dayforce`](ats-dayforce.md) | 4 | 75 % | 100 % | ✅ |
652 −| [Aleanza Recrutement Durable](aleanzarecrutementdurable.md) | [`teamtailor`](ats-teamtailor.md) | 4 | 25 % | 0 % | ✅ |
653 −| [Alimentiv](alimentiv_2.md) | [`lever`](ats-lever.md) | 4 | 100 % | 25 % | ✅ |
636 +| [Allied](alliedreit.md) | [`lever`](ats-lever.md) | 4 | 0 % | 100 % | ✅ |
654 637 | [Allucent](allucent.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ |
655 −| [Assistant contrôleur (remplacement de congé de maternité)](sixflags.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
656 −| [Associé au Marketing et Opérations Clients – Est](diageo.md) | [`workday`](ats-workday.md) | 4 | 100 % | 100 % | ✅ |
657 −| [Associé aux ventes/Retail Sales Associate](gapinc.md) | [`workday`](ats-workday.md) | 4 | 0 % | 25 % | ✅ |
658 −| [Astucemedia](astucemedia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
659 −| [Berger (tourbe horticole)](berger.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
660 −| [Board](deltastar.md) | [`dayforce`](ats-dayforce.md) | 4 | 50 % | 100 % | ✅ |
638 +| [AMI](ami.md) | [`ashby`](ats-ashby.md) | 4 | 0 % | 0 % | ✅ |
639 +| [Avocat en immigration d'affaires américaine](fragomen.md) | [`workday`](ats-workday.md) | 4 | 0 % | 100 % | ✅ |
640 +| [Board](deltastar.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
661 641 | [Boreala Management](borealamanagement.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
662 −| [Bronswerk](bronswerk.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
663 642 | [Chewi Creative](chewicreative.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
643 +| [Church & Dwight Canada](churchdwight.md) | [`workday`](ats-workday.md) | 4 | 0 % | 100 % | ✅ |
664 644 | [Cologix](cologix.md) | [`lever`](ats-lever.md) | 4 | 25 % | 100 % | ✅ |
665 −| [Continental Group Sector ContiTech](continentalgroupsectorcontitech.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 25 % | 100 % | ✅ |
666 −| [Danaher](danaher.md) | [`workday`](ats-workday.md) | 4 | 75 % | 75 % | ✅ |
667 −| [Dare Foods](darefoods.md) | [`dayforce`](ats-dayforce.md) | 4 | 75 % | 100 % | ✅ |
645 +| [Daniels Health Canada](daniels_sharpsmart.md) | [`lever`](ats-lever.md) | 4 | 25 % | 25 % | ✅ |
668 646 | [Delmar International](delmar_international_inc.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ |
669 −| [Digital Moment](digitalmoment.md) | [`jazzhr`](ats-jazzhr.md) | 4 | 0 % | 0 % | ✅ |
670 647 | [Doman Building Materials Group Ltd](doman_building_materials.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ |
671 −| [Ecosystem Énergie](ecosystem.md) | [`lever`](ats-lever.md) | 4 | 0 % | 100 % | ✅ |
672 −| [EOS Aircraft](eosaircraftinc.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 0 % | 100 % | ✅ |
648 +| [DoorDash Quebec](doordashquebec.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 50 % | 100 % | ✅ |
649 +| [Eli Health](eli.md) | [`ashby`](ats-ashby.md) | 4 | 0 % | 100 % | ✅ |
650 +| [Equisoft](equisoft.md) | [`workday`](ats-workday.md) | 4 | 0 % | 100 % | ✅ |
651 +| [Fellow Insights Inc.](fellowai.md) | [`ashby`](ats-ashby.md) | 4 | 25 % | 0 % | ✅ |
673 652 | [Flatgigs](flatgigs.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ |
674 653 | [FlightHub](flighthub.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
675 654 | [Flowcontrol](flowcontrol.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
676 −| [Graymont](graymont.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 4 | 0 % | 0 % | ✅ |
677 −| [Groupemarcelle](groupemarcelle.md) | [`dayforce`](ats-dayforce.md) | 4 | 25 % | 100 % | ✅ |
678 −| [Haven Interactive Studios](haven.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
679 −| [Haven Interactive Studios - English](havenenglish.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
655 +| [Fortigo Freight Services Inc.](fortigofreightservicesinc.md) | [`jazzhr`](ats-jazzhr.md) | 4 | 25 % | 75 % | ✅ |
656 +| [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
657 +| [Groupenorbec](groupenorbec.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
658 +| [Highdive](highdive.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
659 +| [Hopper](hopper.md) | [`ashby`](ats-ashby.md) | 4 | 0 % | 50 % | ✅ |
680 660 | [HoYoverse](hoyoverse.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
681 −| [Internal](internaljobsatlush.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 100 % | 100 % | ✅ |
682 −| [Ivalua](ivalua.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
683 −| [J.S. Held LLC](jsheldllc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
684 661 | [Jay Analytix](jay_analytix.md) | [`breezy`](ats-breezy.md) | 4 | 0 % | 100 % | ✅ |
685 −| [Journalier de production](ecyclesolu.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
662 +| [John Brooks Company](john_brooks_company.md) | [`workable`](ats-workable.md) | 4 | 25 % | 100 % | ✅ |
663 +| [Keel Infrastructure](keelinfrastructure.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
686 664 | [Kogniz](kogniz.md) | [`lever`](ats-lever.md) | 4 | 0 % | 100 % | ✅ |
687 665 | [Korem](korem.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 0 % | 100 % | ✅ |
666 +| [Lighting](lighting.md) | [`workday`](ats-workday.md) | 4 | 100 % | 100 % | ✅ |
688 667 | [Linehaul Nuit, Conducteur, classe 1](cardinalcouriers.md) | [`dayforce`](ats-dayforce.md) | 4 | 50 % | 100 % | ✅ |
668 +| [Longbow Advantage](longbowadvantage.md) | [`jazzhr`](ats-jazzhr.md) | 4 | 0 % | 100 % | ✅ |
689 669 | [Luckyhammers](luckyhammers.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
690 −| [Mattel (Mega Bloks)](mattelinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
691 −| [Maxicanada](maxicanada.md) | [`dayforce`](ats-dayforce.md) | 4 | 100 % | 100 % | ✅ |
692 −| [McGill St Laurent](mcgillstlaurentb8.md) | [`jazzhr`](ats-jazzhr.md) | 4 | 0 % | 0 % | ✅ |
693 −| [Medtronic](medtronic.md) | [`workday`](ats-workday.md) | 4 | 100 % | 100 % | ✅ |
670 +| [Ludia / Jam City](ludia.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 0 % | 100 % | ✅ |
671 +| [Malvern Panalytical (Spectris)](spectris.md) | [`workday`](ats-workday.md) | 4 | 0 % | 100 % | ✅ |
672 +| [Marcus evans](marcusevanscareers.md) | [`recruitee`](ats-recruitee.md) | 4 | 75 % | 100 % | ✅ |
673 +| [Medline](medline.md) | [`workday`](ats-workday.md) | 4 | 100 % | 100 % | ✅ |
694 674 | [META4](meta4.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
695 675 | [Mitacs](mitacs.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 100 % | 100 % | ✅ |
676 +| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | [`adp`](ats-adp.md) | 4 | 50 % | 100 % | ✅ |
696 677 | [Monster Energy](monsterenergy.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 100 % | 100 % | ✅ |
697 678 | [Neo Financial](neofinancial.md) | [`ashby`](ats-ashby.md) | 4 | 100 % | 100 % | ✅ |
698 −| [New Era Technology](neweratech.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 100 % | 100 % | ✅ |
699 679 | [Nmédia](nmdia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
700 680 | [Nomic Bio](nomic.md) | [`ashby`](ats-ashby.md) | 4 | 0 % | 75 % | ✅ |
701 681 | [Norbert Health](norbert_health.md) | [`breezy`](ats-breezy.md) | 4 | 0 % | 100 % | ✅ |
702 682 | [Novisto](novisto78.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
703 −| [Nrfcanada](nrfcanada.md) | [`workday`](ats-workday.md) | 4 | 25 % | 75 % | ✅ |
704 −| [Opportunities with AppDirect's Advisor Partners (Recruitment as a Service)](appdirectraas.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
683 +| [Oliver & Bonacini](oliverbonacini.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 25 % | 100 % | ✅ |
705 684 | [OTIP Group of Companies (OGC)](otipgroupofcompaniesogc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
706 −| [Outpost VFX](outpostvfx.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
707 685 | [PEAK Groupe financier](peakgroup.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 0 % | 100 % | ✅ |
708 686 | [Pivot + Edge](pivotandedge.md) | [`recruitee`](ats-recruitee.md) | 4 | 0 % | 100 % | ✅ |
709 −| [Prelib](prelib.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 25 % | 100 % | ✅ |
710 −| [Quadra](quadra.md) | [`dayforce`](ats-dayforce.md) | 4 | 100 % | 100 % | ✅ |
711 −| [Really Great Reading](reallygreatreading.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
712 −| [Rmldb](rmldb.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
713 −| [Sbdinc](sbdinc.md) | [`workday`](ats-workday.md) | 4 | 75 % | 100 % | ✅ |
687 +| [Porta](porta.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
688 +| [Power Factors](power_factors.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ |
689 +| [Rechercher des](canassurance.md) | [`workday`](ats-workday.md) | 4 | 0 % | 100 % | ✅ |
690 +| [Reflector Entertainment](reflector.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
714 691 | [Serve Robotics](serverobotics.md) | [`ashby`](ats-ashby.md) | 4 | 100 % | 0 % | ✅ |
715 692 | [ServiceNow](servicenow.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
716 −| [Sobeys](sobeys.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
693 +| [SOVRA](sovra.md) | [`ashby`](ats-ashby.md) | 4 | 0 % | 100 % | ✅ |
717 694 | [Spiegel Ryan S.E.N.C.R.L.](spiegel_sohmer.md) | [`breezy`](ats-breezy.md) | 4 | 0 % | 100 % | ✅ |
718 −| [Synertek](synertek.md) | [`teamtailor`](ats-teamtailor.md) | 4 | 75 % | 0 % | ✅ |
719 −| [Syntronic](syntronic.md) | [`lever`](ats-lever.md) | 4 | 0 % | 100 % | ✅ |
720 −| [TandemLaunch](tandemlaunch.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ |
721 −| [TEN Canada (Transportation Equipment Network)](ten_canada.md) | [`breezy`](ats-breezy.md) | 4 | 25 % | 100 % | ✅ |
695 +| [Squeeze Studio Animation](squeezestudio.md) | [`recruitee`](ats-recruitee.md) | 4 | 0 % | 50 % | ✅ |
722 696 | [Testing, Automation and Cloud Validation](sglottery.md) | [`workday`](ats-workday.md) | 4 | 25 % | 100 % | ✅ |
723 697 | [Trigone](trigone.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
724 698 | [Trugreen](trugreen.md) | [`workday`](ats-workday.md) | 4 | 50 % | 100 % | ✅ |
725 −| [Vaco](vaco.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 75 % | 100 % | ✅ |
726 −| [Vendeur 3ème Clé (Thirdy Key)](fossil.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
727 699 | [VOXDATA](voxdata.md) | [`breezy`](ats-breezy.md) | 4 | 100 % | 100 % | ✅ |
700 +| [Weir Group](weir.md) | [`workday`](ats-workday.md) | 4 | 0 % | 100 % | ✅ |
728 701 | [Welcome to the Jungle](artefactjobs.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 50 % | 100 % | ✅ |
702 +| [Welo Global](weloglobal.md) | [`lever`](ats-lever.md) | 4 | 0 % | 75 % | ✅ |
703 +| [WestGroupe](westgroupe.md) | [`jazzhr`](ats-jazzhr.md) | 4 | 0 % | 100 % | ✅ |
729 704 | [A2 Design](a2design.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
705 +| [Abritek](abritek.md) | [`adp`](ats-adp.md) | 3 | 100 % | 100 % | ✅ |
730 706 | [Adoc Talent Management](adoc_tm.md) | [`breezy`](ats-breezy.md) | 3 | 0 % | 100 % | ✅ |
731 707 | [Agence Maplr Inc.](agencemaplrinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
732 −| [Air Traffic Control (ATC)](navcanada.md) | [`workday`](ats-workday.md) | 3 | 33 % | 67 % | ✅ |
708 +| [Agent service à la clientèle et soutien comptable](harriscomputer.md) | [`workday`](ats-workday.md) | 3 | 33 % | 100 % | ✅ |
709 +| [Agent(e) de location de communauté](iip.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
710 +| [Air Traffic Control (ATC)](navcanada.md) | [`workday`](ats-workday.md) | 3 | 67 % | 100 % | ✅ |
711 +| [Ajholdingsltd](ajholdingsltd.md) | [`dayforce`](ats-dayforce.md) | 3 | 100 % | 100 % | ✅ |
733 712 | [Alygra Advisory](alygra.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 100 % | ✅ |
734 −| [AMI](ami.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 0 % | ✅ |
735 −| [Bath Fitter Corporate](bathfitterdistributinginc.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 100 % | 0 % | ✅ |
736 −| [Brasseries Sleeman (Unibroue)](sleeman.md) | [`workday`](ats-workday.md) | 3 | 33 % | 100 % | ✅ |
737 −| [Broadsign](broadsign.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
738 −| [Broadsign](broadsignfr.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
713 +| [Associé aux ventes/Retail Sales Associate](gapinc.md) | [`workday`](ats-workday.md) | 3 | 0 % | 33 % | ✅ |
714 +| [Associé(e) au service](ci.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
715 +| [BDL Énergie](bdl_energie.md) | [`breezy`](ats-breezy.md) | 3 | 33 % | 0 % | ✅ |
716 +| [Berger (tourbe horticole)](berger.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
717 +| [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | [`dayforce`](ats-dayforce.md) | 3 | 100 % | 100 % | ✅ |
718 +| [Black & McDonald](black_mcdonald_francais.md) | [`breezy`](ats-breezy.md) | 3 | 0 % | 67 % | ✅ |
719 +| [Bronswerk](bronswerk.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
739 720 | [Canadavisa](canadavisa.md) | [`ashby`](ats-ashby.md) | 3 | 33 % | 67 % | ✅ |
740 −| [Canderel](canderel.md) | [`dayforce`](ats-dayforce.md) | 3 | 67 % | 100 % | ✅ |
741 −| [Carnaval de Québec Inc.](carnaval.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 3 | 0 % | 0 % | ✅ |
742 −| [Cisco](cisco.md) | [`workday`](ats-workday.md) | 3 | 100 % | 100 % | ✅ |
743 −| [Conagrabrands](conagrabrands.md) | [`workday`](ats-workday.md) | 3 | 100 % | 100 % | ✅ |
721 +| [Carnaval de Québec Inc.](carnaval.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 3 | 0 % | 100 % | ✅ |
722 +| [Cdpqfiliales](cdpqfiliales.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
744 723 | [Consultant(e) en développement des affaires](omnitrans.md) | [`dayforce`](ats-dayforce.md) | 3 | 67 % | 100 % | ✅ |
745 724 | [Continental Technology Solutions](continentaltechnologysolutions.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
746 725 | [CSN Collision](csncollision.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ |
726 +| [CTS Foods Brokers](cts_foods_brokers_inc.md) | [`workable`](ats-workable.md) | 3 | 33 % | 100 % | ✅ |
747 727 | [Cygnus Professionals Inc](cygnusprofessionalsinc2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
748 −| [Damotech](damotech.md) | [`workable`](ats-workable.md) | 3 | 33 % | 100 % | ✅ |
749 −| [Databricks](databricks.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
728 +| [Damotech](damotech.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ |
729 +| [Danaher](danaher.md) | [`workday`](ats-workday.md) | 3 | 67 % | 67 % | ✅ |
730 +| [Dare Foods](darefoods.md) | [`dayforce`](ats-dayforce.md) | 3 | 100 % | 100 % | ✅ |
750 731 | [Dev](dev2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 100 % | 100 % | ✅ |
751 −| [DiliTrust](dilitrust.md) | [`lever`](ats-lever.md) | 3 | 0 % | 100 % | ✅ |
752 −| [Dulcedo Management](dulcedo.md) | [`lever`](ats-lever.md) | 3 | 33 % | 67 % | ✅ |
753 −| [Dxctechnology](dxctechnology.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
754 −| [Earth Rated](earthrated.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
755 −| [East Penn Canada](eastpenn.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
756 −| [EC-Solutions](ecsolutions.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
757 −| [Electromechanic](toppan.md) | [`workday`](ats-workday.md) | 3 | 33 % | 100 % | ✅ |
758 −| [EMU](emu.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 3 | 67 % | 0 % | ✅ |
759 −| [Equal1](equal1.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 0 % | ✅ |
760 −| [EVLO (Hydro-Québec)](evlo.md) | [`bamboohr`](ats-bamboohr.md) | 3 | 0 % | 100 % | ✅ |
761 −| [Fellow Insights Inc.](fellowai.md) | [`ashby`](ats-ashby.md) | 3 | 67 % | 0 % | ✅ |
762 −| [Fiserv](fiserv.md) | [`workday`](ats-workday.md) | 3 | 67 % | 100 % | ✅ |
763 −| [FortNine](canadasmotorcycle.md) | [`jazzhr`](ats-jazzhr.md) | 3 | 67 % | 0 % | ✅ |
732 +| [East Penn Canada](eastpenn.md) | [`dayforce`](ats-dayforce.md) | 3 | 33 % | 100 % | ✅ |
733 +| [Electromechanic](toppan.md) | [`workday`](ats-workday.md) | 3 | 67 % | 100 % | ✅ |
734 +| [EMU](emu.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 3 | 67 % | 100 % | ✅ |
735 +| [Enbridge](enbridge.md) | [`workday`](ats-workday.md) | 3 | 0 % | 67 % | ✅ |
736 +| [Enseignant suppléant](oneschoolglobal.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
737 +| [EOS Aircraft](eosaircraftinc.md) | [`bamboohr`](ats-bamboohr.md) | 3 | 0 % | 100 % | ✅ |
738 +| [Featherless AI](featherlessai.md) | [`ashby`](ats-ashby.md) | 3 | 67 % | 0 % | ✅ |
739 +| [Flare (cybersécurité)](flare.md) | [`bamboohr`](ats-bamboohr.md) | 3 | 33 % | 100 % | ✅ |
740 +| [Flinks](flinks.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ |
741 +| [FOREMAN ASSISTANT SHIPPING RECEIVING](benmor.md) | [`dayforce`](ats-dayforce.md) | 3 | 33 % | 100 % | ✅ |
742 +| [French Canadian Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrossefc.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 67 % | 100 % | ✅ |
764 743 | [Fuse Energy](fuse.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 100 % | ✅ |
765 −| [Gastro Health](gastro_health.md) | [`breezy`](ats-breezy.md) | 3 | 100 % | 100 % | ✅ |
766 −| [Gearbox Studio Québec](gearboxquebec.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
744 +| [General Dynamics Missions System International](gdmsi.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 67 % | 100 % | ✅ |
767 745 | [Gentek Building Products Ltd Partnership](gentekbuildingproductsltdpartner.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
768 −| [Gestion FÉRIQUE](ferique.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 3 | 0 % | 0 % | ✅ |
746 +| [Groupe Beaudry](groupebeaudry.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
747 +| [Groupe Unigesco](groupe_unigesco.md) | [`breezy`](ats-breezy.md) | 3 | 67 % | 100 % | ✅ |
769 748 | [Guarana](guarana.md) | [`recruitee`](ats-recruitee.md) | 3 | 100 % | 100 % | ✅ |
749 +| [Guillevin International](guillevin.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
770 750 | [GURU Boisson Énergisante](guruorganicenergydrink.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
771 −| [HP](hp.md) | [`workday`](ats-workday.md) | 3 | 100 % | 0 % | ✅ |
772 −| [Hpe](hpe.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
773 −| [inBeat Agency](inbeat_agency.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 33 % | ✅ |
774 −| [Irth Solutions](irth_solutions.md) | [`workable`](ats-workable.md) | 3 | 100 % | 100 % | ✅ |
751 +| [Haven Interactive Studios](haven.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
752 +| [Haven Interactive Studios - English](havenenglish.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
753 +| [Homepage](quanteo.md) | [`recruitee`](ats-recruitee.md) | 3 | 67 % | 100 % | ✅ |
754 +| [Innocap](innocap.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
775 755 | [Keyrus](keyrus2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
776 −| [Lake Washington Dermatology](lakewashingtondermatology.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 33 % | 100 % | ✅ |
756 +| [Kiongroup](kiongroup.md) | [`workday`](ats-workday.md) | 3 | 100 % | 67 % | ✅ |
777 757 | [LE CAFÉ DES ARTISTES](lecafdesartistes.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
778 −| [Longbow Advantage](longbowadvantage.md) | [`jazzhr`](ats-jazzhr.md) | 3 | 0 % | 0 % | ✅ |
779 −| [Maintenance Expert M.S.L.G](maintenancexpert.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 3 | 100 % | 0 % | ✅ |
758 +| [LFG Construction](lfgconstruction.md) | [`teamtailor`](ats-teamtailor.md) | 3 | 0 % | 33 % | ✅ |
759 +| [Liberty Mutual Canada](liberty_mutual_canada.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ |
760 +| [LRDG (Language Research Development Group)](lrdgonline.md) | [`lever`](ats-lever.md) | 3 | 100 % | 100 % | ✅ |
761 +| [Léger](leger2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
780 762 | [Mannarino Systems & Software Inc.](mannarinosystemssoftwareinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
763 +| [Maxicanada](maxicanada.md) | [`dayforce`](ats-dayforce.md) | 3 | 100 % | 100 % | ✅ |
764 +| [McGill St Laurent](mcgillstlaurentb8.md) | [`jazzhr`](ats-jazzhr.md) | 3 | 0 % | 100 % | ✅ |
781 765 | [Mecar Métal](mecarmtal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
782 766 | [Michelin](michelinhr.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
783 −| [Mistplay](mistplay.md) | [`lever`](ats-lever.md) | 3 | 33 % | 100 % | ✅ |
767 +| [Mindrift](toloka_ai.md) | [`workable`](ats-workable.md) | 3 | 100 % | 100 % | ✅ |
784 768 | [Modern Menopause](modernmenopause.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
769 +| [Motorolasolutions](motorolasolutions.md) | [`workday`](ats-workday.md) | 3 | 67 % | 67 % | ✅ |
785 770 | [Naisense Solutions Inc](naisensesolutionsinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
786 −| [Ndtglobal](ndtglobal.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
787 −| [No Saint](no_saint.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 100 % | ✅ |
771 +| [Nascent](nascent.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 33 % | ✅ |
788 772 | [Oboxmedia](oboxmedia1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
773 +| [Opportunities with AppDirect's Advisor Partners (Recruitment as a Service)](appdirectraas.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
774 +| [Outpost VFX](outpostvfx.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
789 775 | [Paradox](paradox.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 0 % | ✅ |
790 776 | [Peaktech](peaktech.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
791 −| [Placements Mackenzie (Power/IGM)](mackenzie.md) | [`icims`](ats-icims.md) | 3 | 100 % | 67 % | ✅ |
792 −| [PlayStation Global](sonyinteractiveentertainmentglobal.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
777 +| [Plusgrade](plusgrade.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
793 778 | [Poka](poka.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
794 −| [Poka FR](pokafr.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
795 −| [Rbc](rbc.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
796 −| [Realterm](realterm.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
797 −| [Rechercher des](canassurance.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
798 −| [Reflector Entertainment](reflector.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
779 +| [Precision Parcel & Package Deliveries](precisionhomeandofficedeliveries.md) | [`jazzhr`](ats-jazzhr.md) | 3 | 33 % | 67 % | ✅ |
780 +| [Prelib](prelib.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 33 % | 100 % | ✅ |
781 +| [Quadra](quadra.md) | [`dayforce`](ats-dayforce.md) | 3 | 100 % | 100 % | ✅ |
799 782 | [Remco](remco.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
800 −| [Reworld](reworld.md) | [`workday`](ats-workday.md) | 3 | 33 % | 0 % | ✅ |
801 −| [Robover (ODL Canada)](odl.md) | [`workday`](ats-workday.md) | 3 | 0 % | 0 % | ✅ |
802 −| [SBM Management](sbmmanagement.md) | [`workday`](ats-workday.md) | 3 | 67 % | 0 % | ✅ |
803 −| [SharkNinja](sharkninjaoperatingllc.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 100 % | 100 % | ✅ |
783 +| [Rethink](rethinkcanada.md) | [`bamboohr`](ats-bamboohr.md) | 3 | 0 % | 100 % | ✅ |
784 +| [Rmldb](rmldb.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
785 +| [Robover (ODL Canada)](odl.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
804 786 | [Shearwater](shearwater.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
805 787 | [Signifly](signifly.md) | [`recruitee`](ats-recruitee.md) | 3 | 0 % | 0 % | ✅ |
806 788 | [Souffletmalt](souffletmalt.md) | [`dayforce`](ats-dayforce.md) | 3 | 67 % | 100 % | ✅ |
807 −| [Squeeze Studio Animation](squeezestudio.md) | [`recruitee`](ats-recruitee.md) | 3 | 0 % | 67 % | ✅ |
808 −| [Sun Gro Horticulture](sungrohorticulture.md) | [`jazzhr`](ats-jazzhr.md) | 3 | 0 % | 0 % | ✅ |
809 −| [Talent Acquisition Partner](euromoneyplc.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
810 −| [Tsys](tsys.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
811 −| [Turbulent](turbulent.md) | [`breezy`](ats-breezy.md) | 3 | 0 % | 100 % | ✅ |
789 +| [Sun Gro Horticulture](sungrohorticulture.md) | [`jazzhr`](ats-jazzhr.md) | 3 | 0 % | 100 % | ✅ |
790 +| [Synnex](synnex.md) | [`workday`](ats-workday.md) | 3 | 100 % | 67 % | ✅ |
791 +| [TandemLaunch](tandemlaunch.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
792 +| [Turbulent](turbulent.md) | [`breezy`](ats-breezy.md) | 3 | 0 % | 67 % | ✅ |
812 793 | [Unit8](unit8.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ |
813 −| [USA Mechanical & Energy Services](usamechasp.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
814 −| [Valmet](valmet.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
815 −| [Weir Group](weir.md) | [`workday`](ats-workday.md) | 3 | 0 % | 0 % | ✅ |
816 −| [Welo Global](weloglobal.md) | [`lever`](ats-lever.md) | 3 | 33 % | 67 % | ✅ |
817 −| [Zebra](zebra.md) | [`workday`](ats-workday.md) | 3 | 100 % | 100 % | ✅ |
794 +| [Vasco](vasco.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 100 % | ✅ |
795 +| [Venture Media](venturemedia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 100 % | 100 % | ✅ |
796 +| [Warehouse Team Member](tricorbraun.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
818 797 | [2K Vegas](x2kvegas.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
819 −| [Accueil / Service client (Montréal)](tourismholdings.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
798 +| [3M](x3m.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ |
820 799 | [ADVENS](advens.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
821 −| [Agent service à la clientèle et soutien comptable](harriscomputer.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
822 −| [Allied](alliedreit.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
800 +| [Agent(e) de liaison médicale et scientifique, biologiques – Québec ...](organon.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ |
823 801 | [Amgen](amgen.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
802 +| [ANINE BING](aninebing.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
824 803 | [AON3D](aon3d.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
825 804 | [AON3D](aon3d_fr.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
826 805 | [Arago](arago.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
827 −| [Associé(e) au service](ci.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
806 +| [Arterra Wines Canada](awc.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ |
828 807 | [AtoB](atob.md) | [`ashby`](ats-ashby.md) | 2 | 50 % | 50 % | ✅ |
829 −| [AutoTrader Canada](autotradercanada.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 100 % | 100 % | ✅ |
830 −| [Avocat en immigration d'affaires américaine](fragomen.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
831 −| [Avocate générale ou avocat général](fnfmb.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
832 −| [Banyan Capital Partners](bcp.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
808 +| [Averna](averna1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
809 +| [Bardel Entertainment](bardel_entertainment.md) | [`workable`](ats-workable.md) | 2 | 100 % | 100 % | ✅ |
833 810 | [Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrosse.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ |
834 −| [Bilingual Fire Protection Sales Representative](victaulic.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ |
811 +| [BDC](bdc.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
812 +| [Berlin Packaging Canada Corporation](bpcanada.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
835 813 | [BIXI Montréal](biximontreal.md) | [`recruitee`](ats-recruitee.md) | 2 | 50 % | 100 % | ✅ |
836 −| [Black & McDonald](black_mcdonald_francais.md) | [`breezy`](ats-breezy.md) | 2 | 0 % | 100 % | ✅ |
837 −| [Bluetooth SIG, Inc.](bluetoothsiginc.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 100 % | 0 % | ✅ |
814 +| [Bloom](makeitbloom.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 100 % | ✅ |
838 815 | [Brambles](brambles.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ |
839 −| [CaptiveAire](captiveaire.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
840 −| [Carters](carters.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ |
816 +| [Canderel](canderel.md) | [`dayforce`](ats-dayforce.md) | 2 | 100 % | 100 % | ✅ |
817 +| [CaptiveAire](captiveaire.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 100 % | 100 % | ✅ |
818 +| [Carters](carters.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
841 819 | [Catalyst Canada](catalystcanada.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
842 −| [Cdpqfiliales](cdpqfiliales.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
843 −| [Cerence](cerence.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
844 −| [Charger Logistics](charger_logistics_inc.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ |
845 820 | [Charlotte Tilbury](charlotte_tilbury.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ |
821 +| [Conagrabrands](conagrabrands.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ |
846 822 | [Connor, Clark & Lunn Financial Group Ltd.](cclfg.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
847 823 | [Conseil régional de l'environnement - Région de la Capitale Nationale](conseilrgionaldelenvironnement_rgiondelacapitalenationale.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
848 824 | [Culligan Quench](quenchwater.md) | [`lever`](ats-lever.md) | 2 | 50 % | 50 % | ✅ |
825 +| [CWP Energy](mcgillstlaurent.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 100 % | ✅ |
826 +| [Databricks](databricks.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
849 827 | [Dentons](dentons_europe.md) | [`workable`](ats-workable.md) | 2 | 50 % | 100 % | ✅ |
850 828 | [Designer graphique](mhca.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
851 −| [Dimonoff](dimonoff.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
829 +| [DiliTrust](dilitrust.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
852 830 | [DONTNOD](dontnod.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
853 −| [Eidos-Montréal](eidosmontreal.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
831 +| [Dxctechnology](dxctechnology.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
832 +| [E-Commerce Shipping Associate](slg001.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
854 833 | [Enercare](enercare.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
855 −| [Engaged HR](engagedhr.md) | [`teamtailor`](ats-teamtailor.md) | 2 | 100 % | 0 % | ✅ |
856 −| [Equativ](equativ.md) | [`lever`](ats-lever.md) | 2 | 0 % | 0 % | ✅ |
834 +| [ePac Flexible Packaging](epacllc.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 50 % | 100 % | ✅ |
835 +| [Equal1](equal1.md) | [`ashby`](ats-ashby.md) | 2 | 0 % | 0 % | ✅ |
836 +| [Equativ](equativ.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
837 +| [EVLO (Hydro-Québec)](evlo.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ |
857 838 | [Executive Assistant](getwingapp.md) | [`lever`](ats-lever.md) | 2 | 50 % | 100 % | ✅ |
858 839 | [Exegy](exegy.md) | [`ashby`](ats-ashby.md) | 2 | 0 % | 100 % | ✅ |
859 −| [Featherless AI](featherlessai.md) | [`ashby`](ats-ashby.md) | 2 | 0 % | 0 % | ✅ |
840 +| [Fednav](fednav.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
860 841 | [Fenêtres Concept](fenetresconcept.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 100 % | 100 % | ✅ |
861 842 | [Financeit](financeit.md) | [`workable`](ats-workable.md) | 2 | 100 % | 100 % | ✅ |
862 −| [Flare (cybersécurité)](flare.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 50 % | 100 % | ✅ |
863 −| [French Canadian Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrossefc.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ |
843 +| [FinDev Canada](findevcanada.md) | [`workable`](ats-workable.md) | 2 | 100 % | 100 % | ✅ |
844 +| [Fiserv](fiserv.md) | [`workday`](ats-workday.md) | 2 | 50 % | 50 % | ✅ |
864 845 | [Freseniusmedicalcare](freseniusmedicalcare.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
865 846 | [FZ Engineering](fzengineering.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
866 −| [General Dynamics Missions System International](gdmsi.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 50 % | 100 % | ✅ |
867 847 | [Goalcast](goalcast.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
868 −| [Groupe BC2](bc2.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ |
869 −| [Groupe Unigesco](groupe_unigesco.md) | [`breezy`](ats-breezy.md) | 2 | 50 % | 100 % | ✅ |
870 −| [H & S Loss Control Inspections](h_s_loss_control_inspections_in.md) | [`breezy`](ats-breezy.md) | 2 | 100 % | 100 % | ✅ |
848 +| [Granit Design](granit_design.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
871 849 | [Hinge Health](hinge_health.md) | [`ashby`](ats-ashby.md) | 2 | 100 % | 100 % | ✅ |
872 850 | [HireHawk](hirehawk.md) | [`workable`](ats-workable.md) | 2 | 50 % | 100 % | ✅ |
873 −| [Homepage](quanteo.md) | [`recruitee`](ats-recruitee.md) | 2 | 50 % | 100 % | ✅ |
874 −| [Innocap](innocap.md) | [`workday`](ats-workday.md) | 2 | 0 % | 0 % | ✅ |
875 −| [Insite Property Solutions](insite_property_solutions.md) | [`breezy`](ats-breezy.md) | 2 | 100 % | 100 % | ✅ |
876 −| [IT-ED](ited_solutions.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
851 +| [HP](hp.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ |
852 +| [IAMGOLD](iamgold.md) | [`taleo`](ats-taleo.md) | 2 | 0 % | 100 % | ✅ |
853 +| [inBeat Agency](inbeat_agency.md) | [`ashby`](ats-ashby.md) | 2 | 0 % | 50 % | ✅ |
854 +| [Infirmier(ère), Salle de réveil](shrinerschildrens.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
855 +| [Intersand](intersand.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
877 856 | [Keyloop](keyloop.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
878 −| [KRAFTON Montréal Studio](studiokraftonboard.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
857 +| [Kone](kone.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ |
879 858 | [Lactanet](lactanet.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 50 % | ✅ |
880 −| [Latys Intelligence](latys.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
881 859 | [Loiselle inc.](loiselleinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
882 −| [LVMH Perfumes & Cosmetics](lvmhperfumescosmetics.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 100 % | 100 % | ✅ |
883 860 | [McDonald's Restaurants](mcdonaldscanada.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
884 −| [Motorolasolutions](motorolasolutions.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ |
885 −| [Motos Illimitees](motosillimitees.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 100 % | 0 % | ✅ |
861 +| [Medtronic](medtronic.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ |
862 +| [Mistplay](mistplay.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
863 +| [Motos Illimitees](motosillimitees.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 100 % | 100 % | ✅ |
886 864 | [MSX International](msxinternational.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
887 −| [Novartis](novartis.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
865 +| [New Era Technology](neweratech.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 100 % | 100 % | ✅ |
866 +| [NielsenIQ](nielseniq.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
888 867 | [Novaspace](novaspace.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
889 868 | [Numen Labs](numenlabs.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
890 869 | [Nutreco](nutreco.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
891 870 | [Nuvei](nuvei.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ |
892 −| [On Running](onrunning.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
871 +| [Openmind Technologies](openmindt.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ |
893 872 | [OTT Financial](ott.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ |
894 −| [Pelmorex](pelmorex.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
895 873 | [Playmind](playmind.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
896 −| [Ponsera](ponsera.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ |
874 +| [PlayStation Global](sonyinteractiveentertainmentglobal.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
875 +| [Poka FR](pokafr.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
897 876 | [Potloc](potloc.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
898 −| [Power Factors](power_factors.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ |
899 −| [Precision Parcel & Package Deliveries](precisionhomeandofficedeliveries.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 0 % | ✅ |
900 −| [Production Operator II](coorstek.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
901 −| [Republic](republic.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
902 −| [Rethink](rethinkcanada.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ |
877 +| [Realterm](realterm.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
903 878 | [Sales Consultant Montreal](miele.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ |
904 879 | [Santropol Roulant](santropolroulant.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 50 % | 100 % | ✅ |
880 +| [SBM Management](sbmmanagement.md) | [`workday`](ats-workday.md) | 2 | 100 % | 50 % | ✅ |
905 881 | [Sense Ingénierie](sense_engineering.md) | [`breezy`](ats-breezy.md) | 2 | 0 % | 100 % | ✅ |
906 −| [Seymour Pacific Developments](seymourpacificdevelopmentsltd.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 100 % | 0 % | ✅ |
907 −| [Spectra Premium](spectrapremium.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
908 −| [Spreedly](spreedly.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ |
909 −| [Stateindustrial](stateindustrial.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
882 +| [SharkNinja](sharkninjaoperatingllc.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 100 % | 100 % | ✅ |
910 883 | [StorageMart](storagemart.md) | [`dayforce`](ats-dayforce.md) | 2 | 100 % | 100 % | ✅ |
911 884 | [Stranger Soccer](stranger_soccer_1.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ |
912 885 | [Suncor Énergie](suncor.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
913 −| [Terrestar Solutions](terrestarsolutionsfr.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
914 −| [Terrestar Solutions](terrestarsolutionsinc.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
915 886 | [The Climate Reality Project Canada](theclimaterealityprojectcanada.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
916 −| [Trisura](trisura.md) | [`dayforce`](ats-dayforce.md) | 2 | 50 % | 100 % | ✅ |
887 +| [Topbuild](topbuild.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ |
917 888 | [Trupanion](trupanion1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 50 % | 100 % | ✅ |
889 +| [Téléfilm Canada](telefilmcanada.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
890 +| [Ultium Cam](ultiumcam.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 100 % | ✅ |
918 891 | [Valard Construction](valard_construction_lp.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ |
919 892 | [Vaporus](vaporus_inc.md) | [`breezy`](ats-breezy.md) | 2 | 100 % | 50 % | ✅ |
920 −| [Venture Media](venturemedia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 100 % | 100 % | ✅ |
893 +| [VML](wundermanthompson.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ |
921 894 | [VML Canada](vmlcanadaen.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ |
922 895 | [VML Canada (French)](vmlcanadafr.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ |
923 896 | [Wafna](wafna.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
924 −| [Warehouse Team Member](tricorbraun.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
925 897 | [Waterwell Irrigation](waterwellirrigation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 50 % | 100 % | ✅ |
926 898 | [WaveShaper AI](waveshaperai.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
899 +| [Westjet](westjet.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ |
900 +| [Workwear Outfitters](workwear.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
927 901 | [Ziptrek Tremblant](ziptrekeco.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 100 % | 100 % | ✅ |
928 902 | [Zoetis](zoetis.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
929 −| [11 Residential](residential11.md) | [`jazzhr`](ats-jazzhr.md) | 1 | 100 % | 0 % | ✅ |
903 +| [ZOLL Medical](zoll.md) | [`workday`](ats-workday.md) | 2 | 100 % | 50 % | ✅ |
904 +| [Zscaler](zscaler.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 100 % | 100 % | ✅ |
930 905 | [1perTInent](x1pertinent.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
931 906 | [49 Solutions](x49_solutions_1.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
932 −| [4th Day Trucking](x4th_day_trucking.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 0 % | ✅ |
933 907 | [Above Flights](above_flights.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
934 908 | [AC780](ac780.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
935 −| [Adaptive Financial Consulting](adaptivefinancialconsulting.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
909 +| [Accueil / Service client (Montréal)](tourismholdings.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
910 +| [Acuity Insights](acuity_insights.md) | [`workable`](ats-workable.md) | 1 | 100 % | 100 % | ✅ |
911 +| [Adaptive Financial Consulting](adaptivefinancialconsulting.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
936 912 | [ADF Diesel](adfdiesel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
937 913 | [ADGA Group Consultants Inc](adgagroupconsultantsinc1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
938 914 | [AG Globe Services](agglobeservices.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
@@ -940,21 +916,19 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
940 916 | [Agence](agence_carrieres.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
941 917 | [AIDE À L'EXPÉDITION/À LA RÉCEPTION](harrisrebar.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
942 918 | [Alan Canada](alan.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ |
919 +| [Aleanza Recrutement Durable](aleanzarecrutementdurable.md) | [`teamtailor`](ats-teamtailor.md) | 1 | 100 % | 100 % | ✅ |
943 920 | [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 100 % | 100 % | ✅ |
944 −| [Allegion](allegion.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
945 −| [Altom Transport](altom_transport.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
946 921 | [Amilia](amilia.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 0 % | ✅ |
947 922 | [Andy Transport](andy_transport.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
948 −| [ANINE BING](aninebing.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
949 923 | [Ariolix](ariolix.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
950 −| [Arterra Wines Canada](awc.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
924 +| [Assistant contrôleur (remplacement de congé de maternité)](sixflags.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
951 925 | [Atecna](atecna_montreal.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
952 −| [Autorité des marchés financiers (AMF)](lautorite.md) | [`workday`](ats-workday.md) | 1 | 100 % | 0 % | ✅ |
926 +| [Autorité des marchés financiers (AMF)](lautorite.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
927 +| [AutoTrader Canada](autotradercanada.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
953 928 | [AVEQ](aveq.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
929 +| [Banyan Capital Partners](bcp.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
954 930 | [BCES Global](bces.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
955 −| [Bdx](bdx.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
956 −| [Berlin Packaging Canada Corporation](bpcanada.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
957 −| [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | [`dayforce`](ats-dayforce.md) | 1 | 100 % | 100 % | ✅ |
931 +| [Bilingual Fire Protection Sales Representative](victaulic.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
958 932 | [Billups](billups.md) | [`ashby`](ats-ashby.md) | 1 | 100 % | 100 % | ✅ |
959 933 | [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
960 934 | [Bliinx](bliinx.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
@@ -964,206 +938,231 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
964 938 | [BoxKnight](boxknight.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
965 939 | [C2 Montréal](c2montral.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
966 940 | [Cabotcorp](cabotcorp.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
967 −| [California Closets](californiaclosets.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
968 −| [Cambria](cambria.md) | [`workday`](ats-workday.md) | 1 | 100 % | 0 % | ✅ |
941 +| [Cambria](cambria.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
969 942 | [Canada Global Recruitment](canada_global.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 0 % | ✅ |
970 943 | [Canada-Explorers](canada_explorers.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
944 +| [Capco](capco.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
971 945 | [CapIntel](capintel.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
972 −| [CCA](cca1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
946 +| [CCA](cca1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
973 947 | [Centre multiethnique de Québec](centremultiethniquedequbec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
974 −| [Clinique D](cliniqued.md) | [`jazzhr`](ats-jazzhr.md) | 1 | 0 % | 0 % | ✅ |
948 +| [Charger Logistics](charger_logistics_inc.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
975 949 | [Club Assurance](clubassurance.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
976 950 | [Club Monaco](clubmonaco.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
977 951 | [CM Labs](cmlabs.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
978 952 | [Connor, Clark & Lunn Private Capital Ltd.](pcm.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
979 −| [Consultdss](consultdss.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 100 % | ✅ |
980 953 | [Cooperrentsequip](cooperrentsequip.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
981 −| [Cpab](cpab.md) | [`dayforce`](ats-dayforce.md) | 1 | 100 % | 100 % | ✅ |
982 −| [Daycare Teachers](blockslearning.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
983 954 | [Deep Sky](deepsky.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
984 −| [Delos Data](delos_data.md) | [`ashby`](ats-ashby.md) | 1 | 100 % | 100 % | ✅ |
985 955 | [DEPT®](dept.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
986 −| [Deru Market + Catering](derumarketcatering.md) | [`jazzhr`](ats-jazzhr.md) | 1 | 100 % | 0 % | ✅ |
987 956 | [DIMENSION COMPOSITE INC](dimensioncompositeinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
957 +| [Dimonoff](dimonoff.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
988 958 | [DLC Teams](dlcteams.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
989 −| [DropGenie](drop_genie.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
990 959 | [Dupont](dupont.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
991 960 | [E*Pro Inc](eproinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
992 −| [Edelman Financial Engines, LLC](edelmanfinancialenginesllc.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
993 961 | [Ekosystem](ekosystem.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
994 −| [Eli Health](eli.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ |
995 −| [Enbridge](enbridge.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
996 962 | [Endossed](endossed.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
997 −| [Enseignant suppléant](oneschoolglobal.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
998 −| [EP Wealth Advisors](epwealth.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
999 −| [Equisoft](equisoft.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
963 +| [Engaged HR](engagedhr.md) | [`teamtailor`](ats-teamtailor.md) | 1 | 100 % | 100 % | ✅ |
1000 964 | [Eranum Solutions Numériques](eranum.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1001 −| [Family Resource Home Care](family_resource_home_care.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1002 −| [Fednav](fednav.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1003 965 | [Fenêtres Concept inc.](fentresconceptinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
1004 −| [Field Mechanic](bly.md) | [`dayforce`](ats-dayforce.md) | 1 | 100 % | 100 % | ✅ |
1005 966 | [Field Service Representative](orthoclinical.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1006 967 | [Fig](figfinancial.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
1007 968 | [Fresha](fresha.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
1008 969 | [Fundica](fundica.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1009 −| [GEOX](geox.md) | [`jazzhr`](ats-jazzhr.md) | 1 | 0 % | 0 % | ✅ |
970 +| [Gategroup](gategroup.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
971 +| [Gearbox Studio Québec](gearboxquebec.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1010 972 | [Gipi](gipi.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1011 973 | [Gng](gng.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1012 974 | [GoLogic](gologic.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1013 −| [Granit Design](granit_design.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1014 −| [Groupe Altus](altusgroup.md) | [`workday`](ats-workday.md) | 1 | 100 % | 0 % | ✅ |
1015 −| [Groupe Beaudry](groupebeaudry.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1016 −| [Guillevin International](guillevin.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1017 −| [GUS](gus.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 1 | 0 % | 0 % | ✅ |
975 +| [Groupe BC2](bc2.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 0 % | 100 % | ✅ |
976 +| [GUS](gus.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 1 | 0 % | 100 % | ✅ |
1018 977 | [Havenpoint Health](havenpoint_health.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
1019 −| [Hera AI](hera.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1020 978 | [Hire Ground Talent](hiregroundtalent.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1021 −| [homepage](allredi.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 100 % | ✅ |
1022 −| [Huron](huron.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1023 −| [IAMGOLD](iamgold.md) | [`taleo`](ats-taleo.md) | 1 | 0 % | 0 % | ✅ |
1024 −| [Imerys](imerys.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
979 +| [homepage](allredi.md) | [`recruitee`](ats-recruitee.md) | 1 | 100 % | 100 % | ✅ |
1025 980 | [Industrial Electric Manufacturing](industrialelectricmanufacturing.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1026 −| [Industrious](industrious.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ |
1027 −| [Infirmier(ère), Salle de réveil](shrinerschildrens.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1028 981 | [Infirmière Praticienne Spécialisée (IPS)](phoenix.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ |
1029 982 | [Infrastructel Inc.](infrastructelinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1030 983 | [Ingeniu inc.](ingeniuinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1031 984 | [Intuition Machines, Inc.](imachines.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
985 +| [IT-ED](ited_solutions.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1032 986 | [Jj](jj.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
987 +| [Journalier de production](ecyclesolu.md) | [`dayforce`](ats-dayforce.md) | 1 | 100 % | 100 % | ✅ |
1033 988 | [JoVE](jove.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1034 989 | [KEYENCE CANADA](keyencecanadainc.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 100 % | ✅ |
1035 990 | [Km Impact](km_impact.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1036 991 | [Kognitive Sales Solutions](kognitive_sales_solutions.md) | [`workable`](ats-workable.md) | 1 | 100 % | 100 % | ✅ |
1037 −| [Kone](kone.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
992 +| [KRAFTON Montréal Studio](studiokraftonboard.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1038 993 | [Lambda](lambda.md) | [`ashby`](ats-ashby.md) | 1 | 100 % | 100 % | ✅ |
1039 994 | [Leadsonline](leadsonline.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
995 +| [Levittsafety](levittsafety.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1040 996 | [Liferaft](liferaft.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1041 −| [Loblaw (Provigo / Maxi)](myview.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
1042 997 | [Logient](logient.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1043 −| [Léger](leger2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
998 +| [LVMH Perfumes & Cosmetics](lvmhperfumescosmetics.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
1044 999 | [Maison l'Échelon](maisonlchelon.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1045 −| [Malvern Panalytical (Spectris)](spectris.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
1046 1000 | [Marquis Imprimeur Inc.](marquisimprimeurinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
1047 −| [Medical Scientist HIV, Quebec](gilead.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1048 −| [Mobz](jobmobz1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1049 1001 | [MOKO](africa_moko.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1050 1002 | [Myle Home Service](myle_service.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1051 1003 | [Myperch](myperch.md) | [`ashby`](ats-ashby.md) | 1 | 100 % | 100 % | ✅ |
1052 −| [Nadel International](nadel.md) | [`jazzhr`](ats-jazzhr.md) | 1 | 100 % | 0 % | ✅ |
1053 −| [Nascent](nascent.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ |
1054 1004 | [NATIONAL](national.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1055 −| [Nemaska Lithium](nemaska_lithium.md) | [`adp`](ats-adp.md) | 1 | 0 % | 0 % | ✅ |
1005 +| [Ndtglobal](ndtglobal.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1006 +| [Nemaska Lithium](nemaska_lithium.md) | [`adp`](ats-adp.md) | 1 | 0 % | 100 % | ✅ |
1056 1007 | [Next Generation Inc](next_generation_inc.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1057 1008 | [Nexxus Foods](nexxusfoods.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1058 −| [NielsenIQ](nielseniq.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1059 −| [Niobec (Magris Performance Materials)](niobec.md) | [`adp`](ats-adp.md) | 1 | 100 % | 0 % | ✅ |
1009 +| [Niobec (Magris Performance Materials)](niobec.md) | [`adp`](ats-adp.md) | 1 | 100 % | 100 % | ✅ |
1010 +| [No Saint](no_saint.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ |
1011 +| [Novartis](novartis.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1060 1012 | [Novisto Fr](novistofr.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1061 1013 | [Numa](numa.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1062 −| [Ocado Group](ocadogroup.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1063 1014 | [Octav](octav.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1064 −| [Ogilvy Canada](ogilvycanada.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1065 1015 | [Omilia](omilia_natural_language_solutions_ua_ltd.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1066 1016 | [ON Animation Studio](onanimationstudio.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1067 1017 | [Onomatic](onomatic.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1068 −| [Openmind Technologies](openmindt.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 0 % | 100 % | ✅ |
1069 −| [Osgoode Properties](osgoode_properties.md) | [`adp`](ats-adp.md) | 1 | 100 % | 100 % | ✅ |
1070 1018 | [OXIO Corporation](oxio.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 0 % | ✅ |
1071 1019 | [Panda7](panda7.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1072 −| [Parallelz](parallelz.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1073 −| [Passport Brand Design](passportbranddesign.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1074 −| [Patterson Companies](pattersoncompanies.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
1075 −| [Paythings](paythings_19f14e354a62.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1020 +| [Patterson Companies](pattersoncompanies.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1076 1021 | [PeopleConnect Inc](peopleconnect_inc.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1077 1022 | [Periodic Labs](periodic_labs.md) | [`ashby`](ats-ashby.md) | 1 | 100 % | 0 % | ✅ |
1078 −| [PhyNet Dermatology LLC (External)](phynetdermatology.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1079 −| [Poolcorp](poolcorp.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1023 +| [Ponsera](ponsera.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1080 1024 | [Postmedia Distribution Solutions](postmediadistributionsolutions.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1081 −| [Poulet Rouge](pouletrouge.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 0 % | 100 % | ✅ |
1082 1025 | [Production Operator I (Montreal)](wikoff.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1083 1026 | [Production Support Roles](canadagoose.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1084 1027 | [Produits Kruger](produits_kruger.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 1 | 0 % | 0 % | ✅ |
1085 1028 | [Proof](proof.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1086 −| [Prysmiangroup](prysmiangroup.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1029 +| [Prysmiangroup](prysmiangroup.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1087 1030 | [Qohash](qohash.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1088 −| [Quadreal](quadreal.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1089 −| [Quandela](quandela.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1031 +| [Rbc](rbc.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1032 +| [Really Great Reading](reallygreatreading.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1090 1033 | [Recruitment Solutions Integrators](recruitmentsolutionsintegrators.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1091 −| [Red Barrels](redbarrels.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 0 % | 0 % | ✅ |
1092 −| [Regional Representative, Gatineau](psacunion.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1093 −| [Ridepanda](ridepanda.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1094 −| [Rollstack](rollstack.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 0 % | ✅ |
1034 +| [Red Barrels](redbarrels.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 0 % | 100 % | ✅ |
1035 +| [Reddyice](reddyice.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1036 +| [Republic](republic.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1037 +| [Reworld](reworld.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
1095 1038 | [Samsara](samsara.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1096 1039 | [Sangoma](sangoma_3.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1097 1040 | [Segic](segic.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1098 1041 | [Shearwater Aerospace](shearwater_aerospace.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1099 1042 | [Siemens Gamesa Certified Wind Turbine Troubleshooters](gevgroupltd.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 100 % | ✅ |
1100 1043 | [Silabs](silabs.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1101 −| [Simpson Strong-Tie](strongtie.md) | [`workday`](ats-workday.md) | 1 | 100 % | 0 % | ✅ |
1044 +| [Simpson Strong-Tie](strongtie.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1102 1045 | [Smucker](smucker.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1103 −| [Snowed In Studios](snowed_in_studios_3.md) | [`workable`](ats-workable.md) | 1 | 100 % | 0 % | ✅ |
1104 −| [Sofinafoods](sofinafoods.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1105 −| [Software Mind](softwaremind.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1106 −| [SOL Mental Health](solmentalhealth.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1046 +| [Snowed In Studios](snowed_in_studios_3.md) | [`workable`](ats-workable.md) | 1 | 100 % | 100 % | ✅ |
1107 1047 | [Sparkgrid](sparkgrid.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1108 1048 | [SportWhere](sportwhere.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1049 +| [Spreedly](spreedly.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
1109 1050 | [spruceinfotech](spruceinfotech2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1110 −| [SRS Merchandising](srs_merchandising.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1111 1051 | [Star Marketing](starmarketing.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1052 +| [State Industrial Products](stateindustrial.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1112 1053 | [Stelpro](stelpro.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1113 1054 | [SuperMedic.ca](supermedic.md) | [`workable`](ats-workable.md) | 1 | 100 % | 100 % | ✅ |
1114 −| [SwiftConnect](swiftconnect.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
1115 1055 | [Swordtech](swordtech.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 100 % | ✅ |
1116 −| [Synterra](synterra.md) | [`jazzhr`](ats-jazzhr.md) | 1 | 100 % | 0 % | ✅ |
1117 1056 | [Talsom](talsom.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1118 −| [Tefron](tefron.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1119 1057 | [TELUS Santé — Cliniques](telus_health_7fe6b0fe8614.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 0 % | ✅ |
1120 −| [Terrestar - Strigo](strigofr.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1058 +| [Terrestar Solutions](terrestarsolutionsfr.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1059 +| [Terrestar Solutions](terrestarsolutionsinc.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1121 1060 | [Thales Canada](thales.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1122 1061 | [Thesalesfactory](thesalesfactory.md) | [`lever`](ats-lever.md) | 1 | 100 % | 100 % | ✅ |
1123 1062 | [Tonic DNA](tonicdna1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1124 −| [Topbuild](topbuild.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1125 −| [Topcon](topcon.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1126 −| [Torc Robotics](torcrobotics.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1063 +| [Torc Robotics](torcrobotics.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1127 1064 | [Trener](trener_robotics.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 0 % | ✅ |
1128 −| [Triple Boris](triple_boris.md) | [`adp`](ats-adp.md) | 1 | 0 % | 0 % | ✅ |
1065 +| [Triple Boris](triple_boris.md) | [`adp`](ats-adp.md) | 1 | 0 % | 100 % | ✅ |
1129 1066 | [Tristan Fleet](tristan_fleet_1.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1130 −| [Triumvirate Environmental](triumvirateenvironmental.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1131 −| [Trueline](trueline.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1067 +| [Trisura](trisura.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1132 1068 | [Tyco](tyco.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1133 −| [Téléfilm Canada](telefilmcanada.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1134 1069 | [Uber Freight](uberfreight.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1135 −| [Ultium Cam](ultiumcam.md) | [`jazzhr`](ats-jazzhr.md) | 1 | 0 % | 0 % | ✅ |
1136 1070 | [Urbania](urbania.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1137 1071 | [Valital Technologies](valital_technologies.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1138 −| [Vasco](vasco.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ |
1139 1072 | [Video Ad Designer](kodify.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 100 % | ✅ |
1140 −| [VML](wundermanthompson.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 0 % | ✅ |
1141 1073 | [Volume7](volume7.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1142 1074 | [Warehouse Associate](zepinc.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1143 1075 | [WCG International Consultants Ltd.](wcginternationalconsultantsltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
1144 1076 | [WebProps.org](webprops.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
1145 1077 | [Westcliff](westcliff.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1146 −| [Westjet](westjet.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1147 1078 | [Wingtra AG](wingtra_2.md) | [`lever`](ats-lever.md) | 1 | 0 % | 100 % | ✅ |
1148 −| [Wisemotion Robotics](wisemotion.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1149 −| [Wolseley Canada](wolseley.md) | [`workday`](ats-workday.md) | 1 | 100 % | 0 % | ✅ |
1150 −| [Workwear Outfitters](workwear.md) | [`workday`](ats-workday.md) | 1 | 0 % | 0 % | ✅ |
1151 −| [Wyze Labs](wyze_labs.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1152 1079 | [Xplornet](xplornet.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1153 1080 | [YouSet](youset.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ |
1154 −| [ZOLL Medical](zoll.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1155 −| [Zscaler](zscaler.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1081 +| [Zebra](zebra.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
1156 1082 | [École des entrepreneurs du Québec](coledesentrepreneursduqubec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1157 −| [Électricien industriel](g3canada.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ |
1158 1083 | [Évolupharma Inc.](volupharmainc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
1159 −| [Fccfac](fccfac.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1160 −| [Flinks](flinks.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ |
1084 +| [11 Residential](residential11.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1085 +| [4th Day Trucking](x4th_day_trucking.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1086 +| [Alliance de la Fonction publique du Canada](psacunion.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1087 +| [Altom Transport](altom_transport.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ |
1088 +| [Bluetooth SIG, Inc.](bluetoothsiginc.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1089 +| [Building Blocks Early Learning Center](blockslearning.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1090 +| [California Closets](californiaclosets.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 0 | — | — | ✅ |
1091 +| [Clinique D](cliniqued.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1092 +| [Conseil de gestion financière des Premières Nations (FNFMB)](fnfmb.md) | [`dayforce`](ats-dayforce.md) | 0 | — | — | ✅ |
1093 +| [Consultdss](consultdss.md) | [`recruitee`](ats-recruitee.md) | 0 | — | — | ✅ |
1094 +| [CoorsTek](coorstek.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1095 +| [CPAB (Conseil canadien sur la reddition de comptes)](cpab.md) | [`dayforce`](ats-dayforce.md) | 0 | — | — | ✅ |
1096 +| [CSC Generation](cscgeneration_2.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1097 +| [Delos Data](delos_data.md) | [`ashby`](ats-ashby.md) | 0 | — | — | ✅ |
1098 +| [DropGenie](drop_genie.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1099 +| [Earth Rated](earthrated.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1100 +| [EC-Solutions](ecsolutions.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1101 +| [Echodyne Corp](echodynecorp.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1102 +| [Edelman Financial Engines, LLC](edelmanfinancialenginesllc.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1103 +| [EP Wealth Advisors](epwealth.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1104 +| [Family Resource Home Care](family_resource_home_care.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1105 +| [FortNine](canadasmotorcycle.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1106 +| [G3 Canada](g3canada.md) | [`dayforce`](ats-dayforce.md) | 0 | — | — | ✅ |
1107 +| [Gastro Health](gastro_health.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1108 +| [GEOX](geox.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1109 +| [Gilead Sciences](gilead.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1110 +| [Groupe Altus](altusgroup.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1161 1111 | [Gunnebo Canada](gunnebo_safe_storage_canada.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ |
1112 +| [H & S Loss Control Inspections](h_s_loss_control_inspections_in.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1113 +| [Hera AI](hera.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1114 +| [Imerys](imerys.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1115 +| [Industrious](industrious.md) | [`ashby`](ats-ashby.md) | 0 | — | — | ✅ |
1116 +| [Insite Property Solutions](insite_property_solutions.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1117 +| [Insomnia Cookies](insomniacookies.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1118 +| [J.S. Held LLC](jsheldllc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 0 | — | — | ✅ |
1119 +| [Kestra Medical Technologies Inc.](kestramedicaltechnologiesinc.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1120 +| [Lake Washington Dermatology](lakewashingtondermatology.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1121 +| [Latys Intelligence](latys.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1122 +| [LifeStance Health](lifestance.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1123 +| [Loblaw (Provigo / Maxi)](myview.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1124 +| [Mobz](jobmobz1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 0 | — | — | ✅ |
1125 +| [Nadel International](nadel.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1126 +| [Ocado Group](ocadogroup.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1127 +| [Ogilvy Canada](ogilvycanada.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1128 +| [On Running](onrunning.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1129 +| [One Medical](onemedical.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1130 +| [Osgoode Properties](osgoode_properties.md) | [`adp`](ats-adp.md) | 0 | — | — | ✅ |
1131 +| [Parallelz](parallelz.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ |
1132 +| [Passport Brand Design](passportbranddesign.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1133 +| [Paythings](paythings_19f14e354a62.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1134 +| [Pelmorex](pelmorex.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1135 +| [PhyNet Dermatology LLC (External)](phynetdermatology.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1136 +| [Placements Mackenzie (Power/IGM)](mackenzie.md) | [`icims`](ats-icims.md) | 0 | — | — | ✅ |
1137 +| [Poolcorp](poolcorp.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1138 +| [Poulet Rouge](pouletrouge.md) | [`bamboohr`](ats-bamboohr.md) | 0 | — | — | ✅ |
1162 1139 | [Projevia](projevia.md) | [`recruitee`](ats-recruitee.md) | 0 | — | — | n/d |
1140 +| [QuadReal (QuadReal Property Group)](quadreal.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1141 +| [Quandela](quandela.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ |
1142 +| [Ridepanda](ridepanda.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1143 +| [Rollstack](rollstack.md) | [`ashby`](ats-ashby.md) | 0 | — | — | ✅ |
1144 +| [Seymour Pacific Developments](seymourpacificdevelopmentsltd.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1163 1145 | [Shell Canada](shell.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1164 −| [SOVRA](sovra.md) | [`ashby`](ats-ashby.md) | 0 | — | — | ✅ |
1165 −| [Synnex](synnex.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1146 +| [Sofinafoods](sofinafoods.md) | [`dayforce`](ats-dayforce.md) | 0 | — | — | ✅ |
1147 +| [Software Mind](softwaremind.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 0 | — | — | ✅ |
1148 +| [SOL Mental Health](solmentalhealth.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1149 +| [Spectra Premium](spectrapremium.md) | [`dayforce`](ats-dayforce.md) | 0 | — | — | ✅ |
1150 +| [SRS Merchandising](srs_merchandising.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1151 +| [Sweeney Conrad](sweeneyconrad.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1152 +| [SwiftConnect](swiftconnect.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1153 +| [Synterra](synterra.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1154 +| [Talent Acquisition Partner](euromoneyplc.md) | [`dayforce`](ats-dayforce.md) | 0 | — | — | ✅ |
1155 +| [Teal Communications, Inc.](tealcommunicationsinc.md) | [`jazzhr`](ats-jazzhr.md) | 0 | — | — | ✅ |
1156 +| [Tefron](tefron.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1157 +| [Terrestar - Strigo](strigofr.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1158 +| [Topcon](topcon.md) | [`workday`](ats-workday.md) | 0 | — | — | ✅ |
1159 +| [Triumvirate Environmental](triumvirateenvironmental.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1160 +| [Trueline](trueline.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1161 +| [USA Mechanical & Energy Services](usamechasp.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1162 +| [VA Desk](vadesk.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1166 1163 | [Valence Labs](valencelabs.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1164 +| [Wisemotion Robotics](wisemotion.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1165 +| [Wyze Labs](wyze_labs.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1167 1166
1168 1167 ## Régénérer cette documentation
1169 1168
modified docs/connecteurs/a2design.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/a2design.md
7 7 Rôle : Fiche connecteur — A2 Design (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Designer d'intérieur (candidature spontannée)* — Laval ·
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/3 actives (0 %)
84 84 - **GPS** : 3/3 actives (100 %)
85 85 - **Mode** : 3/3 actives (100 %)
86 86 - **Parution** : 3/3 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:52 — trouvées 3, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 2
87 +- **Dernier sync** : 2026-09-21 16:33 — trouvées 3, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 330
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 2 | 2026-09-18 12:45 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync a2design` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='a2design' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/abbott.md +25 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/abbott.md
7 7 Rôle : Fiche connecteur — Abbott (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **10 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 90 % |
50 −| `region` — Région | région administrative | 90 % |
49 +| `city` — Ville | municipalité normalisée | 100 % |
50 +| `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 40 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 43 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 20 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 20 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 14 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 14 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 90 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Responsable régional(e) des ventes - Abbott, soins au point d'intervention (Québec et côte…* — Québec · Le salaire annuel de base pour ce poste se situe entre 99 750.00 $ et $146,300.00​ $ CA · parue le 2026-08-19.
67 +Exemple réel : *Responsable régional(e) des ventes - Abbott, soins au point d'intervention (Québec et côte…* — Québec · Le salaire annuel de base pour ce poste se situe entre 99 750.00 $ et $146,300.00​ $ CA · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Responsable régional(e) des ventes - Abbott, soins au point d'
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 2/10 actives (20 %)
86 −- **GPS** : 9/10 actives (90 %)
87 −- **Mode** : 4/10 actives (40 %)
88 −- **Parution** : 10/10 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 2, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 28
84 +- **Offres en base** : 14 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/7 actives (14 %)
86 +- **GPS** : 7/7 actives (100 %)
87 +- **Mode** : 3/7 actives (43 %)
88 +- **Parution** : 7/7 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:33 — trouvées 7, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 351
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:28 |
99 +| HTTPSConnectionPool(host='abbott.wd5.myworkdayjobs.com', port=443): Max retries exceeded w… | 2 | 2026-09-18 12:46 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:13 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync abbott` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='abbott' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/abbvie.md +16 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/abbvie.md
7 7 Rôle : Fiche connecteur — AbbVie (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **18 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Chef, Exécution de projets stratégiques, Gastroentérologie* — Montréal · ∅ · parue le 2026-08-21.
65 +Exemple réel : *Analyste principal, Finances* — Montréal · ∅ · parue le 2026-09-20.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Chef, Exécution de projets stratégiques, Gastroentérologie*
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/8 actives (0 %)
84 −- **GPS** : 8/8 actives (100 %)
85 −- **Mode** : 8/8 actives (100 %)
86 −- **Parution** : 8/8 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 8, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Offres en base** : 41 (dont **18 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/18 actives (0 %)
84 +- **GPS** : 18/18 actives (100 %)
85 +- **Mode** : 18/18 actives (100 %)
86 +- **Parution** : 18/18 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:33 — trouvées 18, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 331
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 2 | 2026-09-18 12:46 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync abbvie` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='abbvie' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/abinbev.md +25 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/abinbev.md
7 7 Rôle : Fiche connecteur — Abinbev (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **30 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **28 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **30 offres actives** de la source (base live, 2026
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 60 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 64 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 89 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 89 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 82 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 80 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 82 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Spécialiste Mise en Marché (Marchandiseur) - Laval* — Montréal · SALAIRE HORAIRE : Le salaire est de 21 , 44 $/heure · parue le 2026-08-24.
67 +Exemple réel : *Opérateur Brassage - Temporaire* — Québec · SALAIRE : Le salaire est de 26,79$/heure · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,27 @@ Exemple réel : *Spécialiste Mise en Marché (Marchandiseur) - Laval* — Montr
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 31 (dont **30 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 30/30 actives (100 %)
86 −- **GPS** : 30/30 actives (100 %)
87 −- **Mode** : 0/30 actives (0 %)
88 −- **Parution** : 30/30 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 30, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 41 (dont **28 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 25/28 actives (89 %)
86 +- **GPS** : 28/28 actives (100 %)
87 +- **Mode** : 0/28 actives (0 %)
88 +- **Parution** : 28/28 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 28, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 330
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:30 |
99 +| HTTPSConnectionPool(host='abinbev.wd1.myworkdayjobs.com', port=443): Max retries exceeded … | 2 | 2026-09-18 12:46 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:13 |
101 +| 502 Server Error: Bad Gateway for url: https://abinbev.wd1.myworkdayjobs.com/wday/cxs/abin… | 1 | 2026-08-27 10:17 |
102 +| 502 Server Error: Bad Gateway for url: https://abinbev.wd1.myworkdayjobs.com/wday/cxs/abin… | 1 | 2026-08-27 00:09 |
95 103
96 104 - Rejouer un sync isolé : `.venv/bin/python run.py sync abinbev` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='abinbev' ORDER BY ts DESC LIMIT 5;"`
97 105 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/above_flights.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/above_flights.md
7 7 Rôle : Fiche connecteur — Above Flights (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -72,19 +72,23 @@ Exemple réel : *Editor & Mastermind* — Montréal · ∅ · parue le 2018-05-2
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 330
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='above-flights.breezy.hr', port=443): Max retries exceeded with u… | 2 | 2026-09-18 12:46 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync above_flights` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='above_flights' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/abritek.md +22 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/abritek.md
7 7 Rôle : Fiche connecteur — Abritek (employeur direct, ATS adp)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -39,7 +39,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 ## Champs → schéma
41 41
42 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
42 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
43 43
44 44 | Champ (`jobs.*`) | Rôle | Complétude |
45 45 |---|---|---|
@@ -50,22 +50,22 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
50 50 | `city` — Ville | municipalité normalisée | 100 % |
51 51 | `region` — Région | région administrative | 100 % |
52 52 | `address` — Adresse | adresse du lieu de travail | 0 % |
53 −| `postal_code` — Code postal | code postal si publié | 0 % |
53 +| `postal_code` — Code postal | code postal si publié | 33 % |
54 54 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
55 55 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
56 56 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
57 57 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
58 58 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
59 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
59 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 33 % |
60 60 | `date_posted` — Date de parution | ISO 8601 | 100 % |
61 61 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
62 62 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
63 63 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
64 64 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
65 65 | `apply_url` — Candidature | lien de candidature directe | 0 % |
66 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
66 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
67 67
68 −Exemple réel : *Réceptionniste et SAC* — Daveluyville · ∅ · parue le 2026-08-14.
68 +Exemple réel : *Assemblage-montage* — Daveluyville · ∅ · parue le 2026-09-21.
69 69
70 70 ## Fréquence & budgets
71 71
@@ -80,19 +80,26 @@ Exemple réel : *Réceptionniste et SAC* — Daveluyville · ∅ · parue le 202
80 80
81 81 ## Volumétrie & complétude live
82 82
83 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
83 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
84 84
85 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
86 −- **Salaire** : 6/6 actives (100 %)
87 −- **GPS** : 0/6 actives (0 %)
88 −- **Mode** : 0/6 actives (0 %)
89 −- **Parution** : 6/6 actives (100 %)
90 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 6, +0, ~0, -0
91 −- **Syncs enregistrés** (`sync_log`) : 3
85 +- **Offres en base** : 7 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
86 +- **Salaire** : 3/3 actives (100 %)
87 +- **GPS** : 3/3 actives (100 %)
88 +- **Mode** : 0/3 actives (0 %)
89 +- **Parution** : 3/3 actives (100 %)
90 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 3, +0, ~2, -0
91 +- **Syncs enregistrés** (`sync_log`) : 326
92 92
93 93 ## Erreurs & dépannage
94 94
95 −Aucune erreur dans `sync_log` pour cette source.
95 +Erreurs relevées dans `sync_log` :
96 +
97 +| Erreur | Occurrences | Dernière fois |
98 +|---|---|---|
99 +| 500 Server Error: Internal Server Error for url: https://workforcenow.adp.com/mascsr/defau… | 1 | 2026-09-19 11:30 |
100 +| 404 Client Error: Not Found for url: https://workforcenow.adp.com/mascsr/default/careercen… | 1 | 2026-09-19 02:30 |
101 +| HTTPSConnectionPool(host='workforcenow.adp.com', port=443): Max retries exceeded with url:… | 2 | 2026-09-18 12:46 |
102 +| Expecting value: line 1 column 1 (char 0) | 4 | 2026-08-30 00:54 |
96 103
97 104 - Rejouer un sync isolé : `.venv/bin/python run.py sync abritek` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='abritek' ORDER BY ts DESC LIMIT 5;"`
98 105 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/ac780.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ac780.md
7 7 Rôle : Fiche connecteur — AC780 (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Paytm Senior Software Engineer* — Montréal · ∅ · parue l
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='ac780.breezy.hr', port=443): Max retries exceeded with url: /jso… | 1 | 2026-09-18 12:46 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync ac780` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ac780' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/acadierouge.md +16 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/acadierouge.md
7 7 Rôle : Fiche connecteur — Air Canada Rouge (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,22 +49,22 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 −| `postal_code` — Code postal | code postal si publié | 60 % |
52 +| `postal_code` — Code postal | code postal si publié | 40 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 80 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 20 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 20 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 −| `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 40 % |
60 +| `date_deadline` — Date limite | date limite pour postuler | 60 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 60 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Agent(e) de Centre d'Appels Bilingue* — Montréal · Primes de $1 pour les heures travaillées en semaine avant 8 h ou après 18 h, ainsi que tou… · parue le 2026-06-24.
67 +Exemple réel : *Agent(e) de Centre d'Appels* — Montréal · Primes de $1 pour les heures travaillées en semaine avant 8 h ou après 18 h, ainsi que tou… · parue le 2026-06-24.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,23 @@ Exemple réel : *Agent(e) de Centre d'Appels Bilingue* — Montréal · Primes d
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
84 +- **Offres en base** : 7 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 1/5 actives (20 %)
86 86 - **GPS** : 5/5 actives (100 %)
87 87 - **Mode** : 0/5 actives (0 %)
88 88 - **Parution** : 5/5 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 5, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 28
89 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 5, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 349
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='jobs.dayforcehcm.com', port=443): Max retries exceeded with url:… | 1 | 2026-09-18 12:46 |
95 99
96 100 - Rejouer un sync isolé : `.venv/bin/python run.py sync acadierouge` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='acadierouge' ORDER BY ts DESC LIMIT 5;"`
97 101 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/accediannetworks.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/accediannetworks.md
7 7 Rôle : Fiche connecteur — Accedian Networks (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Embedded Software Designer* — Montréal · ∅ · parue le 20
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/6 actives (0 %)
84 84 - **GPS** : 6/6 actives (100 %)
85 85 - **Mode** : 0/6 actives (0 %)
86 86 - **Parution** : 6/6 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:54 — trouvées 6, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 6, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:46 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync accediannetworks` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='accediannetworks' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/accenture.md +23 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/accenture.md
7 7 Rôle : Fiche connecteur — Senior Azure Solution Architect (Montreal – French Speaking) (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 42 % |
50 +| `region` — Région | région administrative | 42 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 8 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 92 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 80 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 92 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 42 % |
66 66
67 −Exemple réel : *Leader en prévente – Applications métier (BizApps) – Est du Canada* — Montréal · Colombie-Britannique / Ontario - 143 373 $ - 187 150 $ · parue le 2026-08-13.
67 +Exemple réel : *Conseiller(ère) en Adoption et Transformation de l’IA (Bilingue Français/Anglais)* — Montréal · 96 800 $ à 114 950 $ · parue le 2026-09-14.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Leader en prévente – Applications métier (BizApps) – Est
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 5/5 actives (100 %)
86 −- **GPS** : 5/5 actives (100 %)
87 −- **Mode** : 0/5 actives (0 %)
88 −- **Parution** : 5/5 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 5, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 15 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 12/12 actives (100 %)
86 +- **GPS** : 5/12 actives (42 %)
87 +- **Mode** : 1/12 actives (8 %)
88 +- **Parution** : 12/12 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 11, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 329
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='accenture.wd103.myworkdayjobs.com', port=443): Max retries excee… | 1 | 2026-09-18 12:46 |
99 +| Workday 5xx après 3 essais : 503 Server Error: Service Unavailable for url: https://accent… | 1 | 2026-09-11 22:27 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync accenture` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='accenture' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/accorhotel.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/accorhotel.md
7 7 Rôle : Fiche connecteur — AccorHotel (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **50 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **46 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,19 +50,19 @@ Complétude mesurée sur les **50 offres actives** de la source (base live, 2026
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 74 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 74 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 59 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 59 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 64 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 61 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Associé aux ventes au détail (Temps plein) - Boutique Fairmont Québec* — Québec · Taux de rémunération : 18,50 $ de l'heure · parue le 2026-08-24.
65 +Exemple réel : *Hôte.sse, temps plein (H/F/D)* — La Malbaie · Salaire : 22.31$/H · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Associé aux ventes au détail (Temps plein) - Boutique Fairmon
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 56 (dont **50 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 37/50 actives (74 %)
84 −- **GPS** : 50/50 actives (100 %)
85 −- **Mode** : 0/50 actives (0 %)
86 −- **Parution** : 50/50 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 50, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Offres en base** : 128 (dont **46 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 27/46 actives (59 %)
84 +- **GPS** : 46/46 actives (100 %)
85 +- **Mode** : 0/46 actives (0 %)
86 +- **Parution** : 46/46 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 45, +4, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:46 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync accorhotel` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='accorhotel' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/acuity_insights.md +20 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/acuity_insights.md
7 7 Rôle : Fiche connecteur — Acuity Insights (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,19 +50,19 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 75 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 75 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 75 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 25 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Casper Rating Operations Associate - English & French* — Montréal · The starting salary range for this role is between $60,000–$75,000 CAD · parue le 2026-08-24.
65 +Exemple réel : *Senior Admissions Test Content Specialist (Casper) - English & French* — Montréal · The starting salary for Senior roles is between $75,000 - $85,000 CAD · parue le 2026-08-12.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Casper Rating Operations Associate - English & French* — Mont
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 3/4 actives (75 %)
79 −- **GPS** : 4/4 actives (100 %)
80 −- **Mode** : 4/4 actives (100 %)
81 −- **Parution** : 4/4 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 4, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 4 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 1/1 actives (100 %)
79 +- **GPS** : 1/1 actives (100 %)
80 +- **Mode** : 1/1 actives (100 %)
81 +- **Parution** : 1/1 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:46 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync acuity_insights` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='acuity_insights' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/acumatica.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/acumatica.md
7 7 Rôle : Fiche connecteur — Acumatica (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,8 +50,8 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 25 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 25 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Solution Architect* — Montréal · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Senior Manager, Presales Engineering* — Montréal · Direct, hands-on experience with implementations or sales or pre-sales within the manufact… · parue le 2026-09-11.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Solution Architect* — Montréal · ∅ · parue le 2026-08-24
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 6 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/5 actives (0 %)
84 −- **GPS** : 5/5 actives (100 %)
85 −- **Mode** : 5/5 actives (100 %)
86 −- **Parution** : 5/5 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 5, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Offres en base** : 13 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 1/4 actives (25 %)
84 +- **GPS** : 4/4 actives (100 %)
85 +- **Mode** : 4/4 actives (100 %)
86 +- **Parution** : 4/4 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 4, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:46 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync acumatica` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='acumatica' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/adaptivefinancialconsulting.md +15 −11
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/adaptivefinancialconsulting.md
7 7 Rôle : Fiche connecteur — Adaptive Financial Consulting (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,8 +50,8 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Senior Java Developer Montreal* — Montréal · 50% of a gym membership or any well-being activity, with a maximum of $50 a month · parue le 2025-11-28.
65 +Exemple réel : *Senior Java Developer - Montreal - Fintech* — Montréal · ∅ · parue le 2026-09-03.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Senior Java Developer Montreal* — Montréal · 50% of a gym m
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 1/1 actives (100 %)
77 +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:46 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync adaptivefinancialconsulting` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='adaptivefinancialconsulting' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/adeleexpressfr.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/adeleexpressfr.md
7 7 Rôle : Fiche connecteur — Adèle Express (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Professionnel de ménage - Pour entretien ménager à domicile - Offre / Juin 2026* — Montréal · ∅ · parue le 2026-06-23.
65 +Exemple réel : *Professionnel de ménage - Pour entretien ménager à domicile - Offre / Septembre-Octobre 20…* — Montréal · ∅ · parue le 2026-06-23.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Professionnel de ménage - Pour entretien ménager à domicile
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 3/5 actives (60 %)
79 79 - **GPS** : 5/5 actives (100 %)
80 80 - **Mode** : 5/5 actives (100 %)
81 81 - **Parution** : 5/5 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 5, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
82 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 5, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 430
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='adeleexpressfr.recruitee.com', port=443): Max retries exceeded w… | 1 | 2026-09-18 12:46 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync adeleexpressfr` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='adeleexpressfr' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/adfdiesel.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/adfdiesel.md
7 7 Rôle : Fiche connecteur — ADF Diesel (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Mécanicien Diesel* — Candiac · ∅ · parue le 2021-08-26.
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 0/1 actives (0 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 2
87 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 323
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:46 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync adfdiesel` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='adfdiesel' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/adgagroupconsultantsinc1.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/adgagroupconsultantsinc1.md
7 7 Rôle : Fiche connecteur — ADGA Group Consultants Inc (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Technicien de maintenance des systèmes de sécurité / Securit
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 0/1 actives (0 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:46 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync adgagroupconsultantsinc1` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='adgagroupconsultantsinc1' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/adi_albert_davidson_industries.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/adi_albert_davidson_industries.md
7 7 Rôle : Fiche connecteur — ADI - Albert Davidson Industries (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,12 +48,12 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 100 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 11 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 10 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 50 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Assistant Production Director* — Pointe-Claire · $28 – $34 / hour · parue le 2026-06-08.
65 +Exemple réel : *Conventional Machinist* — Pointe-Claire · $22 – $27 / hour · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Assistant Production Director* — Pointe-Claire · $28 – $34
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 9/9 actives (100 %)
79 −- **GPS** : 9/9 actives (100 %)
80 −- **Mode** : 1/9 actives (11 %)
81 −- **Parution** : 9/9 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 9, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
77 +- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 10/10 actives (100 %)
79 +- **GPS** : 10/10 actives (100 %)
80 +- **Mode** : 1/10 actives (10 %)
81 +- **Parution** : 10/10 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 10, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 430
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='adi-albert-davidson-industries.breezy.hr', port=443): Max retrie… | 1 | 2026-09-18 12:46 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync adi_albert_davidson_industries` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='adi_albert_davidson_industries' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/adoc_tm.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/adoc_tm.md
7 7 Rôle : Fiche connecteur — Adoc Talent Management (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 67 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Responsable des ventes B2B – Équipements scientifiques* —
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/3 actives (0 %)
79 79 - **GPS** : 3/3 actives (100 %)
80 80 - **Mode** : 1/3 actives (33 %)
81 81 - **Parution** : 3/3 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 3, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 3, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='adoc-tm.breezy.hr', port=443): Max retries exceeded with url: /j… | 1 | 2026-09-18 12:46 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync adoc_tm` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='adoc_tm' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/advanceauto.md +24 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/advanceauto.md
7 7 Rôle : Fiche connecteur — Advanceauto (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **39 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **46 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **39 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 62 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 63 % |
50 +| `region` — Région | région administrative | 98 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 −| `postal_code` — Code postal | code postal si publié | 100 % |
52 +| `postal_code` — Code postal | code postal si publié | 98 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 33 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 50 % |
66 66
67 −Exemple réel : *Livreur* — Boucherville · ∅ · parue le 2026-08-24.
67 +Exemple réel : *General Manager - Store CAN6851* — Rimouski · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,26 @@ Exemple réel : *Livreur* — Boucherville · ∅ · parue le 2026-08-24.
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 42 (dont **39 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/39 actives (0 %)
86 −- **GPS** : 13/39 actives (33 %)
87 −- **Mode** : 0/39 actives (0 %)
88 −- **Parution** : 39/39 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 39, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 77 (dont **46 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/46 actives (0 %)
86 +- **GPS** : 23/46 actives (50 %)
87 +- **Mode** : 0/46 actives (0 %)
88 +- **Parution** : 46/46 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 45, +2, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 329
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:31 |
99 +| HTTPSConnectionPool(host='advanceauto.wd5.myworkdayjobs.com', port=443): Max retries excee… | 1 | 2026-09-18 12:47 |
100 +| HTTPSConnectionPool(host='advanceauto.wd5.myworkdayjobs.com', port=443): Read timed out. (… | 1 | 2026-09-03 03:29 |
101 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:14 |
95 102
96 103 - Rejouer un sync isolé : `.venv/bin/python run.py sync advanceauto` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='advanceauto' ORDER BY ts DESC LIMIT 5;"`
97 104 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/advens.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/advens.md
7 7 Rôle : Fiche connecteur — ADVENS (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Security Analyst (H/F)* — Montréal · ∅ · parue le 2026-0
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/2 actives (0 %)
84 84 - **GPS** : 2/2 actives (100 %)
85 85 - **Mode** : 0/2 actives (0 %)
86 86 - **Parution** : 2/2 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:55 — trouvées 2, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:34 — trouvées 2, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:47 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync advens` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='advens' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aecom2.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aecom2.md
7 7 Rôle : Fiche connecteur — AECOM (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **20 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,7 +48,7 @@ Complétude mesurée sur les **20 offres actives** de la source (base live, 2026
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 95 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
@@ -56,13 +56,13 @@ Complétude mesurée sur les **20 offres actives** de la source (base live, 2026
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 65 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 75 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Ingénieur(e) hydraulique principal(e) - centrales et barrages* — Gatineau · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Directeur(trice) de projet – Conception-construction* — Montréal · ∅ · parue le 2026-09-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Ingénieur(e) hydraulique principal(e) - centrales et barrages*
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 20 (dont **20 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/20 actives (0 %)
84 −- **GPS** : 20/20 actives (100 %)
85 −- **Mode** : 19/20 actives (95 %)
86 −- **Parution** : 20/20 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 20, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Offres en base** : 38 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/12 actives (0 %)
84 +- **GPS** : 12/12 actives (100 %)
85 +- **Mode** : 12/12 actives (100 %)
86 +- **Parution** : 12/12 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 11, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:47 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync aecom2` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aecom2' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/afg.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/afg.md
7 7 Rôle : Fiche connecteur — ApexFocusGroup (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **46 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **46 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -72,19 +72,23 @@ Exemple réel : *Part-Time Work At Home Research Panelist. Ideal For Office Assi
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 46 (dont **46 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/46 actives (0 %)
79 79 - **GPS** : 46/46 actives (100 %)
80 80 - **Mode** : 46/46 actives (100 %)
81 81 - **Parution** : 46/46 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 60, +0, ~21, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 60, +0, ~21, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:47 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync afg` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='afg' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/africa_moko.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/africa_moko.md
7 7 Rôle : Fiche connecteur — MOKO (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -72,19 +72,23 @@ Exemple réel : *Co-Founder - Full-Stack Developer* — Montréal · ∅ · paru
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='africa-moko.breezy.hr', port=443): Max retries exceeded with url… | 1 | 2026-09-18 12:47 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync africa_moko` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='africa_moko' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/agapyo.md +13 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/agapyo.md
7 7 Rôle : Fiche connecteur — Agapyo (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Directeur Fabrication et Opérations / Director Manufacturing and Operations* — Montréal · ∅ · parue le 2025-11-24.
65 +Exemple réel : *Directeur de la fabrication / Director of Manufacturing* — Montréal · ∅ · parue le 2026-09-03.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Directeur Fabrication et Opérations / Director Manufacturing a
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:47 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync agapyo` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='agapyo' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/agence_carrieres.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/agence_carrieres.md
7 7 Rôle : Fiche connecteur — Agence (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Enseignste au primaire* — Montréal · $56K–$90K par année
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/1 actives (100 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 329
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='agence-carrieres.breezy.hr', port=443): Max retries exceeded wit… | 1 | 2026-09-18 12:47 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync agence_carrieres` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='agence_carrieres' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/agencemaplrinc.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/agencemaplrinc.md
7 7 Rôle : Fiche connecteur — Agence Maplr Inc. (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Développeur/euse JAVA Fullstack (Poste pour Montréal/Canada !
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/3 actives (0 %)
84 84 - **GPS** : 3/3 actives (100 %)
85 85 - **Mode** : 0/3 actives (0 %)
86 86 - **Parution** : 3/3 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 3, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 3, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:47 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync agencemaplrinc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='agencemaplrinc' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/agglobeservices.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/agglobeservices.md
7 7 Rôle : Fiche connecteur — AG Globe Services (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Software Engineer (C++)* — Montréal · ∅ · parue le 2018-
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 0/1 actives (0 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 329
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:47 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync agglobeservices` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='agglobeservices' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/agiledss.md +16 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/agiledss.md
7 7 Rôle : Fiche connecteur — Agile DSS (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Data Engineer AWS* — Montréal · ∅ · parue le 2026-08-20.
65 +Exemple réel : *Architecte de Solutions Data - Recrutement international (Montréal)* — Montréal · ∅ · parue le 2026-09-17.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Data Engineer AWS* — Montréal · ∅ · parue le 2026-08-20.
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/4 actives (0 %)
79 −- **GPS** : 4/4 actives (100 %)
80 −- **Mode** : 4/4 actives (100 %)
81 −- **Parution** : 4/4 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 4, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 29
77 +- **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/8 actives (0 %)
79 +- **GPS** : 8/8 actives (100 %)
80 +- **Mode** : 8/8 actives (100 %)
81 +- **Parution** : 8/8 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 8, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 350
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='agiledss.recruitee.com', port=443): Max retries exceeded with ur… | 1 | 2026-09-18 12:47 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync agiledss` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='agiledss' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/agnico_eagle.md +19 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/agnico_eagle.md
7 7 Rôle : Fiche connecteur — Agnico Eagle Mines (employeur direct, ATS taleo)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -39,7 +39,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 ## Champs → schéma
41 41
42 −Complétude mesurée sur les **27 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
42 +Complétude mesurée sur les **70 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
43 43
44 44 | Champ (`jobs.*`) | Rôle | Complétude |
45 45 |---|---|---|
@@ -52,20 +52,20 @@ Complétude mesurée sur les **27 offres actives** de la source (base live, 2026
52 52 | `address` — Adresse | adresse du lieu de travail | 0 % |
53 53 | `postal_code` — Code postal | code postal si publié | 0 % |
54 54 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
55 −| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
55 +| `employment_type` — Type | temps_plein / temps_partiel / … | 64 % |
56 56 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
57 57 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
58 58 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
59 59 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
60 60 | `date_posted` — Date de parution | ISO 8601 | 0 % |
61 −| `date_deadline` — Date limite | date limite pour postuler | 96 % |
61 +| `date_deadline` — Date limite | date limite pour postuler | 87 % |
62 62 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
63 63 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
64 64 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
65 65 | `apply_url` — Candidature | lien de candidature directe | 0 % |
66 66 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
67 67
68 −Exemple réel : *Coordonnateur ressources humaines – processus et projets* — Québec · ∅ · parue le ∅.
68 +Exemple réel : *Contrôleur adjoint* — Québec · ∅ · parue le ∅.
69 69
70 70 ## Fréquence & budgets
71 71
@@ -80,19 +80,24 @@ Exemple réel : *Coordonnateur ressources humaines – processus et projets* —
80 80
81 81 ## Volumétrie & complétude live
82 82
83 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
83 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
84 84
85 −- **Offres en base** : 35 (dont **27 actives**, 0 masquées comme doublons `dup_of`)
86 −- **Salaire** : 0/27 actives (0 %)
87 −- **GPS** : 27/27 actives (100 %)
88 −- **Mode** : 0/27 actives (0 %)
89 −- **Parution** : 0/27 actives (0 %)
90 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 27, +0, ~0, -0
91 −- **Syncs enregistrés** (`sync_log`) : 98
85 +- **Offres en base** : 118 (dont **70 actives**, 0 masquées comme doublons `dup_of`)
86 +- **Salaire** : 0/70 actives (0 %)
87 +- **GPS** : 70/70 actives (100 %)
88 +- **Mode** : 0/70 actives (0 %)
89 +- **Parution** : 0/70 actives (0 %)
90 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 70, +0, ~2, -0
91 +- **Syncs enregistrés** (`sync_log`) : 418
92 92
93 93 ## Erreurs & dépannage
94 94
95 −Aucune erreur dans `sync_log` pour cette source.
95 +Erreurs relevées dans `sync_log` :
96 +
97 +| Erreur | Occurrences | Dernière fois |
98 +|---|---|---|
99 +| HTTPSConnectionPool(host='agnicoeagle.taleo.net', port=443): Max retries exceeded with url… | 1 | 2026-09-18 12:47 |
100 +| taleo agnicoeagle: numéro de portail introuvable | 1 | 2026-09-01 00:15 |
96 101
97 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync agnico_eagle` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='agnico_eagle' ORDER BY ts DESC LIMIT 5;"`
98 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/agropur.md +19 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/agropur.md
7 7 Rôle : Fiche connecteur — Agropur (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **67 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **64 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -47,24 +47,24 @@ Complétude mesurée sur les **67 offres actives** de la source (base live, 2026
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
50 +| `region` — Région | région administrative | 97 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 2 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 94 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 94 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 57 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 45 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 97 % |
66 66
67 −Exemple réel : *Strategic Sourcing Category Manager* — Québec · Salary scale 006: $ : 100 900 to $126 100 (Base salary will be determined based on your ac… · parue le 2026-08-24.
67 +Exemple réel : *Préparateur de commandes* — Québec · Salaire de 26,94 $/heure · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Strategic Sourcing Category Manager* — Québec · Salary scal
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 82 (dont **67 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 63/67 actives (94 %)
86 −- **GPS** : 67/67 actives (100 %)
87 −- **Mode** : 0/67 actives (0 %)
88 −- **Parution** : 67/67 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:56 — trouvées 67, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 109
84 +- **Offres en base** : 131 (dont **64 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 60/64 actives (94 %)
86 +- **GPS** : 62/64 actives (97 %)
87 +- **Mode** : 1/64 actives (2 %)
88 +- **Parution** : 64/64 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 63, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 429
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,9 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:18 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:33 |
99 +| HTTPSConnectionPool(host='agropur.wd3.myworkdayjobs.com', port=443): Max retries exceeded … | 1 | 2026-09-18 12:47 |
100 +| Expecting value: line 1 column 1 (char 0) | 9 | 2026-08-29 03:15 |
99 101
100 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync agropur` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='agropur' ORDER BY ts DESC LIMIT 5;"`
101 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/airbus.md +22 −20
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/airbus.md
7 7 Rôle : Fiche connecteur — Airbus Canada (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **79 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **165 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -47,24 +47,24 @@ Complétude mesurée sur les **79 offres actives** de la source (base live, 2026
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
50 +| `region` — Région | région administrative | 99 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 1 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 1 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 1 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 5 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 5 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 1 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 99 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 82 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 79 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 99 % |
66 66
67 −Exemple réel : *Conseiller.ère recrutement/Recruitment Advisor* — Montréal · Salaire : 82 000$ · parue le 2026-08-12.
67 +Exemple réel : *Assembleur électrique d'avions* — Mirabel · Salaire horaire conventionnel pour 5 à 7 années d'expérience : entre 34,88 $ et 42,90$ · parue le 2026-09-16.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Conseiller.ère recrutement/Recruitment Advisor* — Montréal
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 87 (dont **79 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/79 actives (1 %)
86 −- **GPS** : 79/79 actives (100 %)
87 −- **Mode** : 0/79 actives (0 %)
88 −- **Parution** : 79/79 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 79, +0, ~0, -3
90 −- **Syncs enregistrés** (`sync_log`) : 97
84 +- **Offres en base** : 222 (dont **165 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 8/165 actives (5 %)
86 +- **GPS** : 164/165 actives (99 %)
87 +- **Mode** : 2/165 actives (1 %)
88 +- **Parution** : 165/165 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 164, +1, ~1, -1
90 +- **Syncs enregistrés** (`sync_log`) : 398
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,9 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:18 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:34 |
99 +| HTTPSConnectionPool(host='ag.wd3.myworkdayjobs.com', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:47 |
100 +| Expecting value: line 1 column 1 (char 0) | 9 | 2026-08-29 03:15 |
99 101 | 520 Server Error: <none> for url: https://ag.wd3.myworkdayjobs.com/wday/cxs/ag/Airbus/jobs | 1 | 2026-08-21 00:25 |
100 102 | HTTPSConnectionPool(host='ag.wd3.myworkdayjobs.com', port=443): Read timed out. (read time… | 1 | 2026-08-19 16:51 |
101 103
modified docs/connecteurs/airlabinc.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/airlabinc.md
7 7 Rôle : Fiche connecteur — Airlab Inc. (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *LEVEL DESIGNER* — Montréal · ∅ · parue le 2018-04-04.
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/10 actives (0 %)
84 84 - **GPS** : 10/10 actives (100 %)
85 85 - **Mode** : 0/10 actives (0 %)
86 86 - **Parution** : 10/10 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 10, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 10, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 309
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:47 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync airlabinc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='airlabinc' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/airliquidehr.md +22 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/airliquidehr.md
7 7 Rôle : Fiche connecteur — Airliquidehr (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **26 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **25 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,19 +52,19 @@ Complétude mesurée sur les **26 offres actives** de la source (base live, 2026
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 8 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 19 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 19 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 20 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 20 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 65 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 72 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Tank Truck Driver* — Varennes · Annual salary of $95,000 and up · parue le 2026-07-26.
67 +Exemple réel : *Tank Truck Driver* — Varennes · Annual salary of $95,000 and up · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Tank Truck Driver* — Varennes · Annual salary of $95,000 and
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 26 (dont **26 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 5/26 actives (19 %)
86 −- **GPS** : 26/26 actives (100 %)
87 −- **Mode** : 2/26 actives (8 %)
88 −- **Parution** : 26/26 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 26, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 33 (dont **25 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/25 actives (20 %)
86 +- **GPS** : 25/25 actives (100 %)
87 +- **Mode** : 2/25 actives (8 %)
88 +- **Parution** : 25/25 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:35 — trouvées 25, +1, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 306
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:35 |
99 +| HTTPSConnectionPool(host='airliquidehr.wd3.myworkdayjobs.com', port=443): Max retries exce… | 1 | 2026-09-18 12:48 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:15 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync airliquidehr` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='airliquidehr' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/ajholdingsltd.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ajholdingsltd.md
7 7 Rôle : Fiche connecteur — Ajholdingsltd (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,13 +52,13 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 75 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 75 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 33 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
@@ -79,19 +79,23 @@ Exemple réel : *Technicien en maintenance de quart de soir* — Salaberry-de-Va
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 3/4 actives (75 %)
86 −- **GPS** : 4/4 actives (100 %)
87 −- **Mode** : 0/4 actives (0 %)
88 −- **Parution** : 4/4 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 4, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 4 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 3/3 actives (100 %)
86 +- **GPS** : 3/3 actives (100 %)
87 +- **Mode** : 0/3 actives (0 %)
88 +- **Parution** : 3/3 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 3, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 306
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='jobs.dayforcehcm.com', port=443): Max retries exceeded with url:… | 1 | 2026-09-18 12:48 |
95 99
96 100 - Rejouer un sync isolé : `.venv/bin/python run.py sync ajholdingsltd` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ajholdingsltd' ORDER BY ts DESC LIMIT 5;"`
97 101 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/ajwalter.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ajwalter.md
7 7 Rôle : Fiche connecteur — AJ Walter Aviation (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -56,13 +56,13 @@ Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 40 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Spécialiste des ventes - Inside Sales Specialist* — Montréal · ∅ · parue le 2026-08-21.
65 +Exemple réel : *Technicien Mécanique - Mechanical Technician* — Montréal · ∅ · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Spécialiste des ventes - Inside Sales Specialist* — Montréa
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/8 actives (0 %)
79 −- **GPS** : 8/8 actives (100 %)
80 −- **Mode** : 8/8 actives (100 %)
81 −- **Parution** : 8/8 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 8, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
77 +- **Offres en base** : 11 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/10 actives (0 %)
79 +- **GPS** : 10/10 actives (100 %)
80 +- **Mode** : 10/10 actives (100 %)
81 +- **Parution** : 10/10 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 9, +1, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 406
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='ajwalter.recruitee.com', port=443): Max retries exceeded with ur… | 1 | 2026-09-18 12:48 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync ajwalter` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ajwalter' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alan.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alan.md
7 7 Rôle : Fiche connecteur — Alan Canada (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Psychothérapeute - Québec* — Québec · ∅ · parue le 202
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 29
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 326
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.ashbyhq.com', port=443): Max retries exceeded with url: /pos… | 1 | 2026-09-18 12:48 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync alan` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alan' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alayacare.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alayacare.md
7 7 Rôle : Fiche connecteur — AlayaCare (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,11 +49,11 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 14 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Manager, Software Development* — Montréal · ∅ · parue le 2026-08-11.
65 +Exemple réel : *Staff DevSecOps Specialist* — Montréal · ∅ · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Manager, Software Development* — Montréal · ∅ · parue le
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 10 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/9 actives (0 %)
79 −- **GPS** : 9/9 actives (100 %)
80 −- **Mode** : 0/9 actives (0 %)
81 −- **Parution** : 9/9 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 9, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 97
77 +- **Offres en base** : 20 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/14 actives (0 %)
79 +- **GPS** : 14/14 actives (100 %)
80 +- **Mode** : 0/14 actives (0 %)
81 +- **Parution** : 14/14 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 14, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 394
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:48 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync alayacare` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alayacare' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alcoa.md +21 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alcoa.md
7 7 Rôle : Fiche connecteur — Alcoa Canada (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **15 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **15 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 53 % |
50 −| `region` — Région | région administrative | 93 % |
49 +| `city` — Ville | municipalité normalisée | 42 % |
50 +| `region` — Région | région administrative | 92 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 13 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 13 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 42 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 42 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 79 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 87 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 40 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 29 % |
66 66
67 −Exemple réel : *Assistant(e) opérateur ou opératrice* — Baie-Comeau · Salaire horaire au-delà de 45 $ l'heure · parue le 2026-08-05.
67 +Exemple réel : *Électricien(ne)* — Baie-Comeau · - Salaire à partir de 50$ l'heure · parue le 2026-09-15.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Assistant(e) opérateur ou opératrice* — Baie-Comeau · Sala
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 17 (dont **15 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 2/15 actives (13 %)
86 −- **GPS** : 6/15 actives (40 %)
87 −- **Mode** : 0/15 actives (0 %)
88 −- **Parution** : 15/15 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 15, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 97
84 +- **Offres en base** : 40 (dont **24 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 10/24 actives (42 %)
86 +- **GPS** : 7/24 actives (29 %)
87 +- **Mode** : 0/24 actives (0 %)
88 +- **Parution** : 24/24 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 24, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 393
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,9 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:18 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:36 |
99 +| HTTPSConnectionPool(host='alcoa.wd5.myworkdayjobs.com', port=443): Max retries exceeded wi… | 1 | 2026-09-18 12:48 |
100 +| Expecting value: line 1 column 1 (char 0) | 9 | 2026-08-29 03:15 |
99 101
100 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync alcoa` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alcoa' ORDER BY ts DESC LIMIT 5;"`
101 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aleanzarecrutementdurable.md +26 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aleanzarecrutementdurable.md
7 7 Rôle : Fiche connecteur — Aleanza Recrutement Durable (employeur direct, ATS teamtailor)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -46,23 +46,23 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
46 46 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 50 % |
50 −| `postal_code` — Code postal | code postal si publié | 75 % |
49 +| `address` — Adresse | adresse du lieu de travail | 100 % |
50 +| `postal_code` — Code postal | code postal si publié | 100 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 25 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 100 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Technicien(ne) en architecture* — Sherbrooke · ∅ · parue le 2026-08-18.
65 +Exemple réel : *Expert-Conseil en Recrutement et Stratégie RH* — Québec · ∅ · parue le 2026-04-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Technicien(ne) en architecture* — Sherbrooke · ∅ · parue
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 1/4 actives (25 %)
84 −- **GPS** : 0/4 actives (0 %)
85 −- **Mode** : 0/4 actives (0 %)
86 −- **Parution** : 4/4 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:32 — trouvées 4, +4, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 1
82 +- **Offres en base** : 4 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 1/1 actives (100 %)
84 +- **GPS** : 1/1 actives (100 %)
85 +- **Mode** : 0/1 actives (0 %)
86 +- **Parution** : 1/1 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 297
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='aleanzarecrutementdurable.teamtailor.com', port=443): Max retrie… | 1 | 2026-09-18 12:48 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync aleanzarecrutementdurable` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aleanzarecrutementdurable' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -107,3 +111,7 @@ Aucune erreur dans `sync_log` pour cette source.
107 111 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
108 112 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
109 113 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
114 +
115 +Commits touchant `jobka/connectors/aleanzarecrutementdurable.py` :
116 +
117 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/aliaxis.md +25 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aliaxis.md
7 7 Rôle : Fiche connecteur — Aliaxis (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 86 % |
50 +| `region` — Région | région administrative | 86 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 33 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 33 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 43 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 43 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 71 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 86 % |
66 66
67 −Exemple réel : *Journalier* — Montréal · Poste : Journalier Statut : Temps plein, Permanent Taux horaire : 28.80$/heure + des prime… · parue le 2026-07-26.
67 +Exemple réel : *Project Engineer***Ingénieur de projet* — ∅ · The compensation for this position is between $70,800 and $88,500 CAN annually, based on e… · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Journalier* — Montréal · Poste : Journalier Statut : Temps
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 2/6 actives (33 %)
86 −- **GPS** : 0/6 actives (0 %)
87 −- **Mode** : 0/6 actives (0 %)
88 −- **Parution** : 6/6 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 6, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 8 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 3/7 actives (43 %)
86 +- **GPS** : 6/7 actives (86 %)
87 +- **Mode** : 0/7 actives (0 %)
88 +- **Parution** : 7/7 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 6, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 296
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:37 |
99 +| HTTPSConnectionPool(host='aliaxis.wd3.myworkdayjobs.com', port=443): Max retries exceeded … | 1 | 2026-09-18 12:48 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:15 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync aliaxis` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aliaxis' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alimentiv_2.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alimentiv_2.md
7 7 Rôle : Fiche connecteur — Alimentiv (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 83 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 25 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 17 % |
64 64
65 −Exemple réel : *Medical Writer* — ∅ · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Intermediate Full-Stack Software Developer* — ∅ · ∅ · parue le 2026-09-14.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Medical Writer* — ∅ · ∅ · parue le 2026-08-24.
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 5 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 4/4 actives (100 %)
79 −- **GPS** : 1/4 actives (25 %)
80 −- **Mode** : 4/4 actives (100 %)
81 −- **Parution** : 4/4 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 4, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
77 +- **Offres en base** : 9 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 6/6 actives (100 %)
79 +- **GPS** : 1/6 actives (17 %)
80 +- **Mode** : 6/6 actives (100 %)
81 +- **Parution** : 6/6 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 6, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 403
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.lever.co', port=443): Max retries exceeded with url: /v0/pos… | 1 | 2026-09-18 12:48 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync alimentiv_2` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alimentiv_2' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/allegion.md +25 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/allegion.md
7 7 Rôle : Fiche connecteur — Allegion (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 0 % |
50 −| `region` — Région | région administrative | 0 % |
49 +| `city` — Ville | municipalité normalisée | 100 % |
50 +| `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 62 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 62 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Residential Support Representative 1-Bilingual (French/English)* — ∅ · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Coordonnateur(trice) des ventes et de projets / Sales and Project Coordinator/Estimator* — Longueuil · The expected Base Salary Range: $60 000 - $70 000 - The actual compensation will be determ… · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Residential Support Representative 1-Bilingual (French/English)
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/1 actives (0 %)
86 −- **GPS** : 0/1 actives (0 %)
87 −- **Mode** : 1/1 actives (100 %)
88 −- **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 1, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 9 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/8 actives (62 %)
86 +- **GPS** : 8/8 actives (100 %)
87 +- **Mode** : 0/8 actives (0 %)
88 +- **Parution** : 8/8 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 8, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 302
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:38 |
99 +| HTTPSConnectionPool(host='allegion.wd5.myworkdayjobs.com', port=443): Max retries exceeded… | 1 | 2026-09-18 12:49 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:15 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync allegion` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='allegion' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alliedreit.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alliedreit.md
7 7 Rôle : Fiche connecteur — Allied (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 0 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Coordonnateur(trice) de projets, Construction* — Montréal · ∅ · parue le 2026-07-16.
65 +Exemple réel : *Superviseur, Services Techniques* — Montréal · ∅ · parue le 2026-09-17.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Coordonnateur(trice) de projets, Construction* — Montréal ·
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/2 actives (0 %)
79 −- **GPS** : 2/2 actives (100 %)
80 −- **Mode** : 2/2 actives (100 %)
81 −- **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 10 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/4 actives (0 %)
79 +- **GPS** : 4/4 actives (100 %)
80 +- **Mode** : 4/4 actives (100 %)
81 +- **Parution** : 4/4 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 4, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 302
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.lever.co', port=443): Max retries exceeded with url: /v0/pos… | 1 | 2026-09-18 12:49 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync alliedreit` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alliedreit' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/allredi.md +14 −10
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/allredi.md
7 7 Rôle : Fiche connecteur — homepage (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,8 +50,8 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 100 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Customer Service Representative* — Laval · ∅ · parue le 2026-08-20.
65 +Exemple réel : *Customer Service Representative* — Laval · La fourchette salariale pour ce poste est de 45 000 $ à 55 000 $ CAD · parue le 2026-08-20.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Customer Service Representative* — Laval · ∅ · parue le 2
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/1 actives (0 %)
78 +- **Salaire** : 1/1 actives (100 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:58 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 302
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='allredi.recruitee.com', port=443): Max retries exceeded with url… | 1 | 2026-09-18 12:49 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync allredi` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='allredi' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/allstate.md +27 −20
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/allstate.md
7 7 Rôle : Fiche connecteur — Allstate Canada (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **15 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **14 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 86 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 87 % |
50 +| `region` — Région | région administrative | 93 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 14 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 13 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 21 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 21 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 27 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 27 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 93 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 93 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 87 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 86 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 80 % |
66 66
67 −Exemple réel : *Expert en sinistre sur la route (QC) - remplacement de 8 mois* — ∅ · $70,000-$80,000 selon l'experience · parue le 2026-08-19.
67 +Exemple réel : *Expert en Sinistre (Auto) / Claims Advisor (Auto)* — ∅ · La rémunération prévue pour ce poste varie de 45,888.00 à 70,080.00 $ par an · parue le 2026-09-01.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,26 @@ Exemple réel : *Expert en sinistre sur la route (QC) - remplacement de 8 mois*
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 14 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 3/14 actives (21 %)
86 −- **GPS** : 12/14 actives (86 %)
87 −- **Mode** : 2/14 actives (14 %)
88 −- **Parution** : 14/14 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 14, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 28
84 +- **Offres en base** : 19 (dont **15 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 4/15 actives (27 %)
86 +- **GPS** : 12/15 actives (80 %)
87 +- **Mode** : 2/15 actives (13 %)
88 +- **Parution** : 15/15 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 15, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 320
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:39 |
99 +| HTTPSConnectionPool(host='allstate.wd5.myworkdayjobs.com', port=443): Max retries exceeded… | 1 | 2026-09-18 12:49 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:15 |
101 +| 502 Server Error: Bad Gateway for url: https://allstate.wd5.myworkdayjobs.com/wday/cxs/all… | 1 | 2026-08-25 10:29 |
95 102
96 103 - Rejouer un sync isolé : `.venv/bin/python run.py sync allstate` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='allstate' ORDER BY ts DESC LIMIT 5;"`
97 104 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/allucent.md +12 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/allucent.md
7 7 Rôle : Fiche connecteur — Allucent (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Directeur Adjoint Pharmacométricien (AD Pharmacometrician)* — Montréal · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Directeur Pharmacométricien (Director Pharmacometrician)* — Montréal · ∅ · parue le 2026-08-24.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Directeur Adjoint Pharmacométricien (AD Pharmacometrician)*
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 6 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/4 actives (0 %)
79 79 - **GPS** : 4/4 actives (100 %)
80 80 - **Mode** : 4/4 actives (100 %)
81 81 - **Parution** : 4/4 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 4, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 4, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 300
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:49 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync allucent` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='allucent' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aloyoga.md +20 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aloyoga.md
7 7 Rôle : Fiche connecteur — Alo Yoga (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,20 +49,20 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 67 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 86 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 78 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 57 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 78 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 57 % |
64 64
65 −Exemple réel : *Operations Associate (Part-Time) \| Associé aux opérations - CF Carrefour Laval* — Québec · ∅ · parue le 2026-08-18.
65 +Exemple réel : *Seasonal Operations Associate (Part-Time) \| Associé aux opérations saisonnier (temps part…* — Royalmount · ∅ · parue le 2026-08-25.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Operations Associate (Part-Time) \| Associé aux opérations -
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/9 actives (0 %)
79 −- **GPS** : 7/9 actives (78 %)
80 −- **Mode** : 0/9 actives (0 %)
81 −- **Parution** : 9/9 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 9, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 29
77 +- **Offres en base** : 16 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/7 actives (0 %)
79 +- **GPS** : 4/7 actives (57 %)
80 +- **Mode** : 0/7 actives (0 %)
81 +- **Parution** : 7/7 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 7, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 320
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:49 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aloyoga` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aloyoga' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alphanumeric_systems.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alphanumeric_systems.md
7 7 Rôle : Fiche connecteur — Alphanumeric Systems (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Bilingual Customer Service Specialist for Pharmaceuticals/Healt
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 5/5 actives (100 %)
79 79 - **GPS** : 5/5 actives (100 %)
80 80 - **Mode** : 2/5 actives (40 %)
81 81 - **Parution** : 5/5 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 5, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
82 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 5, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 400
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='alphanumeric-systems.breezy.hr', port=443): Max retries exceeded… | 1 | 2026-09-18 12:49 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync alphanumeric_systems` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alphanumeric_systems' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alsglobal.md +24 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alsglobal.md
7 7 Rôle : Fiche connecteur — Alsglobal (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **17 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **21 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **17 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 95 % |
50 +| `region` — Région | région administrative | 95 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 29 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 6 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 6 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 43 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 5 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 5 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 71 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 95 % |
66 66
67 −Exemple réel : *Gestionnaire de comptes bilingue – service à la clientèle* — Montréal · Un salaire horaire estimé à 33,79 $ CAD au moment de la publication de l’offre · parue le 2026-07-29.
67 +Exemple réel : *Recruiter, Bilingual (English/French)* — ∅ · An estimated hourly pay ranging from $32.05 - $35.90 CAD at the time of posting · parue le 2026-08-25.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Gestionnaire de comptes bilingue – service à la clientèle*
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 18 (dont **17 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/17 actives (6 %)
86 −- **GPS** : 17/17 actives (100 %)
87 −- **Mode** : 0/17 actives (0 %)
88 −- **Parution** : 17/17 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 17, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 26 (dont **21 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/21 actives (5 %)
86 +- **GPS** : 20/21 actives (95 %)
87 +- **Mode** : 0/21 actives (0 %)
88 +- **Parution** : 21/21 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 21, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 298
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='alsglobal.wd103.myworkdayjobs.com', port=443): Max retries excee… | 1 | 2026-09-18 12:49 |
99 +| Workday 5xx après 3 essais : 503 Server Error: Service Unavailable for url: https://alsglo… | 1 | 2026-09-11 22:31 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync alsglobal` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alsglobal' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alsorecrutement.md +17 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alsorecrutement.md
7 7 Rôle : Fiche connecteur — Also Recrutement - Carrière (employeur direct, ATS zoho_recruit)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -37,7 +37,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
37 37
38 38 ## Champs → schéma
39 39
40 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
41 41
42 42 | Champ (`jobs.*`) | Rôle | Complétude |
43 43 |---|---|---|
@@ -54,14 +54,14 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
54 54 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 17 % |
55 55 | `salary_label` — Libellé salaire | texte salarial original | 17 % |
56 56 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 17 % |
57 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
58 58 | `date_posted` — Date de parution | ISO 8601 | 100 % |
59 59 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
60 60 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
61 61 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
62 62 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
63 63 | `apply_url` — Candidature | lien de candidature directe | 0 % |
64 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 +| `gps` — GPS | lat/lng (géocodage sans invention) | 50 % |
65 65
66 66 Exemple réel : *un·e technicien·ne comptable* — Candiac · Salaire entre 55 000 $ et 62 400 $, selon expérience · parue le 2025-07-10.
67 67
@@ -73,19 +73,23 @@ Exemple réel : *un·e technicien·ne comptable* — Candiac · Salaire entre 55
73 73
74 74 ## Volumétrie & complétude live
75 75
76 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
76 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
77 77
78 78 - **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
79 79 - **Salaire** : 1/6 actives (17 %)
80 −- **GPS** : 0/6 actives (0 %)
80 +- **GPS** : 3/6 actives (50 %)
81 81 - **Mode** : 0/6 actives (0 %)
82 82 - **Parution** : 6/6 actives (100 %)
83 −- **Dernier sync** : 2026-08-25 08:37 — trouvées 6, +6, ~0, -0
84 −- **Syncs enregistrés** (`sync_log`) : 1
83 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 6, +0, ~0, -0
84 +- **Syncs enregistrés** (`sync_log`) : 291
85 85
86 86 ## Erreurs & dépannage
87 87
88 −Aucune erreur dans `sync_log` pour cette source.
88 +Erreurs relevées dans `sync_log` :
89 +
90 +| Erreur | Occurrences | Dernière fois |
91 +|---|---|---|
92 +| HTTPSConnectionPool(host='alsorecrutement.zohorecruit.com', port=443): Max retries exceede… | 1 | 2026-09-18 12:49 |
89 93
90 94 - Rejouer un sync isolé : `.venv/bin/python run.py sync alsorecrutement` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alsorecrutement' ORDER BY ts DESC LIMIT 5;"`
91 95 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -103,3 +107,7 @@ Aucune erreur dans `sync_log` pour cette source.
103 107 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
104 108 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
105 109 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
110 +
111 +Commits touchant `jobka/connectors/alsorecrutement.py` :
112 +
113 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/alstom.md +23 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alstom.md
7 7 Rôle : Fiche connecteur — Alstom (employeur direct, ATS successfactors)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **227 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **237 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **227 offres actives** de la source (base live, 202
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 4 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 17 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 6 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 6 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 3 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 16 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 7 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 7 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 92 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 0 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 99 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Superviseur d'installation de nuit* — Montréal · Salaire annuel entre 80 000$ et 90 000$ par année · parue le ∅.
65 +Exemple réel : *Ouvrier de production* — La Pocatiere · $ 25,63 · parue le ∅.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Superviseur d'installation de nuit* — Montréal · Salaire an
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 227 (dont **227 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 13/227 actives (6 %)
84 −- **GPS** : 0/227 actives (0 %)
85 −- **Mode** : 9/227 actives (4 %)
86 −- **Parution** : 0/227 actives (0 %)
87 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 227, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 3
82 +- **Offres en base** : 295 (dont **237 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 16/237 actives (7 %)
84 +- **GPS** : 237/237 actives (100 %)
85 +- **Mode** : 8/237 actives (3 %)
86 +- **Parution** : 0/237 actives (0 %)
87 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 237, +0, ~1, -0
88 +- **Syncs enregistrés** (`sync_log`) : 292
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='jobsearch.alstom.com', port=443): Max retries exceeded with url:… | 1 | 2026-09-18 12:50 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync alstom` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alstom' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/altasciences.md +21 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/altasciences.md
7 7 Rôle : Fiche connecteur — Altasciences (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **28 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **31 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -47,24 +47,24 @@ Complétude mesurée sur les **28 offres actives** de la source (base live, 2026
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
50 +| `region` — Région | région administrative | 94 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 96 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 97 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 6 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 6 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 94 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 65 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 94 % |
66 66
67 −Exemple réel : *Technician, Reference Standard* — Québec · ∅ · parue le 2026-08-19.
67 +Exemple réel : *Biostatistician II* — Overland Park · The salary range estimated for this position is $70,000 - $90,000. Please note that salari… · parue le 2026-08-31.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Technician, Reference Standard* — Québec · ∅ · parue le
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 32 (dont **28 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/28 actives (0 %)
86 −- **GPS** : 28/28 actives (100 %)
87 −- **Mode** : 27/28 actives (96 %)
88 −- **Parution** : 28/28 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 28, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 97
84 +- **Offres en base** : 50 (dont **31 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 2/31 actives (6 %)
86 +- **GPS** : 29/31 actives (94 %)
87 +- **Mode** : 30/31 actives (97 %)
88 +- **Parution** : 31/31 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 30, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 383
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,9 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:18 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:40 |
99 +| HTTPSConnectionPool(host='altasciences.wd1.myworkdayjobs.com', port=443): Max retries exce… | 1 | 2026-09-18 12:50 |
100 +| Expecting value: line 1 column 1 (char 0) | 9 | 2026-08-29 03:15 |
99 101
100 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync altasciences` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altasciences' ORDER BY ts DESC LIMIT 5;"`
101 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alterra.md +22 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alterra.md
7 7 Rôle : Fiche connecteur — Alterra (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **28 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **45 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,19 +52,19 @@ Complétude mesurée sur les **28 offres actives** de la source (base live, 2026
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 54 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 54 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 62 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 62 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 32 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 44 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Électricien* — Mont-Tremblant · 29.63 $ 32.48 $ 35.69 $ · parue le 2026-08-21.
67 +Exemple réel : *Auditeur de nuit* — Mont-Tremblant · Un salaire à partir de 22,37$/h, en plus d'une prime de nuit · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Électricien* — Mont-Tremblant · 29.63 $ 32.48 $ 35.69 $ ·
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 29 (dont **28 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 15/28 actives (54 %)
86 −- **GPS** : 28/28 actives (100 %)
87 −- **Mode** : 0/28 actives (0 %)
88 −- **Parution** : 28/28 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 28, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 65 (dont **45 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 28/45 actives (62 %)
86 +- **GPS** : 45/45 actives (100 %)
87 +- **Mode** : 0/45 actives (0 %)
88 +- **Parution** : 45/45 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 45, +0, ~2, -0
90 +- **Syncs enregistrés** (`sync_log`) : 292
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:41 |
99 +| HTTPSConnectionPool(host='alterra.wd1.myworkdayjobs.com', port=443): Max retries exceeded … | 1 | 2026-09-18 12:51 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:15 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync alterra` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alterra' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/altersolutions.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/altersolutions.md
7 7 Rôle : Fiche connecteur — act digital (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *L3 SOC Analyst / Incident Responder* — Montréal · ∅ · pa
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/9 actives (0 %)
84 84 - **GPS** : 9/9 actives (100 %)
85 85 - **Mode** : 0/9 actives (0 %)
86 86 - **Parution** : 9/9 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 9, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 9, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 291
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:51 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync altersolutions` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altersolutions' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/altg.md +20 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/altg.md
7 7 Rôle : Fiche connecteur — Altg (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,14 +51,14 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 11 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 11 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 14 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 14 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 14 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 71 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
@@ -79,19 +79,23 @@ Exemple réel : *Représentant en développement des affaires à temps plein*
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/9 actives (11 %)
86 −- **GPS** : 9/9 actives (100 %)
87 −- **Mode** : 0/9 actives (0 %)
88 −- **Parution** : 9/9 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 9, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 11 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/7 actives (14 %)
86 +- **GPS** : 7/7 actives (100 %)
87 +- **Mode** : 0/7 actives (0 %)
88 +- **Parution** : 7/7 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 7, +0, ~1, -0
90 +- **Syncs enregistrés** (`sync_log`) : 291
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='jobs.dayforcehcm.com', port=443): Max retries exceeded with url:… | 1 | 2026-09-18 12:51 |
95 99
96 100 - Rejouer un sync isolé : `.venv/bin/python run.py sync altg` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altg' ORDER BY ts DESC LIMIT 5;"`
97 101 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/altitude_sports.md +26 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/altitude_sports.md
7 7 Rôle : Fiche connecteur — Altitude Sports (employeur direct, ATS zoho_recruit)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -37,7 +37,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
37 37
38 38 ## Champs → schéma
39 39
40 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 +Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
41 41
42 42 | Champ (`jobs.*`) | Rôle | Complétude |
43 43 |---|---|---|
@@ -50,20 +50,20 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
50 50 | `address` — Adresse | adresse du lieu de travail | 0 % |
51 51 | `postal_code` — Code postal | code postal si publié | 0 % |
52 52 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 −| `employment_type` — Type | temps_plein / temps_partiel / … | 33 % |
54 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 33 % |
55 −| `salary_label` — Libellé salaire | texte salarial original | 33 % |
53 +| `employment_type` — Type | temps_plein / temps_partiel / … | 36 % |
54 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 21 % |
55 +| `salary_label` — Libellé salaire | texte salarial original | 21 % |
56 56 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
57 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 86 % |
58 58 | `date_posted` — Date de parution | ISO 8601 | 100 % |
59 59 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
60 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 89 % |
60 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 86 % |
61 61 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
62 62 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
63 63 | `apply_url` — Candidature | lien de candidature directe | 0 % |
64 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 65
66 −Exemple réel : *Commis d'entrepôt (Contrat-jour) \| Warehouse Associate (Contrat-day)* — Montréal · Un taux horaire de base de 18$ de l’heure · parue le 2026-08-05.
66 +Exemple réel : *Commis d'entrepôt - Contrat,soir (jusqu'au 7 décembre 2026) \| Warehouse Associate - contr…* — Montréal · Un taux horaire de base de 18$ de l’heure avec une prime · parue le 2026-09-18.
67 67
68 68 ## Fréquence & budgets
69 69
@@ -73,19 +73,23 @@ Exemple réel : *Commis d'entrepôt (Contrat-jour) \| Warehouse Associate (Contr
73 73
74 74 ## Volumétrie & complétude live
75 75
76 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
76 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
77 77
78 −- **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
79 −- **Salaire** : 3/9 actives (33 %)
80 −- **GPS** : 0/9 actives (0 %)
81 −- **Mode** : 0/9 actives (0 %)
82 −- **Parution** : 9/9 actives (100 %)
83 −- **Dernier sync** : 2026-08-25 08:37 — trouvées 9, +9, ~0, -0
84 −- **Syncs enregistrés** (`sync_log`) : 1
78 +- **Offres en base** : 20 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
79 +- **Salaire** : 3/14 actives (21 %)
80 +- **GPS** : 14/14 actives (100 %)
81 +- **Mode** : 0/14 actives (0 %)
82 +- **Parution** : 14/14 actives (100 %)
83 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 14, +0, ~0, -0
84 +- **Syncs enregistrés** (`sync_log`) : 284
85 85
86 86 ## Erreurs & dépannage
87 87
88 −Aucune erreur dans `sync_log` pour cette source.
88 +Erreurs relevées dans `sync_log` :
89 +
90 +| Erreur | Occurrences | Dernière fois |
91 +|---|---|---|
92 +| HTTPSConnectionPool(host='altitude-sports.zohorecruit.com', port=443): Max retries exceede… | 1 | 2026-09-18 12:51 |
89 93
90 94 - Rejouer un sync isolé : `.venv/bin/python run.py sync altitude_sports` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altitude_sports' ORDER BY ts DESC LIMIT 5;"`
91 95 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -103,3 +107,7 @@ Aucune erreur dans `sync_log` pour cette source.
103 107 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
104 108 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
105 109 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
110 +
111 +Commits touchant `jobka/connectors/altitude_sports.py` :
112 +
113 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/altitudeaerospace.md +29 −21
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/altitudeaerospace.md
7 7 Rôle : Fiche connecteur — Altitude Aerospace (employeur direct, ATS jazzhr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,33 +36,33 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
43 43 | `title` — Titre | titre du poste | 100 % |
44 44 | `employer` — Employeur | nom de l'entreprise | 100 % |
45 45 | `url` — URL | lien direct vers l'offre originale | 100 % |
46 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
46 +| `description` — Description | texte complet (HTML nettoyé) | 80 % |
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 33 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 17 % |
50 +| `postal_code` — Code postal | code postal si publié | 20 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 17 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 17 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 80 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
60 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 40 % |
60 +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 80 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 100 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Concepteur Mécanique – Support en service* — Montréal · Fourchette salariale : à partir de 78 500$, selon profil et experience · parue le 2026-06-18.
65 +Exemple réel : *Intégrateur EWIS- EWIS Integrator* — Montréal · ∅ · parue le 2026-09-17.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Concepteur Mécanique – Support en service* — Montréal ·
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 1/6 actives (17 %)
84 −- **GPS** : 0/6 actives (0 %)
85 −- **Mode** : 1/6 actives (17 %)
86 −- **Parution** : 6/6 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 6, +6, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 1
82 +- **Offres en base** : 11 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/5 actives (0 %)
84 +- **GPS** : 5/5 actives (100 %)
85 +- **Mode** : 0/5 actives (0 %)
86 +- **Parution** : 5/5 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:36 — trouvées 6, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 283
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='altitudeaerospace.applytojob.com', port=443): Max retries exceed… | 1 | 2026-09-18 12:51 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync altitudeaerospace` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altitudeaerospace' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -107,3 +111,7 @@ Aucune erreur dans `sync_log` pour cette source.
107 111 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
108 112 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
109 113 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
114 +
115 +Commits touchant `jobka/connectors/altitudeaerospace.py` :
116 +
117 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/altom_transport.md +18 −38
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/altom_transport.md
7 7 Rôle : Fiche connecteur — Altom Transport (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -16,7 +16,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
16 16
17 17 ## Description
18 18
19 −- **Site** : [Altom Transport]()
19 +- **Site** : [Altom Transport](https://altomtransport.com)
20 20 - **Page carrières** : https://apply.workable.com/altom-transport
21 21 - **Secteurs** : Transport, Camionnage
22 22 - **Région** : Montréal
@@ -36,33 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 −
41 −| Champ (`jobs.*`) | Rôle | Complétude |
42 −|---|---|---|
43 −| `title` — Titre | titre du poste | 100 % |
44 −| `employer` — Employeur | nom de l'entreprise | 100 % |
45 −| `url` — URL | lien direct vers l'offre originale | 100 % |
46 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 100 % |
48 −| `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 −| `date_posted` — Date de parution | ISO 8601 | 100 % |
58 −| `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 −| `apply_url` — Candidature | lien de candidature directe | 100 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 −
65 −Exemple réel : *Chauffeur de Camion-Citerne Classe 1* — Montréal · ∅ · parue le 2026-07-21.
39 +*Aucune offre active en base pour cette source.*
66 40
67 41 ## Fréquence & budgets
68 42
@@ -72,19 +46,23 @@ Exemple réel : *Chauffeur de Camion-Citerne Classe 1* — Montréal · ∅ · p
72 46
73 47 ## Volumétrie & complétude live
74 48
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
49 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 50
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/1 actives (0 %)
79 −- **GPS** : 1/1 actives (100 %)
80 −- **Mode** : 0/1 actives (0 %)
81 −- **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
51 +- **Offres en base** : 1 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
52 +- **Salaire** : 0/0 actives (—)
53 +- **GPS** : 0/0 actives (—)
54 +- **Mode** : 0/0 actives (—)
55 +- **Parution** : 0/0 actives (—)
56 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 0, +0, ~0, -0
57 +- **Syncs enregistrés** (`sync_log`) : 292
84 58
85 59 ## Erreurs & dépannage
86 60
87 −Aucune erreur dans `sync_log` pour cette source.
61 +Erreurs relevées dans `sync_log` :
62 +
63 +| Erreur | Occurrences | Dernière fois |
64 +|---|---|---|
65 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:51 |
88 66
89 67 - Rejouer un sync isolé : `.venv/bin/python run.py sync altom_transport` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altom_transport' ORDER BY ts DESC LIMIT 5;"`
90 68 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -105,4 +83,6 @@ Aucune erreur dans `sync_log` pour cette source.
105 83
106 84 Commits touchant `jobka/connectors/altom_transport.py` :
107 85
86 +- `ea13137` 2026-09-18 [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.
87 +- `2fa16cd` 2026-08-28 [ka6] fix connecteur altom_transport: employeur AMÉRICAIN de transport de liquides en vrac (Altom Transport, siège à Hammond, Indiana, dessert US+Canada) à volume QC naturellement très faible (médiane 0.5) — le board Workable apply.workable.com/altom-transport est passé à 0 offre QC le 2026-08-28 : vide LÉGITIME, la seule offre québécoise (« Chauffeur de Camion-Citerne Classe 1 », Montréal, parue 2026-07-21, vraie offre QC — permis classe 1) a été fermée par l'employeur (URL CBB48687CC → redirection /oops). Vérifications réelles : API widget v1 200 avec 37 offres, TOUTES aux É.-U. (Indiana, Ohio, Illinois, Texas, Louisiane…), 0 faux positif — le filtre is_quebec_location fait exactement son travail. Le statut stale venait du volume 0 compté comme échec par la supervision ; le connecteur est sain (syncs ok=1, board 200). L'offre montréalaise avait déjà été purgée par le mécanisme normal (miss_count=2 → removed=1, active=0 au sync de 12:27). Test final : fetch réel = 37 bruts, 0 retenus (QC) = comportement correct, les offres QC réapparaîtront d'elles-mêmes quand Altom republiera au Québec. Note de contexte ajoutée au connecteur, aucun changement de code. Sync isolé rejoué (ok), pm2 restart job-ka-sync OK, site 200.
108 88 - `c45c753` 2026-08-23 Vague C — +620 connecteurs employeurs directs (350 -> 968)
modified docs/connecteurs/altusgroup.md +22 −39
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/altusgroup.md
7 7 Rôle : Fiche connecteur — Groupe Altus (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -16,9 +16,9 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
16 16
17 17 ## Description
18 18
19 −- **Site** : [Groupe Altus]()
19 +- **Site** : [Groupe Altus](https://www.altusgroup.com)
20 20 - **Page carrières** : https://altusgroup.wd3.myworkdayjobs.com/AltusGroup
21 −- **Secteurs** : n/d
21 +- **Secteurs** : Immobilier
22 22 - **Région** : Montréal
23 23 - Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire.
24 24
@@ -38,33 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
42 −
43 −| Champ (`jobs.*`) | Rôle | Complétude |
44 −|---|---|---|
45 −| `title` — Titre | titre du poste | 100 % |
46 −| `employer` — Employeur | nom de l'entreprise | 100 % |
47 −| `url` — URL | lien direct vers l'offre originale | 100 % |
48 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
51 −| `address` — Adresse | adresse du lieu de travail | 0 % |
52 −| `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
59 −| `date_posted` — Date de parution | ISO 8601 | 100 % |
60 −| `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 0 % |
62 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 −| `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
66 −
67 −Exemple réel : *Cost Consultant/ Conseiller(ère) en analyse de coûts* — Montréal · $60,000 - $75,000 · parue le 2026-08-14.
41 +*Aucune offre active en base pour cette source.*
68 42
69 43 ## Fréquence & budgets
70 44
@@ -79,19 +53,25 @@ Exemple réel : *Cost Consultant/ Conseiller(ère) en analyse de coûts* — Mon
79 53
80 54 ## Volumétrie & complétude live
81 55
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
56 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 57
84 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/1 actives (100 %)
86 −- **GPS** : 0/1 actives (0 %)
87 −- **Mode** : 0/1 actives (0 %)
88 −- **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 2, +0, ~2, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
58 +- **Offres en base** : 1 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
59 +- **Salaire** : 0/0 actives (—)
60 +- **GPS** : 0/0 actives (—)
61 +- **Mode** : 0/0 actives (—)
62 +- **Parution** : 0/0 actives (—)
63 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 0, +0, ~0, -0
64 +- **Syncs enregistrés** (`sync_log`) : 288
91 65
92 66 ## Erreurs & dépannage
93 67
94 −Aucune erreur dans `sync_log` pour cette source.
68 +Erreurs relevées dans `sync_log` :
69 +
70 +| Erreur | Occurrences | Dernière fois |
71 +|---|---|---|
72 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:43 |
73 +| HTTPSConnectionPool(host='altusgroup.wd3.myworkdayjobs.com', port=443): Max retries exceed… | 1 | 2026-09-18 12:51 |
74 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:16 |
95 75
96 76 - Rejouer un sync isolé : `.venv/bin/python run.py sync altusgroup` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altusgroup' ORDER BY ts DESC LIMIT 5;"`
97 77 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -112,4 +92,7 @@ Aucune erreur dans `sync_log` pour cette source.
112 92
113 93 Commits touchant `jobka/connectors/altusgroup.py` :
114 94
95 +- `f092997` 2026-09-19 [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.
96 +- `2fc9e63` 2026-09-18 [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.
97 +- `4e9be24` 2026-09-12 [ka6] fix connecteur altusgroup: external_id régional → ID de réquisition (hook _external_id dans la plateforme workday, défaut inchangé) — le tenant altusgroup.wd3 préfixe bulletFields par la région quand il y en a une (['Ontario','R0013639'] vs ['R0013942'] seul), si bien que bullets[0] devenait l'external_id : l'offre QC historique était en base sous external_id='Quebec', et le sync du 2026-08-26 trouvait 2 offres pour 1 seule stockée (collision d'ID entre postes d'une même région). L'extraction est désormais isolée dans un hook _external_id() de WorkdayConnector (comportement par défaut strictement identique pour les autres tenants) et surchargée dans altusgroup.py : premier bullet au format réquisition R+chiffres, sinon suffixe du chemin. Vérifié live : 36 postes scannés → 36 IDs uniques au format R00xxxxx, 0 poste non conforme. Volume 0 légitime AUJOURD'HUI : 7 postes Canada, tous Toronto — aucune offre QC depuis la dépublication de l'offre montréalaise le 2026-08-26 (médiane historique 0.0). Le statut stale vient de là (la supervision date le dernier succès au dernier sync found>0, 2026-08-26 14:19) ; l'unique échec récent (2026-09-12 03:04, « Workday non-JSON HTTP 200 text/html ») est la fenêtre de maintenance hebdomadaire Workday du vendredi/samedi nuit (28 occurrences multi-sources cette nuit, mêmes plages 02h30–03h15 les 2026-08-29 et 2026-09-05), transitoire et déjà retryée. Sync isolé rejoué : found=0 en 2,4 s, statut ok. 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
115 98 - `856863d` 2026-08-25 Vague D implémentée — 75 nouveaux connecteurs (968 -> 1044 employeurs), ~768 offres QC
modified docs/connecteurs/alveole.md +22 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alveole.md
7 7 Rôle : Fiche connecteur — Alveole (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 14 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 29 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 71 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 71 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 17 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 17 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 83 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 86 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Account Executive - Biodiversity Data Product* — Montréal · OTE: $90,000–$110,000 CAD · parue le 2026-08-20.
65 +Exemple réel : *Account Executive - Biodiversity Data Product* — Montréal · OTE: $90,000–$110,000 CAD · parue le 2026-09-16.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Account Executive - Biodiversity Data Product* — Montréal ·
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 8 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 5/7 actives (71 %)
79 −- **GPS** : 7/7 actives (100 %)
80 −- **Mode** : 1/7 actives (14 %)
81 −- **Parution** : 7/7 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 7, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 15 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 6/6 actives (100 %)
79 +- **GPS** : 6/6 actives (100 %)
80 +- **Mode** : 1/6 actives (17 %)
81 +- **Parution** : 6/6 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 6, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 290
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync alveole` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alveole' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/alygra.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/alygra.md
7 7 Rôle : Fiche connecteur — Alygra Advisory (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Staff Software Engineer – AI & Platform* — Montréal · ∅
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/3 actives (0 %)
79 79 - **GPS** : 3/3 actives (100 %)
80 80 - **Mode** : 3/3 actives (100 %)
81 81 - **Parution** : 3/3 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 3, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 3, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 290
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.ashbyhq.com', port=443): Max retries exceeded with url: /pos… | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync alygra` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='alygra' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/americanironandmetal.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/americanironandmetal.md
7 7 Rôle : Fiche connecteur — American Iron and Metal (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **244 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **240 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,19 +50,19 @@ Complétude mesurée sur les **244 offres actives** de la source (base live, 202
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 17 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 17 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 21 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 21 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 54 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 55 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Journalier* — Saint-Augustin-de-Desmaures · Un salaire compétitif à partir de 20$/H + un bonus bi-annuel allant jusqu'à 3,75 % · parue le 2026-08-24.
65 +Exemple réel : *Caissier / Caissière* — Lévis · Un salaire compétitif à partir de 18.50$/H + un bonus bi-annuel allant jusqu'à 3,75 % · parue le 2026-09-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Journalier* — Saint-Augustin-de-Desmaures · Un salaire comp
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 258 (dont **244 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 42/244 actives (17 %)
84 −- **GPS** : 244/244 actives (100 %)
85 −- **Mode** : 0/244 actives (0 %)
86 −- **Parution** : 244/244 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 244, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Offres en base** : 399 (dont **240 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 50/240 actives (21 %)
84 +- **GPS** : 240/240 actives (100 %)
85 +- **Mode** : 0/240 actives (0 %)
86 +- **Parution** : 240/240 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 237, +4, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 289
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:51 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync americanironandmetal` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='americanironandmetal' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/amgen.md +15 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/amgen.md
7 7 Rôle : Fiche connecteur — Amgen (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,7 +55,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Strategic Pharmacy Relations Mgr/Gestionnaire, relations stratégiques avec les pharmacies,…* — Québec · ∅ · parue le 2026-08-18.
67 +Exemple réel : *Représentant(e) au développement des comptes, médecine générale (Trois-Rivières)* — Québec · ∅ · parue le 2026-09-16.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Strategic Pharmacy Relations Mgr/Gestionnaire, relations strat
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
84 +- **Offres en base** : 3 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 0/2 actives (0 %)
86 86 - **GPS** : 2/2 actives (100 %)
87 87 - **Mode** : 0/2 actives (0 %)
88 88 - **Parution** : 2/2 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 2, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 2, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 289
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:44 |
99 +| HTTPSConnectionPool(host='amgen.wd1.myworkdayjobs.com', port=443): Max retries exceeded wi… | 1 | 2026-09-18 12:51 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:16 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync amgen` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='amgen' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/ami.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ami.md
7 7 Rôle : Fiche connecteur — AMI (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 75 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 64
65 −Exemple réel : *AMI Scientist* — ∅ · ∅ · parue le 2026-03-19.
65 +Exemple réel : *AMI Scientist/Interns - Geometry and 3D Vision* — ∅ · ∅ · parue le 2026-08-27.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *AMI Scientist* — ∅ · ∅ · parue le 2026-03-19.
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/3 actives (0 %)
79 −- **GPS** : 0/3 actives (0 %)
80 −- **Mode** : 3/3 actives (100 %)
81 −- **Parution** : 3/3 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 3, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/4 actives (0 %)
79 +- **GPS** : 0/4 actives (0 %)
80 +- **Mode** : 4/4 actives (100 %)
81 +- **Parution** : 4/4 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 4, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.ashbyhq.com', port=443): Max retries exceeded with url: /pos… | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync ami` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ami' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/amilia.md +12 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/amilia.md
7 7 Rôle : Fiche connecteur — Amilia (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 64
65 −Exemple réel : *Coordonnateur.trice, Talent & Culture (contrat de 12 mois)* — Greater Montreal · ∅ · parue le 2026-07-30.
65 +Exemple réel : *Représentant(e) au développement des ventes* — Greater Montreal · ∅ · parue le 2026-08-27.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Coordonnateur.trice, Talent & Culture (contrat de 12 mois)* —
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 3 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 0/1 actives (0 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 97
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 378
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='amilia.recruitee.com', port=443): Max retries exceeded with url:… | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync amilia` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='amilia' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/anciapersonnelinc.md +20 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/anciapersonnelinc.md
7 7 Rôle : Fiche connecteur — ANCIA Personnel (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **60 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **56 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -47,22 +47,22 @@ Complétude mesurée sur les **60 offres actives** de la source (base live, 2026
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 20 % |
50 +| `postal_code` — Code postal | code postal si publié | 16 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 98 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 10 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 3 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 7 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 4 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 95 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 96 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Approvisionneur(euse) de pièces* — Saint-Eustache · Salaire horaire de 36,26$ à 40,74$ selon expérience · parue le 2026-08-17.
65 +Exemple réel : *Adjoint(e) administratif(ve) en ingénierie* — Sainte-Claire · Salaire : 30$/h · parue le 2026-09-02.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Approvisionneur(euse) de pièces* — Saint-Eustache · Salaire
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 61 (dont **60 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 6/60 actives (10 %)
79 −- **GPS** : 60/60 actives (100 %)
80 −- **Mode** : 60/60 actives (100 %)
81 −- **Parution** : 60/60 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 60, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
77 +- **Offres en base** : 74 (dont **56 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 4/56 actives (7 %)
79 +- **GPS** : 56/56 actives (100 %)
80 +- **Mode** : 56/56 actives (100 %)
81 +- **Parution** : 56/56 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 56, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 390
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='anciapersonnelinc.recruitee.com', port=443): Max retries exceede… | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync anciapersonnelinc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='anciapersonnelinc' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/andy_transport.md +13 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/andy_transport.md
7 7 Rôle : Fiche connecteur — Andy Transport (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Représentant(e) développement des affaire/Business Development Representative* — Québec · ∅ · parue le 2026-07-14.
65 +Exemple réel : *Représentant(e) développement des affaire/Business Development Represent* — Québec · ∅ · parue le 2026-09-02.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Représentant(e) développement des affaire/Business Developmen
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync andy_transport` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='andy_transport' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aninebing.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aninebing.md
7 7 Rôle : Fiche connecteur — ANINE BING (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *PT Sales Advisor - Montreal* — Montréal · ∅ · parue le 2026-07-14.
65 +Exemple réel : *Sales Advisor - Montreal* — Montréal · ∅ · parue le 2026-09-05.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *PT Sales Advisor - Montreal* — Montréal · ∅ · parue le 2
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/1 actives (0 %)
79 −- **GPS** : 1/1 actives (100 %)
80 −- **Mode** : 0/1 actives (0 %)
81 −- **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/2 actives (0 %)
79 +- **GPS** : 2/2 actives (100 %)
80 +- **Mode** : 0/2 actives (0 %)
81 +- **Parution** : 2/2 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aninebing` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aninebing' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aon3d.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aon3d.md
7 7 Rôle : Fiche connecteur — AON3D (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 50 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Junior Material Scientist* — Montréal · ∅ · parue le 202
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/2 actives (0 %)
79 79 - **GPS** : 2/2 actives (100 %)
80 80 - **Mode** : 0/2 actives (0 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aon3d` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aon3d' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aon3d_fr.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aon3d_fr.md
7 7 Rôle : Fiche connecteur — AON3D (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Scientifique des matériaux junior* — Montréal · ∅ · par
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/2 actives (0 %)
79 79 - **GPS** : 2/2 actives (100 %)
80 80 - **Mode** : 0/2 actives (0 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aon3d_fr` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aon3d_fr' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/appdirect.md +21 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/appdirect.md
7 7 Rôle : Fiche connecteur — AppDirect (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **26 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **36 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,20 +49,20 @@ Complétude mesurée sur les **26 offres actives** de la source (base live, 2026
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 38 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 38 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 50 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 96 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 92 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Customer Success Manager* — Montréal · $92,000 — $121,000 CAD · parue le 2026-08-21.
65 +Exemple réel : *Associate Project Manager* — Montréal · $55,000 — $64,000 CAD · parue le 2026-09-17.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Customer Success Manager* — Montréal · $92,000 — $121,000
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 28 (dont **26 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 10/26 actives (38 %)
79 −- **GPS** : 26/26 actives (100 %)
80 −- **Mode** : 0/26 actives (0 %)
81 −- **Parution** : 26/26 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 26, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
77 +- **Offres en base** : 48 (dont **36 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 18/36 actives (50 %)
79 +- **GPS** : 36/36 actives (100 %)
80 +- **Mode** : 0/36 actives (0 %)
81 +- **Parution** : 36/36 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 36, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 390
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync appdirect` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='appdirect' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/appdirectraas.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/appdirectraas.md
7 7 Rôle : Fiche connecteur — Opportunities with AppDirect's Advisor Partners (Recruitment as a Service) (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,20 +49,20 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 50 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 33 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 75 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Full Stack Software Developer - Engineered Arts* — Montréal · ∅ · parue le 2026-08-17.
65 +Exemple réel : *Senior Mechanical Design Engineer - Engineered Arts* — Montréal · ∅ · parue le 2026-09-09.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Full Stack Software Developer - Engineered Arts* — Montréal
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/4 actives (0 %)
79 −- **GPS** : 4/4 actives (100 %)
80 −- **Mode** : 0/4 actives (0 %)
81 −- **Parution** : 4/4 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 4, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 7 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/3 actives (0 %)
79 +- **GPS** : 3/3 actives (100 %)
80 +- **Mode** : 0/3 actives (0 %)
81 +- **Parution** : 3/3 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 3, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync appdirectraas` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='appdirectraas' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/arago.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/arago.md
7 7 Rôle : Fiche connecteur — Arago (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Business Manager - Québec (Canada)* — Montréal · ∅ · pa
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/2 actives (0 %)
84 84 - **GPS** : 2/2 actives (100 %)
85 85 - **Mode** : 2/2 actives (100 %)
86 86 - **Parution** : 2/2 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 2, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 2, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 289
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:51 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync arago` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='arago' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/arcteryx_com.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/arcteryx_com.md
7 7 Rôle : Fiche connecteur — ARC'TERYX (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,10 +50,10 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 71 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 57 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 80 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 80 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Guide de produits - saisonnier·ère \| Product Guide - Seasona
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 5/7 actives (71 %)
79 −- **GPS** : 7/7 actives (100 %)
80 −- **Mode** : 7/7 actives (100 %)
81 −- **Parution** : 7/7 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 7, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 7 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 4/5 actives (80 %)
79 +- **GPS** : 5/5 actives (100 %)
80 +- **Mode** : 5/5 actives (100 %)
81 +- **Parution** : 5/5 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 5, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.lever.co', port=443): Max retries exceeded with url: /v0/pos… | 1 | 2026-09-18 12:51 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync arcteryx_com` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='arcteryx_com' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/ariolix.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ariolix.md
7 7 Rôle : Fiche connecteur — Ariolix (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Ingénieur intégration validation* — Québec · ∅ · parue
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 0/1 actives (0 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 07:59 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 289
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:51 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync ariolix` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ariolix' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aritzia.md +21 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aritzia.md
7 7 Rôle : Fiche connecteur — Aritzia (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **13 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,10 +52,10 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 67 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 67 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 62 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 62 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 85 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Food & Beverage – Seasonal Barista, A-OK Cafe* — Laval · The typical hiring range for this position is $20-$ 30 CA D per hour · parue le 2026-08-24.
67 +Exemple réel : *Food & Beverage – Seasonal Barista, A-OK Cafe (Front of House)* — Laval · The typical hiring range for this position is $20 - $30 CAD per hour plus gratuities · parue le 2026-08-26.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Food & Beverage – Seasonal Barista, A-OK Cafe* — Laval · T
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 12 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 8/12 actives (67 %)
86 −- **GPS** : 12/12 actives (100 %)
87 −- **Mode** : 0/12 actives (0 %)
88 −- **Parution** : 12/12 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 12, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 28
84 +- **Offres en base** : 13 (dont **13 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 8/13 actives (62 %)
86 +- **GPS** : 13/13 actives (100 %)
87 +- **Mode** : 0/13 actives (0 %)
88 +- **Parution** : 13/13 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 13, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 309
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:45 |
99 +| HTTPSConnectionPool(host='aritzia.wd3.myworkdayjobs.com', port=443): Max retries exceeded … | 1 | 2026-09-18 12:52 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:16 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync aritzia` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aritzia' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/artefactjobs.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/artefactjobs.md
7 7 Rôle : Fiche connecteur — Welcome to the Jungle (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 50 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Manager, AI & Data Consulting* — Montréal · The estimated b
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 2/4 actives (50 %)
79 79 - **GPS** : 4/4 actives (100 %)
80 80 - **Mode** : 0/4 actives (0 %)
81 81 - **Parution** : 4/4 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 4, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 4, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:52 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync artefactjobs` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='artefactjobs' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/artefactnoram.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/artefactnoram.md
7 7 Rôle : Fiche connecteur — Artefact North America (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,11 +49,11 @@ Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 75 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 50 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 86 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 57 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 57 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Manager, AI & Data Consulting* — Montréal · The estimated b
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 4/8 actives (50 %)
79 −- **GPS** : 8/8 actives (100 %)
80 −- **Mode** : 0/8 actives (0 %)
81 −- **Parution** : 8/8 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 8, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 8 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 4/7 actives (57 %)
79 +- **GPS** : 7/7 actives (100 %)
80 +- **Mode** : 0/7 actives (0 %)
81 +- **Parution** : 7/7 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 7, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 289
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:52 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync artefactnoram` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='artefactnoram' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/artelia.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/artelia.md
7 7 Rôle : Fiche connecteur — Artelia Canada (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **117 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **116 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,7 +48,7 @@ Complétude mesurée sur les **117 offres actives** de la source (base live, 202
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 24 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 22 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
@@ -56,13 +56,13 @@ Complétude mesurée sur les **117 offres actives** de la source (base live, 202
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 58 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 52 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 98 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 99 % |
64 64
65 −Exemple réel : *Surveillant·e des travaux en génie mécanique avec notre client Hydro-Québec* — Shawinigan · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Chargé·e de projet senior en électricité du bâtiment* — Montréal · ∅ · parue le 2026-09-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Surveillant·e des travaux en génie mécanique avec notre clie
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 117 (dont **117 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/117 actives (0 %)
84 −- **GPS** : 115/117 actives (98 %)
85 −- **Mode** : 28/117 actives (24 %)
86 −- **Parution** : 117/117 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 117, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 29
82 +- **Offres en base** : 183 (dont **116 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/116 actives (0 %)
84 +- **GPS** : 115/116 actives (99 %)
85 +- **Mode** : 26/116 actives (22 %)
86 +- **Parution** : 116/116 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 116, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 310
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:52 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync artelia` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='artelia' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aspentech.md +21 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aspentech.md
7 7 Rôle : Fiche connecteur — Chef d'équipe Agile (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 92 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 58 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 78 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Sr People Experience Partner* — Montréal · ∅ · parue le 2026-08-14.
67 +Exemple réel : *Principal Software Developer* — Montréal · ∅ · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Sr People Experience Partner* — Montréal · ∅ · parue le
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 13 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/12 actives (0 %)
86 −- **GPS** : 12/12 actives (100 %)
87 −- **Mode** : 0/12 actives (0 %)
88 −- **Parution** : 12/12 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 12, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 13 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/9 actives (0 %)
86 +- **GPS** : 9/9 actives (100 %)
87 +- **Mode** : 0/9 actives (0 %)
88 +- **Parution** : 9/9 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 9, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 289
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:46 |
99 +| HTTPSConnectionPool(host='aspentech.wd5.myworkdayjobs.com', port=443): Max retries exceede… | 1 | 2026-09-18 12:52 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:16 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync aspentech` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aspentech' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/astucemedia.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/astucemedia.md
7 7 Rôle : Fiche connecteur — Astucemedia (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,7 +48,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 50 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 60 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Lead Front & Back-End Developer* — Montréal · ∅ · parue le 2026-07-21.
65 +Exemple réel : *Lead Software Engineer – AI, Data Visualization & Platform* — Montréal · ∅ · parue le 2026-09-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Lead Front & Back-End Developer* — Montréal · ∅ · parue
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 5 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/4 actives (0 %)
84 −- **GPS** : 4/4 actives (100 %)
85 −- **Mode** : 2/4 actives (50 %)
86 −- **Parution** : 4/4 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 4, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 109
82 +- **Offres en base** : 8 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/5 actives (0 %)
84 +- **GPS** : 5/5 actives (100 %)
85 +- **Mode** : 3/5 actives (60 %)
86 +- **Parution** : 5/5 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 5, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 390
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:52 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync astucemedia` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='astucemedia' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/atecna_montreal.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/atecna_montreal.md
7 7 Rôle : Fiche connecteur — Atecna (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -72,19 +72,23 @@ Exemple réel : *UI-UX Designer Senior* — Montréal · ∅ · parue le 2026-07
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 390
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:52 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync atecna_montreal` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='atecna_montreal' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/athos.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/athos.md
7 7 Rôle : Fiche connecteur — Manœuvre générale (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,7 +55,7 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 57 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 57 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 71 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 29 % |
@@ -79,19 +79,23 @@ Exemple réel : *Répartiteur surnuméraire* — Montréal · Le taux horaire es
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 84 - **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 4/7 actives (57 %)
86 86 - **GPS** : 7/7 actives (100 %)
87 87 - **Mode** : 0/7 actives (0 %)
88 88 - **Parution** : 7/7 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 7, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 7, +0, ~1, -0
90 +- **Syncs enregistrés** (`sync_log`) : 288
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='jobs.dayforcehcm.com', port=443): Max retries exceeded with url:… | 1 | 2026-09-18 12:52 |
95 99
96 100 - Rejouer un sync isolé : `.venv/bin/python run.py sync athos` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='athos' ORDER BY ts DESC LIMIT 5;"`
97 101 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/atialtd.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/atialtd.md
7 7 Rôle : Fiche connecteur — ATIA Ltd (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **23 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **23 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Sales Partners* — Longueuil · Second Option: We form a base
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 23 (dont **23 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 10/23 actives (43 %)
84 84 - **GPS** : 23/23 actives (100 %)
85 85 - **Mode** : 0/23 actives (0 %)
86 86 - **Parution** : 23/23 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 23, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 2
87 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 23, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 282
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:52 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync atialtd` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='atialtd' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/atlas_workland.md +19 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/atlas_workland.md
7 7 Rôle : Fiche connecteur — Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…) (employeur direct, ATS workland)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -30,7 +30,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
30 30
31 31 ## Champs → schéma
32 32
33 −Complétude mesurée sur les **1269 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
33 +Complétude mesurée sur les **1226 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
34 34
35 35 | Champ (`jobs.*`) | Rôle | Complétude |
36 36 |---|---|---|
@@ -41,22 +41,22 @@ Complétude mesurée sur les **1269 offres actives** de la source (base live, 20
41 41 | `city` — Ville | municipalité normalisée | 100 % |
42 42 | `region` — Région | région administrative | 99 % |
43 43 | `address` — Adresse | adresse du lieu de travail | 0 % |
44 −| `postal_code` — Code postal | code postal si publié | 80 % |
45 −| `work_mode` — Mode | presentiel / hybride / teletravail | 81 % |
46 −| `employment_type` — Type | temps_plein / temps_partiel / … | 72 % |
47 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 34 % |
48 −| `salary_label` — Libellé salaire | texte salarial original | 34 % |
44 +| `postal_code` — Code postal | code postal si publié | 82 % |
45 +| `work_mode` — Mode | presentiel / hybride / teletravail | 85 % |
46 +| `employment_type` — Type | temps_plein / temps_partiel / … | 68 % |
47 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 35 % |
48 +| `salary_label` — Libellé salaire | texte salarial original | 35 % |
49 49 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
50 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
50 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 88 % |
51 51 | `date_posted` — Date de parution | ISO 8601 | 100 % |
52 52 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
53 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 80 % |
53 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 81 % |
54 54 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
55 55 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
56 56 | `apply_url` — Candidature | lien de candidature directe | 0 % |
57 57 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
58 58
59 −Exemple réel : *Technicienne ou technicien en loisir - 17h30/semaine* — Sorel-Tracy · Entre 27,30 $ et 35,31 $ de l'heure · parue le 2026-08-25.
59 +Exemple réel : *Conseillère ou conseiller au développement philanthropique et partenariats - Fondation du …* — Trois-Rivières · Salaire de départ de 50 000 $ · parue le 2026-09-21.
60 60
61 61 ## Fréquence & budgets
62 62
@@ -66,15 +66,15 @@ Exemple réel : *Technicienne ou technicien en loisir - 17h30/semaine* — Sorel
66 66
67 67 ## Volumétrie & complétude live
68 68
69 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
69 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
70 70
71 −- **Offres en base** : 1515 (dont **1269 actives**, 13 masquées comme doublons `dup_of`)
72 −- **Salaire** : 432/1269 actives (34 %)
73 −- **GPS** : 1269/1269 actives (100 %)
74 −- **Mode** : 1032/1269 actives (81 %)
75 −- **Parution** : 1269/1269 actives (100 %)
76 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 1262, +2, ~2, -1
77 −- **Syncs enregistrés** (`sync_log`) : 83
71 +- **Offres en base** : 2638 (dont **1226 actives**, 11 masquées comme doublons `dup_of`)
72 +- **Salaire** : 424/1226 actives (35 %)
73 +- **GPS** : 1226/1226 actives (100 %)
74 +- **Mode** : 1036/1226 actives (85 %)
75 +- **Parution** : 1226/1226 actives (100 %)
76 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 1211, +8, ~21, -4
77 +- **Syncs enregistrés** (`sync_log`) : 361
78 78
79 79 ## Erreurs & dépannage
80 80
@@ -82,6 +82,7 @@ Erreurs relevées dans `sync_log` :
82 82
83 83 | Erreur | Occurrences | Dernière fois |
84 84 |---|---|---|
85 +| HTTPSConnectionPool(host='jobs-prod.workland.com', port=443): Max retries exceeded with ur… | 1 | 2026-09-18 12:52 |
85 86 | HTTPSConnectionPool(host='jobs-prod.workland.com', port=443): Read timed out. (read timeou… | 1 | 2026-08-22 04:52 |
86 87
87 88 - Rejouer un sync isolé : `.venv/bin/python run.py sync atlas_workland` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='atlas_workland' ORDER BY ts DESC LIMIT 5;"`
modified docs/connecteurs/atob.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/atob.md
7 7 Rôle : Fiche connecteur — AtoB (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 50 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Senior Software Engineer, Payments* — ∅ · $150K - $190K ·
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/2 actives (50 %)
79 79 - **GPS** : 1/2 actives (50 %)
80 80 - **Mode** : 2/2 actives (100 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:37 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 286
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.ashbyhq.com', port=443): Max retries exceeded with url: /pos… | 1 | 2026-09-18 12:52 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync atob` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='atob' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/ats-adp.md +20 −19
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-adp.md
7 7 Rôle : Fiche plateforme ATS adp — mécanique partagée + tableau des 17 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `adp`
14 14
15 −**17 employeurs connectés** via cette plateforme — **134 offres actives**. Module partagé : `jobka/connectors/adp.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**17 employeurs connectés** via cette plateforme — **139 offres actives**. Module partagé : `jobka/connectors/adp.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -40,23 +40,23 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
40 40
41 41 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
42 42 |---|---|---|---|---|---|---|
43 −| [Uniboard](uniboard.md) | 19 | 21 % | 0 % | 0 % | 2026-08-25 07:20 | ✅ |
44 −| [Canadian Royalties](canadian_royalties.md) | 17 | 47 % | 0 % | 0 % | 2026-08-25 08:05 | ✅ |
45 −| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 12 | 8 % | 0 % | 0 % | 2026-08-25 08:32 | ✅ |
46 −| [Strathmore](strathmore.md) | 12 | 25 % | 0 % | 0 % | 2026-08-25 07:20 | ✅ |
47 −| [Quincaillerie Richelieu](richelieu.md) | 12 | 0 % | 0 % | 0 % | 2026-08-25 07:21 | ✅ |
48 −| [UV Assurance](uv_assurance.md) | 11 | 0 % | 0 % | 9 % | 2026-08-25 07:21 | ✅ |
49 −| [Bento Sushi](bento_sushi.md) | 9 | 89 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
50 −| [H2O Innovation](h2o_innovation.md) | 8 | 12 % | 0 % | 0 % | 2026-08-25 08:39 | ✅ |
51 −| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 7 | 43 % | 100 % | 0 % | 2026-08-25 07:41 | ✅ |
52 −| [Cultures Gen V](cultures_genv.md) | 6 | 33 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
53 −| [Abritek](abritek.md) | 6 | 100 % | 0 % | 0 % | 2026-08-25 07:54 | ✅ |
54 −| [Cook It](cookit.md) | 6 | 100 % | 0 % | 0 % | 2026-08-25 08:18 | ✅ |
55 −| [MSI Gestion immobilière](msi_gestion.md) | 5 | 100 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
56 −| [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
57 −| [Niobec (Magris Performance Materials)](niobec.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 07:24 | ✅ |
58 −| [Nemaska Lithium](nemaska_lithium.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:20 | ✅ |
59 −| [Triple Boris](triple_boris.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:24 | ✅ |
43 +| [Uniboard](uniboard.md) | 19 | 37 % | 63 % | 0 % | 2026-09-21 17:39 | ✅ |
44 +| [Strathmore](strathmore.md) | 17 | 47 % | 100 % | 6 % | 2026-09-21 17:35 | ✅ |
45 +| [Canadian Royalties](canadian_royalties.md) | 15 | 47 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
46 +| [UV Assurance](uv_assurance.md) | 14 | 0 % | 100 % | 14 % | 2026-09-21 17:39 | ✅ |
47 +| [H2O Innovation](h2o_innovation.md) | 13 | 8 % | 100 % | 0 % | 2026-09-21 17:08 | ✅ |
48 +| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 12 | 33 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
49 +| [Bento Sushi](bento_sushi.md) | 11 | 91 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
50 +| [Quincaillerie Richelieu](richelieu.md) | 11 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
51 +| [Cook It](cookit.md) | 7 | 100 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
52 +| [Cultures Gen V](cultures_genv.md) | 5 | 20 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
53 +| [MSI Gestion immobilière](msi_gestion.md) | 5 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
54 +| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 4 | 50 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
55 +| [Abritek](abritek.md) | 3 | 100 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
56 +| [Niobec (Magris Performance Materials)](niobec.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
57 +| [Nemaska Lithium](nemaska_lithium.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
58 +| [Triple Boris](triple_boris.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
59 +| [Osgoode Properties](osgoode_properties.md) | 0 | — | — | — | 2026-09-21 17:26 | ✅ |
60 60
61 61 ## Licence / conformité
62 62
@@ -74,5 +74,6 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
74 74
75 75 Commits touchant `jobka/connectors/adp.py` :
76 76
77 +- `c7d9ece` 2026-08-30 [ka6] fix connecteur bento_sushi: reprise sur réponses ADP 200 non-JSON (retry+backoff, erreur diagnosticable)
77 78 - `856863d` 2026-08-25 Vague D implémentée — 75 nouveaux connecteurs (968 -> 1044 employeurs), ~768 offres QC
78 79 - `4917d57` 2026-08-18 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC
modified docs/connecteurs/ats-ashby.md +43 −43
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-ashby.md
7 7 Rôle : Fiche plateforme ATS ashby — mécanique partagée + tableau des 41 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `ashby`
14 14
15 −**41 employeurs connectés** via cette plateforme — **332 offres actives**. Module partagé : `jobka/connectors/ashby.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**41 employeurs connectés** via cette plateforme — **321 offres actives**. Module partagé : `jobka/connectors/ashby.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -40,47 +40,47 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
40 40
41 41 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
42 42 |---|---|---|---|---|---|---|
43 −| [MaintainX](maintainx.md) | 72 | 6 % | 86 % | 100 % | 2026-08-25 07:37 | ✅ |
44 −| [Lightspeed Commerce](lightspeedhq.md) | 68 | 7 % | 99 % | 100 % | 2026-08-25 07:37 | ✅ |
45 −| [Cohere](cohere.md) | 42 | 17 % | 36 % | 100 % | 2026-08-25 08:18 | ✅ |
46 −| [Directive](directive.md) | 28 | 18 % | 0 % | 100 % | 2026-08-25 08:20 | ✅ |
47 −| [Baseten](baseten.md) | 23 | 100 % | 0 % | 100 % | 2026-08-25 08:02 | ✅ |
48 −| [Maya HTT](maya_htt.md) | 17 | 0 % | 0 % | 100 % | 2026-08-25 07:13 | ✅ |
49 −| [Tetrix](tetrix.md) | 10 | 100 % | 10 % | 100 % | 2026-08-25 05:12 | ✅ |
50 −| [Hopper](hopper.md) | 5 | 0 % | 60 % | 100 % | 2026-08-25 08:41 | ✅ |
51 −| [Mistral AI](mistral_ai.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 07:41 | ✅ |
52 −| [Nomic Bio](nomic.md) | 4 | 0 % | 75 % | 100 % | 2026-08-25 07:43 | ✅ |
53 −| [Neo Financial](neofinancial.md) | 4 | 100 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
54 −| [Serve Robotics](serverobotics.md) | 4 | 100 % | 0 % | 100 % | 2026-08-25 04:57 | ✅ |
55 −| [Fuse Energy](fuse.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
56 −| [No Saint](no_saint.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
57 −| [Alygra Advisory](alygra.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 07:59 | ✅ |
58 −| [AMI](ami.md) | 3 | 0 % | 0 % | 100 % | 2026-08-25 07:59 | ✅ |
59 −| [Canadavisa](canadavisa.md) | 3 | 33 % | 67 % | 100 % | 2026-08-25 08:05 | ✅ |
60 −| [Equal1](equal1.md) | 3 | 0 % | 0 % | 100 % | 2026-08-25 08:22 | ✅ |
61 −| [Fellow Insights Inc.](fellowai.md) | 3 | 67 % | 0 % | 100 % | 2026-08-25 08:24 | ✅ |
62 −| [inBeat Agency](inbeat_agency.md) | 3 | 0 % | 33 % | 100 % | 2026-08-25 08:44 | ✅ |
63 −| [Paradox](paradox.md) | 3 | 0 % | 0 % | 100 % | 2026-08-25 07:45 | ✅ |
64 −| [Exegy](exegy.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 08:23 | ✅ |
65 −| [AtoB](atob.md) | 2 | 50 % | 50 % | 100 % | 2026-08-25 08:00 | ✅ |
66 −| [Featherless AI](featherlessai.md) | 2 | 0 % | 0 % | 100 % | 2026-08-25 08:24 | ✅ |
67 −| [Hinge Health](hinge_health.md) | 2 | 100 % | 100 % | 100 % | 2026-08-25 08:39 | ✅ |
68 −| [Industrious](industrious.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
69 −| [Vasco](vasco.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:22 | ✅ |
70 −| [Alan Canada](alan.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:58 | ✅ |
71 −| [Billups](billups.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:03 | ✅ |
72 −| [Lambda](lambda.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:36 | ✅ |
73 −| [OXIO Corporation](oxio.md) | 1 | 0 % | 0 % | 100 % | 2026-08-25 07:45 | ✅ |
74 −| [Blockstream](blockstream.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
75 −| [Delos Data](delos_data.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:19 | ✅ |
76 −| [Eli Health](eli.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:22 | ✅ |
77 −| [Myperch](myperch.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
78 −| [Nascent](nascent.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
79 −| [Periodic Labs](periodic_labs.md) | 1 | 100 % | 0 % | 100 % | 2026-08-25 07:45 | ✅ |
80 −| [Infirmière Praticienne Spécialisée (IPS)](phoenix.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:46 | ✅ |
81 −| [Rollstack](rollstack.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:50 | ✅ |
82 −| [Trener](trener_robotics.md) | 1 | 0 % | 0 % | 100 % | 2026-08-25 05:18 | ✅ |
83 −| [SOVRA](sovra.md) | 0 | — | — | — | 2026-08-25 05:02 | ✅ |
43 +| [Lightspeed Commerce](lightspeedhq.md) | 68 | 6 % | 100 % | 100 % | 2026-09-21 17:21 | ✅ |
44 +| [MaintainX](maintainx.md) | 59 | 61 % | 80 % | 100 % | 2026-09-21 17:22 | ✅ |
45 +| [Cohere](cohere.md) | 40 | 92 % | 32 % | 100 % | 2026-09-21 16:50 | ✅ |
46 +| [Baseten](baseten.md) | 25 | 100 % | 0 % | 100 % | 2026-09-21 16:38 | ✅ |
47 +| [Directive](directive.md) | 24 | 8 % | 0 % | 100 % | 2026-09-21 16:53 | ✅ |
48 +| [Maya HTT](maya_htt.md) | 15 | 0 % | 100 % | 100 % | 2026-09-21 17:22 | ✅ |
49 +| [Tetrix](tetrix.md) | 10 | 100 % | 10 % | 100 % | 2026-09-21 17:37 | ✅ |
50 +| [Mistral AI](mistral_ai.md) | 7 | 0 % | 71 % | 29 % | 2026-09-21 17:24 | ✅ |
51 +| [Hopper](hopper.md) | 4 | 0 % | 50 % | 100 % | 2026-09-21 17:11 | ✅ |
52 +| [Nomic Bio](nomic.md) | 4 | 0 % | 75 % | 100 % | 2026-09-21 17:24 | ✅ |
53 +| [Neo Financial](neofinancial.md) | 4 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
54 +| [AMI](ami.md) | 4 | 0 % | 0 % | 100 % | 2026-09-21 16:37 | ✅ |
55 +| [Eli Health](eli.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 16:55 | ✅ |
56 +| [Fellow Insights Inc.](fellowai.md) | 4 | 25 % | 0 % | 100 % | 2026-09-21 16:57 | ✅ |
57 +| [Serve Robotics](serverobotics.md) | 4 | 100 % | 0 % | 100 % | 2026-09-21 17:32 | ✅ |
58 +| [SOVRA](sovra.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:34 | ✅ |
59 +| [Fuse Energy](fuse.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
60 +| [Vasco](vasco.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 17:40 | ✅ |
61 +| [Alygra Advisory](alygra.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 16:37 | ✅ |
62 +| [Canadavisa](canadavisa.md) | 3 | 33 % | 67 % | 100 % | 2026-09-21 16:41 | ✅ |
63 +| [Featherless AI](featherlessai.md) | 3 | 67 % | 0 % | 100 % | 2026-09-21 16:57 | ✅ |
64 +| [Nascent](nascent.md) | 3 | 0 % | 33 % | 67 % | 2026-09-21 17:24 | ✅ |
65 +| [Paradox](paradox.md) | 3 | 0 % | 0 % | 100 % | 2026-09-21 17:27 | ✅ |
66 +| [Exegy](exegy.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:57 | ✅ |
67 +| [AtoB](atob.md) | 2 | 50 % | 50 % | 100 % | 2026-09-21 16:37 | ✅ |
68 +| [Equal1](equal1.md) | 2 | 0 % | 0 % | 100 % | 2026-09-21 16:56 | ✅ |
69 +| [Hinge Health](hinge_health.md) | 2 | 100 % | 100 % | 100 % | 2026-09-21 17:09 | ✅ |
70 +| [inBeat Agency](inbeat_agency.md) | 2 | 0 % | 50 % | 100 % | 2026-09-21 17:12 | ✅ |
71 +| [No Saint](no_saint.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
72 +| [Alan Canada](alan.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
73 +| [Billups](billups.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:39 | ✅ |
74 +| [Lambda](lambda.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:20 | ✅ |
75 +| [OXIO Corporation](oxio.md) | 1 | 0 % | 0 % | 100 % | 2026-09-21 17:27 | ✅ |
76 +| [Blockstream](blockstream.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:39 | ✅ |
77 +| [Myperch](myperch.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
78 +| [Periodic Labs](periodic_labs.md) | 1 | 100 % | 0 % | 100 % | 2026-09-21 17:27 | ✅ |
79 +| [Infirmière Praticienne Spécialisée (IPS)](phoenix.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
80 +| [Trener](trener_robotics.md) | 1 | 0 % | 0 % | 100 % | 2026-09-21 17:38 | ✅ |
81 +| [Industrious](industrious.md) | 0 | — | — | — | 2026-09-21 17:12 | ✅ |
82 +| [Delos Data](delos_data.md) | 0 | — | — | — | 2026-09-21 16:52 | ✅ |
83 +| [Rollstack](rollstack.md) | 0 | — | — | — | 2026-09-21 17:30 | ✅ |
84 84
85 85 ## Licence / conformité
86 86
modified docs/connecteurs/ats-bamboohr.md +39 −39
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-bamboohr.md
7 7 Rôle : Fiche plateforme ATS bamboohr — mécanique partagée + tableau des 37 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `bamboohr`
14 14
15 −**37 employeurs connectés** via cette plateforme — **258 offres actives**. Module partagé : `jobka/connectors/bamboohr.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**37 employeurs connectés** via cette plateforme — **269 offres actives**. Module partagé : `jobka/connectors/bamboohr.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -43,43 +43,43 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
43 43
44 44 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
45 45 |---|---|---|---|---|---|---|
46 −| [Broccolini](broccolini.md) | 22 | 0 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
47 −| [dcbel](dcbel.md) | 21 | 0 % | 100 % | 100 % | 2026-08-25 08:19 | ✅ |
48 −| [Explorance](explorance.md) | 19 | 0 % | 100 % | 100 % | 2026-08-25 08:23 | ✅ |
49 −| [Produits Labelink](labelink.md) | 19 | 0 % | 100 % | 100 % | 2026-08-25 07:36 | ✅ |
50 −| [Victoria Park Medispa](vicpark.md) | 14 | 0 % | 100 % | 100 % | 2026-08-25 05:22 | ✅ |
51 −| [EMD-Batimo](batimoinc.md) | 14 | 0 % | 0 % | 100 % | 2026-08-25 08:02 | ✅ |
52 −| [OPAL-RT Technologies](opalrt.md) | 13 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
53 −| [KPI Digital](kpidigital.md) | 11 | 0 % | 100 % | 100 % | 2026-08-25 07:36 | ✅ |
54 −| [Logisco](logisco.md) | 11 | 36 % | 100 % | 100 % | 2026-08-25 07:37 | ✅ |
55 −| [Portage CyberTech](portagecybertech.md) | 9 | 44 % | 100 % | 100 % | 2026-08-25 07:46 | ✅ |
56 −| [Big Bang](bigbang.md) | 8 | 25 % | 100 % | 100 % | 2026-08-25 08:03 | ✅ |
57 −| [Devimco Appartements](devimco.md) | 7 | 14 % | 100 % | 100 % | 2026-08-25 08:20 | ✅ |
58 −| [Nexapp](nexapp.md) | 7 | 0 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
59 −| [MXO](mxo.md) | 6 | 83 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
60 −| [Robotiq](robotiq.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 07:50 | ✅ |
61 −| [eStruxture](estruxture.md) | 6 | 17 % | 0 % | 100 % | 2026-08-25 08:23 | ✅ |
62 −| [North West Rubber](northwestrubber.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 07:44 | ✅ |
63 −| [Propriétés Scalia](scalia.md) | 5 | 20 % | 100 % | 100 % | 2026-08-25 04:56 | ✅ |
64 −| [Surmesur](surmesur.md) | 5 | 80 % | 100 % | 100 % | 2026-08-25 05:04 | ✅ |
65 −| [Toon Boom Animation](toonboom.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 05:16 | ✅ |
66 −| [Triotech](triotech.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 05:18 | ✅ |
67 −| [Ludia / Jam City](ludia.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 07:37 | ✅ |
68 −| [EOS Aircraft](eosaircraftinc.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 08:22 | ✅ |
69 −| [Korem](korem.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:36 | ✅ |
70 −| [Mitacs](mitacs.md) | 4 | 100 % | 100 % | 100 % | 2026-08-25 07:41 | ✅ |
71 −| [PEAK Groupe financier](peakgroup.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
72 −| [EVLO (Hydro-Québec)](evlo.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 08:23 | ✅ |
73 −| [Groupe BC2](bc2.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 08:03 | ✅ |
74 −| [Fenêtres Concept](fenetresconcept.md) | 2 | 100 % | 100 % | 100 % | 2026-08-25 08:24 | ✅ |
75 −| [Flare (cybersécurité)](flare.md) | 2 | 50 % | 100 % | 100 % | 2026-08-25 08:25 | ✅ |
76 −| [OTT Financial](ott.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
77 −| [Rethink](rethinkcanada.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:50 | ✅ |
78 −| [Ziptrek Tremblant](ziptrekeco.md) | 2 | 100 % | 100 % | 100 % | 2026-08-25 05:36 | ✅ |
79 −| [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:18 | ✅ |
80 −| [Poulet Rouge](pouletrouge.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:46 | ✅ |
81 −| [Openmind Technologies](openmindt.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
82 −| [Red Barrels](redbarrels.md) | 1 | 0 % | 0 % | 100 % | 2026-08-25 07:37 | ✅ |
46 +| [dcbel](dcbel.md) | 25 | 0 % | 100 % | 100 % | 2026-09-21 16:51 | ✅ |
47 +| [Produits Labelink](labelink.md) | 22 | 0 % | 100 % | 100 % | 2026-09-21 17:20 | ✅ |
48 +| [OPAL-RT Technologies](opalrt.md) | 20 | 0 % | 100 % | 100 % | 2026-09-21 17:26 | ✅ |
49 +| [Broccolini](broccolini.md) | 19 | 0 % | 100 % | 100 % | 2026-09-21 16:40 | ✅ |
50 +| [Victoria Park Medispa](vicpark.md) | 19 | 0 % | 100 % | 100 % | 2026-09-21 17:40 | ✅ |
51 +| [Portage CyberTech](portagecybertech.md) | 13 | 15 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
52 +| [Explorance](explorance.md) | 12 | 0 % | 100 % | 100 % | 2026-09-21 16:57 | ✅ |
53 +| [Logisco](logisco.md) | 10 | 10 % | 100 % | 100 % | 2026-09-21 17:21 | ✅ |
54 +| [Robotiq](robotiq.md) | 10 | 0 % | 100 % | 100 % | 2026-09-21 17:30 | ✅ |
55 +| [Devimco Appartements](devimco.md) | 9 | 11 % | 100 % | 100 % | 2026-09-21 16:52 | ✅ |
56 +| [EMD-Batimo](batimoinc.md) | 9 | 0 % | 100 % | 100 % | 2026-09-21 16:38 | ✅ |
57 +| [Big Bang](bigbang.md) | 8 | 25 % | 100 % | 100 % | 2026-09-21 16:39 | ✅ |
58 +| [KPI Digital](kpidigital.md) | 8 | 0 % | 100 % | 100 % | 2026-09-21 17:20 | ✅ |
59 +| [North West Rubber](northwestrubber.md) | 8 | 12 % | 100 % | 100 % | 2026-09-21 17:25 | ✅ |
60 +| [eStruxture](estruxture.md) | 8 | 12 % | 100 % | 100 % | 2026-09-21 16:56 | ✅ |
61 +| [MXO](mxo.md) | 6 | 83 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
62 +| [Nexapp](nexapp.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
63 +| [Propriétés Scalia](scalia.md) | 5 | 20 % | 100 % | 100 % | 2026-09-21 17:32 | ✅ |
64 +| [Surmesur](surmesur.md) | 5 | 80 % | 100 % | 100 % | 2026-09-21 17:35 | ✅ |
65 +| [Toon Boom Animation](toonboom.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
66 +| [Triotech](triotech.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
67 +| [Korem](korem.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:20 | ✅ |
68 +| [Mitacs](mitacs.md) | 4 | 100 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
69 +| [Ludia / Jam City](ludia.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:22 | ✅ |
70 +| [PEAK Groupe financier](peakgroup.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
71 +| [EOS Aircraft](eosaircraftinc.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 16:56 | ✅ |
72 +| [Flare (cybersécurité)](flare.md) | 3 | 33 % | 100 % | 100 % | 2026-09-21 16:58 | ✅ |
73 +| [Rethink](rethinkcanada.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 17:30 | ✅ |
74 +| [EVLO (Hydro-Québec)](evlo.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:57 | ✅ |
75 +| [Fenêtres Concept](fenetresconcept.md) | 2 | 100 % | 100 % | 100 % | 2026-09-21 16:57 | ✅ |
76 +| [OTT Financial](ott.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:26 | ✅ |
77 +| [Ziptrek Tremblant](ziptrekeco.md) | 2 | 100 % | 100 % | 100 % | 2026-09-21 17:44 | ✅ |
78 +| [Openmind Technologies](openmindt.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:26 | ✅ |
79 +| [Groupe BC2](bc2.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:38 | ✅ |
80 +| [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:51 | ✅ |
81 +| [Red Barrels](redbarrels.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:29 | ✅ |
82 +| [Poulet Rouge](pouletrouge.md) | 0 | — | — | — | 2026-09-21 17:27 | ✅ |
83 83
84 84 ## Licence / conformité
85 85
modified docs/connecteurs/ats-breezy.md +75 −74
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-breezy.md
7 7 Rôle : Fiche plateforme ATS breezy — mécanique partagée + tableau des 72 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `breezy`
14 14
15 −**72 employeurs connectés** via cette plateforme — **425 offres actives**. Module partagé : `jobka/connectors/breezy.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**72 employeurs connectés** via cette plateforme — **393 offres actives**. Module partagé : `jobka/connectors/breezy.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -37,78 +37,78 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
37 37
38 38 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
39 39 |---|---|---|---|---|---|---|
40 −| [HIKINEX](recruiting.md) | 77 | 0 % | 100 % | 75 % | 2026-08-25 07:49 | ✅ |
41 −| [Brand Momentum](brandmomentum.md) | 33 | 73 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
42 −| [Progesys](progesys_inc.md) | 24 | 4 % | 96 % | 4 % | 2026-08-25 07:46 | ✅ |
43 −| [Merchandising Consultants Associates](merchandising_consultants_associates.md) | 22 | 100 % | 95 % | 73 % | 2026-08-25 07:39 | ✅ |
44 −| [NOVIPRO](novipro.md) | 16 | 0 % | 100 % | 25 % | 2026-08-25 07:44 | ✅ |
45 −| [Wealthy Group of Companies LLC](wealthy_recruiting.md) | 16 | 100 % | 94 % | 0 % | 2026-08-25 05:35 | ✅ |
46 −| [BellatRx](bellatrx_inc.md) | 15 | 0 % | 100 % | 7 % | 2026-08-25 08:03 | ✅ |
47 −| [EQ3](eq3_ltd.md) | 14 | 64 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
48 −| [VA Desk](vadesk.md) | 14 | 21 % | 100 % | 100 % | 2026-08-25 05:21 | ✅ |
49 −| [MicroHabitat](microhabitat.md) | 13 | 100 % | 100 % | 38 % | 2026-08-25 07:40 | ✅ |
50 −| [Réseau Mieux-Être](reseau_mieux_etre.md) | 13 | 0 % | 100 % | 8 % | 2026-08-25 07:50 | ✅ |
51 −| [3 Brasseurs Canada](trois_brasseurs.md) | 11 | 73 % | 100 % | 100 % | 2026-08-25 05:18 | ✅ |
52 −| [BDL Énergie](bdl_energie.md) | 10 | 0 % | 30 % | 0 % | 2026-08-25 08:03 | ✅ |
53 −| [Technica Mining](technica_mining.md) | 10 | 0 % | 10 % | 0 % | 2026-08-25 05:12 | ✅ |
54 −| [ADI - Albert Davidson Industries](adi_albert_davidson_industries.md) | 9 | 100 % | 100 % | 11 % | 2026-08-25 07:55 | ✅ |
55 −| [Nora Pharma](nora_pharma.md) | 9 | 100 % | 89 % | 0 % | 2026-08-25 07:43 | ✅ |
56 −| [Lindt & Sprüngli Canada](lindt_sprunglicanada.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
57 −| [New York Holdings](new_york_holdings.md) | 8 | 12 % | 100 % | 88 % | 2026-08-25 07:43 | ✅ |
58 −| [Luqia (INO)](ino_ca.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
59 −| [Prep Academy Tutors](prep_academy_tutors.md) | 7 | 100 % | 100 % | 29 % | 2026-08-25 07:46 | ✅ |
60 −| [ThirdChannel](thirdchannel_inc.md) | 6 | 100 % | 100 % | 0 % | 2026-08-25 05:14 | ✅ |
61 −| [Alphanumeric Systems](alphanumeric_systems.md) | 5 | 100 % | 100 % | 40 % | 2026-08-25 07:59 | ✅ |
62 −| [VOXDATA](voxdata.md) | 4 | 100 % | 100 % | 100 % | 2026-08-25 05:23 | ✅ |
63 −| [Jay Analytix](jay_analytix.md) | 4 | 0 % | 100 % | 50 % | 2026-08-25 07:26 | ✅ |
64 −| [Norbert Health](norbert_health.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
65 −| [Spiegel Ryan S.E.N.C.R.L.](spiegel_sohmer.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
66 −| [TEN Canada (Transportation Equipment Network)](ten_canada.md) | 4 | 25 % | 100 % | 0 % | 2026-08-25 05:12 | ✅ |
67 −| [Turbulent](turbulent.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
68 −| [Adoc Talent Management](adoc_tm.md) | 3 | 0 % | 100 % | 33 % | 2026-08-25 07:55 | ✅ |
69 −| [Gastro Health](gastro_health.md) | 3 | 100 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
70 −| [Vaporus](vaporus_inc.md) | 2 | 100 % | 50 % | 0 % | 2026-08-25 05:22 | ✅ |
71 −| [Black & McDonald](black_mcdonald_francais.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
72 −| [Sense Ingénierie](sense_engineering.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 04:57 | ✅ |
73 −| [Groupe Unigesco](groupe_unigesco.md) | 2 | 50 % | 100 % | 50 % | 2026-08-25 08:32 | ✅ |
74 −| [H & S Loss Control Inspections](h_s_loss_control_inspections_in.md) | 2 | 100 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
75 −| [Insite Property Solutions](insite_property_solutions.md) | 2 | 100 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
76 −| [Canada Global Recruitment](canada_global.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 08:05 | ✅ |
77 −| [YouSet](youset.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
78 −| [Panda7](panda7.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
79 −| [TELUS Santé — Cliniques](telus_health_7fe6b0fe8614.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 05:12 | ✅ |
80 −| [1perTInent](x1pertinent.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
81 −| [4th Day Trucking](x4th_day_trucking.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 05:35 | ✅ |
82 −| [Above Flights](above_flights.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:54 | ✅ |
83 −| [AC780](ac780.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:54 | ✅ |
84 −| [MOKO](africa_moko.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:56 | ✅ |
85 −| [Agence](agence_carrieres.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:56 | ✅ |
86 −| [Bliinx](bliinx.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
87 −| [Bon Poste](bon_poste.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
88 −| [BoxKnight](boxknight.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
89 −| [Canada-Explorers](canada_explorers.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
90 −| [DropGenie](drop_genie.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
91 −| [Endossed](endossed.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:22 | ✅ |
92 −| [Eranum Solutions Numériques](eranum.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
93 −| [Family Resource Home Care](family_resource_home_care.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:24 | ✅ |
94 −| [Fundica](fundica.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
95 −| [Hera AI](hera.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
96 −| [Km Impact](km_impact.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:35 | ✅ |
97 −| [Myle Home Service](myle_service.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
98 −| [Next Generation Inc](next_generation_inc.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
99 −| [Octav](octav.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
100 −| [Paythings](paythings_19f14e354a62.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
101 −| [PeopleConnect Inc](peopleconnect_inc.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
102 −| [Postmedia Distribution Solutions](postmediadistributionsolutions.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
103 −| [Ridepanda](ridepanda.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
104 −| [Shearwater Aerospace](shearwater_aerospace.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 04:58 | ✅ |
105 −| [SportWhere](sportwhere.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
106 −| [SRS Merchandising](srs_merchandising.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
107 −| [Trueline](trueline.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
108 −| [Urbania](urbania.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:21 | ✅ |
109 −| [Valital Technologies](valital_technologies.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:21 | ✅ |
110 −| [Volume7](volume7.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:23 | ✅ |
111 −| [Wyze Labs](wyze_labs.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
40 +| [HIKINEX](recruiting.md) | 85 | 0 % | 100 % | 78 % | 2026-09-21 17:29 | ✅ |
41 +| [Brand Momentum](brandmomentum.md) | 33 | 61 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
42 +| [Progesys](progesys_inc.md) | 25 | 4 % | 96 % | 4 % | 2026-09-21 17:27 | ✅ |
43 +| [EQ3](eq3_ltd.md) | 16 | 56 % | 94 % | 0 % | 2026-09-21 16:56 | ✅ |
44 +| [Réseau Mieux-Être](reseau_mieux_etre.md) | 16 | 0 % | 100 % | 6 % | 2026-09-21 17:30 | ✅ |
45 +| [NOVIPRO](novipro.md) | 15 | 0 % | 100 % | 27 % | 2026-09-21 17:25 | ✅ |
46 +| [Lindt & Sprüngli Canada](lindt_sprunglicanada.md) | 14 | 0 % | 93 % | 0 % | 2026-09-21 17:21 | ✅ |
47 +| [Wealthy Group of Companies LLC](wealthy_recruiting.md) | 14 | 100 % | 93 % | 0 % | 2026-09-21 17:43 | ✅ |
48 +| [MicroHabitat](microhabitat.md) | 13 | 100 % | 100 % | 38 % | 2026-09-21 17:23 | ✅ |
49 +| [ADI - Albert Davidson Industries](adi_albert_davidson_industries.md) | 10 | 100 % | 100 % | 10 % | 2026-09-21 16:34 | ✅ |
50 +| [Luqia (INO)](ino_ca.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
51 +| [3 Brasseurs Canada](trois_brasseurs.md) | 10 | 70 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
52 +| [BellatRx](bellatrx_inc.md) | 10 | 0 % | 100 % | 10 % | 2026-09-21 16:39 | ✅ |
53 +| [Merchandising Consultants Associates](merchandising_consultants_associates.md) | 10 | 100 % | 100 % | 100 % | 2026-09-21 17:23 | ✅ |
54 +| [Technica Mining](technica_mining.md) | 10 | 0 % | 10 % | 0 % | 2026-09-21 17:37 | ✅ |
55 +| [Nora Pharma](nora_pharma.md) | 8 | 100 % | 88 % | 0 % | 2026-09-21 17:24 | ✅ |
56 +| [Prep Academy Tutors](prep_academy_tutors.md) | 8 | 100 % | 100 % | 25 % | 2026-09-21 17:27 | ✅ |
57 +| [ThirdChannel](thirdchannel_inc.md) | 8 | 100 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
58 +| [TEN Canada (Transportation Equipment Network)](ten_canada.md) | 6 | 17 % | 67 % | 0 % | 2026-09-21 17:37 | ✅ |
59 +| [Alphanumeric Systems](alphanumeric_systems.md) | 5 | 100 % | 100 % | 40 % | 2026-09-21 16:36 | ✅ |
60 +| [New York Holdings](new_york_holdings.md) | 5 | 20 % | 100 % | 80 % | 2026-09-21 17:24 | ✅ |
61 +| [VOXDATA](voxdata.md) | 4 | 100 % | 100 % | 100 % | 2026-09-21 17:41 | ✅ |
62 +| [Jay Analytix](jay_analytix.md) | 4 | 0 % | 100 % | 50 % | 2026-09-21 17:13 | ✅ |
63 +| [Norbert Health](norbert_health.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
64 +| [Spiegel Ryan S.E.N.C.R.L.](spiegel_sohmer.md) | 4 | 0 % | 100 % | 25 % | 2026-09-21 17:34 | ✅ |
65 +| [BDL Énergie](bdl_energie.md) | 3 | 33 % | 0 % | 0 % | 2026-09-21 16:39 | ✅ |
66 +| [Black & McDonald](black_mcdonald_francais.md) | 3 | 0 % | 67 % | 0 % | 2026-09-21 16:39 | ✅ |
67 +| [Turbulent](turbulent.md) | 3 | 0 % | 67 % | 0 % | 2026-09-21 17:38 | ✅ |
68 +| [Adoc Talent Management](adoc_tm.md) | 3 | 0 % | 100 % | 33 % | 2026-09-21 16:34 | ✅ |
69 +| [Groupe Unigesco](groupe_unigesco.md) | 3 | 67 % | 100 % | 33 % | 2026-09-21 17:01 | ✅ |
70 +| [Vaporus](vaporus_inc.md) | 2 | 100 % | 50 % | 0 % | 2026-09-21 17:40 | ✅ |
71 +| [Sense Ingénierie](sense_engineering.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:32 | ✅ |
72 +| [Canada Global Recruitment](canada_global.md) | 1 | 0 % | 0 % | 0 % | 2026-09-21 16:41 | ✅ |
73 +| [YouSet](youset.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:44 | ✅ |
74 +| [Panda7](panda7.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
75 +| [TELUS Santé — Cliniques](telus_health_7fe6b0fe8614.md) | 1 | 100 % | 0 % | 0 % | 2026-09-21 17:37 | ✅ |
76 +| [1perTInent](x1pertinent.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:44 | ✅ |
77 +| [Above Flights](above_flights.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:34 | ✅ |
78 +| [AC780](ac780.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
79 +| [MOKO](africa_moko.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ |
80 +| [Agence](agence_carrieres.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ |
81 +| [Bliinx](bliinx.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:39 | ✅ |
82 +| [Bon Poste](bon_poste.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
83 +| [BoxKnight](boxknight.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:40 | ✅ |
84 +| [Canada-Explorers](canada_explorers.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
85 +| [Endossed](endossed.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:56 | ✅ |
86 +| [Eranum Solutions Numériques](eranum.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
87 +| [Fundica](fundica.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
88 +| [Km Impact](km_impact.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:20 | ✅ |
89 +| [Myle Home Service](myle_service.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
90 +| [Next Generation Inc](next_generation_inc.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
91 +| [Octav](octav.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:26 | ✅ |
92 +| [PeopleConnect Inc](peopleconnect_inc.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
93 +| [Postmedia Distribution Solutions](postmediadistributionsolutions.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
94 +| [Shearwater Aerospace](shearwater_aerospace.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:32 | ✅ |
95 +| [SportWhere](sportwhere.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
96 +| [Urbania](urbania.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
97 +| [Valital Technologies](valital_technologies.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:39 | ✅ |
98 +| [Volume7](volume7.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:41 | ✅ |
99 +| [4th Day Trucking](x4th_day_trucking.md) | 0 | — | — | — | 2026-09-21 17:44 | ✅ |
100 +| [DropGenie](drop_genie.md) | 0 | — | — | — | 2026-09-21 16:53 | ✅ |
101 +| [Family Resource Home Care](family_resource_home_care.md) | 0 | — | — | — | 2026-09-21 16:57 | ✅ |
102 +| [Gastro Health](gastro_health.md) | 0 | — | — | — | 2026-09-21 16:58 | ✅ |
103 +| [H & S Loss Control Inspections](h_s_loss_control_inspections_in.md) | 0 | — | — | — | 2026-09-21 17:08 | ✅ |
104 +| [Hera AI](hera.md) | 0 | — | — | — | 2026-09-21 17:09 | ✅ |
105 +| [Insite Property Solutions](insite_property_solutions.md) | 0 | — | — | — | 2026-09-21 17:12 | ✅ |
106 +| [Paythings](paythings_19f14e354a62.md) | 0 | — | — | — | 2026-09-21 17:27 | ✅ |
107 +| [Ridepanda](ridepanda.md) | 0 | — | — | — | 2026-09-21 17:30 | ✅ |
108 +| [SRS Merchandising](srs_merchandising.md) | 0 | — | — | — | 2026-09-21 17:35 | ✅ |
109 +| [Trueline](trueline.md) | 0 | — | — | — | 2026-09-21 17:38 | ✅ |
110 +| [VA Desk](vadesk.md) | 0 | — | — | — | 2026-09-21 17:39 | ✅ |
111 +| [Wyze Labs](wyze_labs.md) | 0 | — | — | — | 2026-09-21 17:44 | ✅ |
112 112
113 113 ## Licence / conformité
114 114
@@ -126,5 +126,6 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
126 126
127 127 Commits touchant `jobka/connectors/breezy.py` :
128 128
129 +- `c4bfc7b` 2026-08-27 [ka6] fix connecteur x4th_day_trucking: employeur de camionnage AMÉRICAIN (4th Day Trucking) — les 182 postings du board Breezy sont tous aux É.-U. (VA, OH, TX, CA…), zéro Québec. L'unique offre captée (CDL A LOCAL TRUCK DRIVING POSITION Grocery ACCOUNT!, 163eb419c625, East Granby) était un faux positif: East Granby, CONNECTICUT — « Granby » (ville d'Estrie, _QC_CITIES) matchait dans le libellé, même famille que usamechasp b387be9, MAIS la variante Breezy échappe au fix f4038e4 parce que _keep passe le nom d'État COMPLET (« East Granby, Connecticut ») alors que _NON_QC_REGION_RE ne couvre que les codes (« CT »). Le passage 1→0 du 2026-08-27 vient de la dépublication de cette offre à la source (absente des 182 postings actuels) — volume 0 légitime, médiane 0.5 < DRIFT_MIN_BASE=8. Durcissement minimal: BreezyConnector._keep rejette désormais tout posting dont location.country.id est présent et != CA (donnée autoritaire de l'API Breezy, avant l'heuristique texte); pays absent → heuristique inchangée. Vérifié sans régression sur 5 boards QC légitimes (novipro 16, progesys_inc 25, brandmomentum 36, microhabitat 13, bellatrx_inc 14 — 104/104 postings retenus portent country.id=CA, volumes identiques avant/après). Purge par le mécanisme normal: sync isolé rejoué → miss_count=2 → active=0 (found=0, removed=1, statut ok). Test final: fetch réel = 182 bruts, 0 retenus = comportement correct. Note de contexte ajoutée au connecteur. pm2 restart job-ka-sync OK, site 200.
129 130 - `49067dd` 2026-08-19 Connecteurs phase 2 — correctifs et enrichissement champ par champ. Correctifs : villes SuccessFactors à trait d'union (préfixe municipal MAMH sur le slug, bogue « St »/« Pointe »), colonne date Taleo = date LIMITE chez agnico_eagle (+ garde-fou date future). Enrichissement : SmartRecruiters experienceLevel/function/industry/language/refNumber (lignes de liste, zéro requête), BambooHR locationType→work_mode, Breezy is_remote/logo_url/streetAddress, JSON-LD logo/industry/educationRequirements/skills (portails+icims+DR), Ashby applyUrl + composantes Bonus/Equity/Commission, Lever applyUrl + blocs opening/additional + allLocations, Workable application_url + function/industry, Recruitee careers_apply_url + description FR (translations) + expérience/scolarité + heures/sem, Greenhouse language + requisition_id, Workday externalUrl→apply_url + work_mode via facette Remote Type + clé cache v2, Guichet-Emplois avantages structurés + langue de travail, njoyn apply_url en colonne ; secours cache périmé quand le budget détail est épuisé (plus de fiches vidées)
130 131 - `4657429` 2026-08-17 Création massive : 135 connecteurs employeurs québécois sur 9 plateformes ATS
modified docs/connecteurs/ats-custom.md +3 −3
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-custom.md
7 7 Rôle : Fiche plateforme ATS custom — mécanique partagée + tableau des 1 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `custom`
14 14
15 −**1 employeurs connectés** via cette plateforme — **31 offres actives**. Module partagé : `jobka/connectors/custom.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**1 employeurs connectés** via cette plateforme — **33 offres actives**. Module partagé : `jobka/connectors/custom.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -28,7 +28,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
28 28
29 29 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
30 30 |---|---|---|---|---|---|---|
31 −| [Industries Lassonde](lassonde.md) | 31 | 39 % | 87 % | 6 % | 2026-08-25 07:36 | ✅ |
31 +| [Industries Lassonde](lassonde.md) | 33 | 33 % | 94 % | 6 % | 2026-09-21 17:20 | ✅ |
32 32
33 33 ## Licence / conformité
34 34
modified docs/connecteurs/ats-dayforce.md +131 −130
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-dayforce.md
7 7 Rôle : Fiche plateforme ATS dayforce — mécanique partagée + tableau des 128 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `dayforce`
14 14
15 −**128 employeurs connectés** via cette plateforme — **1809 offres actives**. Module partagé : `jobka/connectors/dayforce.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**128 employeurs connectés** via cette plateforme — **1824 offres actives**. Module partagé : `jobka/connectors/dayforce.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -51,134 +51,134 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
51 51
52 52 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
53 53 |---|---|---|---|---|---|---|
54 −| [La Vie en Rose](lavieenrose.md) | 136 | 4 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
55 −| [Vetstrategy](vetstrategy.md) | 120 | 1 % | 100 % | 1 % | 2026-08-25 05:22 | ✅ |
56 −| [Le Groupe Maurice](groupemaurice.md) | 101 | 0 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
57 −| [Bulkbarn](bulkbarn.md) | 80 | 0 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
58 −| [Gray Collection (Groupe Antonopoulos)](graycollection.md) | 74 | 0 % | 100 % | 0 % | 2026-08-25 08:31 | ✅ |
59 −| [Lesymcaquebec](lesymcaquebec.md) | 52 | 13 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
60 −| [BPA (Experts-conseils)](bpa.md) | 50 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
61 −| [Gdv](gdv.md) | 49 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
62 −| [JD Sports Canada](jdsports.md) | 47 | 0 % | 100 % | 2 % | 2026-08-25 07:27 | ✅ |
63 −| [Laura Canada](lauracanada.md) | 45 | 0 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
64 −| [Lgs](lgs.md) | 40 | 0 % | 100 % | 15 % | 2026-08-25 07:37 | ✅ |
65 −| [Unoria](unoria.md) | 40 | 0 % | 100 % | 0 % | 2026-08-25 05:20 | ✅ |
66 −| [Kenworthmaska](kenworthmaska.md) | 39 | 3 % | 100 % | 0 % | 2026-08-25 07:35 | ✅ |
67 −| [Camions Excellence Peterbilt](excellencepeterbilt.md) | 38 | 3 % | 100 % | 0 % | 2026-08-25 08:23 | ✅ |
68 −| [Automobileendirect](automobileendirect.md) | 36 | 0 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
69 −| [Groupe CH (Canadiens de Montréal, Centre Bell)](groupech.md) | 31 | 0 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
70 −| [Soprema](soprema.md) | 28 | 39 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
71 −| [Sany](imperialdade.md) | 28 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
72 −| [Stellajones](stellajones.md) | 27 | 19 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
73 −| [Comptable prix de revient](exceldorfoods478.md) | 24 | 25 % | 100 % | 12 % | 2026-08-25 08:23 | ✅ |
74 −| [Architecte Salesforce Sommaire](jam.md) | 24 | 0 % | 100 % | 0 % | 2026-08-25 07:26 | ✅ |
75 −| [Logm](logm.md) | 21 | 86 % | 100 % | 19 % | 2026-08-25 07:37 | ✅ |
76 −| [CONTRÔLEUR](novatech.md) | 20 | 45 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
77 −| [Colabor](colabor.md) | 18 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
78 −| [Pré-assemblage](motionc.md) | 16 | 0 % | 100 % | 6 % | 2026-08-25 07:41 | ✅ |
79 −| [Intervenant·e au suivi psychosocial](obm.md) | 16 | 19 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
80 −| [VinFast Canada](vinfastcanada.md) | 15 | 33 % | 100 % | 0 % | 2026-08-25 05:23 | ✅ |
81 −| [Boralex](boralex.md) | 15 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
82 −| [Vice-President, Strategic Procurement](eddyfi.md) | 15 | 0 % | 100 % | 0 % | 2026-08-25 08:21 | ✅ |
83 −| [Hygiéniste Industrielle](kdcone.md) | 15 | 0 % | 100 % | 0 % | 2026-08-25 07:34 | ✅ |
84 −| [Bilingual Customer Experience Representative (English ...](superiorplus.md) | 15 | 80 % | 100 % | 0 % | 2026-08-25 05:04 | ✅ |
85 −| [Groupe AGF](groupeagf.md) | 14 | 50 % | 100 % | 21 % | 2026-08-25 08:32 | ✅ |
86 −| [United Services Group](unitedservices.md) | 14 | 0 % | 100 % | 0 % | 2026-08-25 05:19 | ✅ |
87 −| [Chef.fe de service de quart, soir](lantic.md) | 14 | 43 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
88 −| [Avocat·e, Bureau de l'avocate générale](mthris.md) | 14 | 21 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
89 −| [Premierparks](premierparks.md) | 14 | 7 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
90 −| [Fastco Canada](fastcocanada.md) | 13 | 0 % | 100 % | 0 % | 2026-08-25 08:24 | ✅ |
91 −| [Le Massif de Charlevoix](lemassif.md) | 13 | 0 % | 100 % | 0 % | 2026-08-25 07:12 | ✅ |
92 −| [Running Room Canada](runningroom.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 07:51 | ✅ |
93 −| [Cmpams](cmpams.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
94 −| [Erb](erb.md) | 12 | 42 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
95 −| [Josephribkoff](josephribkoff.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 07:34 | ✅ |
96 −| [Valnetinc](valnetinc.md) | 12 | 8 % | 100 % | 92 % | 2026-08-25 05:21 | ✅ |
97 −| [Groupe Mach](groupemach.md) | 11 | 9 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
98 −| [Ccmhockey](ccmhockey.md) | 11 | 0 % | 100 % | 0 % | 2026-08-25 08:11 | ✅ |
99 −| [Spisante](spisante.md) | 11 | 0 % | 100 % | 27 % | 2026-08-25 05:02 | ✅ |
100 −| [Cfibfcei](cfibfcei.md) | 10 | 10 % | 100 % | 0 % | 2026-08-25 08:12 | ✅ |
101 −| [Sales Associate-Retail](roots.md) | 10 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
102 −| [Groupe Scandinave (Scandinave Spa)](gscandinave.md) | 10 | 0 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
103 −| [Altg](altg.md) | 9 | 11 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
104 −| [Associé(e), entretien préventif](boardwalkreit.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
105 −| [Cominar](cominar.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
106 −| [Eldoradogold](eldoradogold.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
107 −| [Lapresse2018Inc](lapresse2018inc.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
108 −| [Journalier(ère) de production](vestis.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 05:22 | ✅ |
109 −| [4Refuel](4refuel.md) | 8 | 25 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
110 −| [Terrapure](terrapure.md) | 8 | 12 % | 100 % | 0 % | 2026-08-25 05:12 | ✅ |
111 −| [Nationex](nationex.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
112 −| [Manœuvre générale](athos.md) | 7 | 57 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
113 −| [Heavy Machinery Operator](dhilmarele.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
114 −| [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
115 −| [Levittsafety](levittsafety.md) | 7 | 71 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
116 −| [E-Commerce Shipping Associate](slg001.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 04:59 | ✅ |
117 −| [Administration portuaire de Québec](portquebec.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
118 −| [Citronhygiene](citronhygiene.md) | 6 | 100 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
119 −| [Ggi](ggi.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 08:29 | ✅ |
120 −| [Liftow](liftow.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
121 −| [CEP Forensique](cep.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 08:12 | ✅ |
122 −| [Air Canada Rouge](acadierouge.md) | 5 | 20 % | 100 % | 0 % | 2026-08-25 07:54 | ✅ |
123 −| [Realstar](realstar.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
124 −| [Groupenorbec](groupenorbec.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
125 −| [Mlp](mlp.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 07:41 | ✅ |
126 −| [Nssl](nssl.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
127 −| [Porta](porta.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
128 −| [Vortex](vortex.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 05:23 | ✅ |
129 −| [FOREMAN ASSISTANT SHIPPING RECEIVING](benmor.md) | 5 | 0 % | 100 % | 80 % | 2026-08-25 08:03 | ✅ |
130 −| [Dare Foods](darefoods.md) | 4 | 75 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
131 −| [Linehaul Nuit, Conducteur, classe 1](cardinalcouriers.md) | 4 | 50 % | 100 % | 50 % | 2026-08-25 08:06 | ✅ |
132 −| [Board](deltastar.md) | 4 | 50 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
133 −| [Groupemarcelle](groupemarcelle.md) | 4 | 25 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
134 −| [Administrateur Immobilier](gwlra.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
135 −| [Agent(e) de location de communauté](iip.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
136 −| [Maxicanada](maxicanada.md) | 4 | 100 % | 100 % | 0 % | 2026-08-25 07:38 | ✅ |
137 −| [Quadra](quadra.md) | 4 | 100 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
138 −| [Rmldb](rmldb.md) | 4 | 0 % | 100 % | 25 % | 2026-08-25 07:50 | ✅ |
139 −| [Assistant contrôleur (remplacement de congé de maternité)](sixflags.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 04:59 | ✅ |
140 −| [Sobeys](sobeys.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
141 −| [Ajholdingsltd](ajholdingsltd.md) | 4 | 75 % | 100 % | 0 % | 2026-08-25 07:58 | ✅ |
142 −| [Bronswerk](bronswerk.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
143 −| [Journalier de production](ecyclesolu.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:21 | ✅ |
144 −| [Flowcontrol](flowcontrol.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
145 −| [Vendeur 3ème Clé (Thirdy Key)](fossil.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
146 −| [Berger (tourbe horticole)](berger.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
147 −| [East Penn Canada](eastpenn.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:21 | ✅ |
148 −| [Reflector Entertainment](reflector.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
149 −| [Canderel](canderel.md) | 3 | 67 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
150 −| [Talent Acquisition Partner](euromoneyplc.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 08:23 | ✅ |
151 −| [Ndtglobal](ndtglobal.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
152 −| [Consultant(e) en développement des affaires](omnitrans.md) | 3 | 67 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
153 −| [Realterm](realterm.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
154 −| [Remco](remco.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
155 −| [Souffletmalt](souffletmalt.md) | 3 | 67 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
156 −| [Peaktech](peaktech.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:38 | ✅ |
157 −| [Eidos-Montréal](eidosmontreal.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
158 −| [Spectra Premium](spectrapremium.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
159 −| [StorageMart](storagemart.md) | 2 | 100 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
160 −| [Enercare](enercare.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
161 −| [Avocate générale ou avocat général](fnfmb.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
162 −| [Designer graphique](mhca.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:39 | ✅ |
163 −| [Stateindustrial](stateindustrial.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
164 −| [Accueil / Service client (Montréal)](tourismholdings.md) | 2 | 0 % | 100 % | 50 % | 2026-08-25 05:16 | ✅ |
165 −| [Trisura](trisura.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
166 −| [Wafna](wafna.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:23 | ✅ |
167 −| [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
168 −| [Cooperrentsequip](cooperrentsequip.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
169 −| [Cpab](cpab.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
170 −| [Électricien industriel](g3canada.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
171 −| [Granit Design](granit_design.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:31 | ✅ |
172 −| [Gng](gng.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:31 | ✅ |
173 −| [AIDE À L'EXPÉDITION/À LA RÉCEPTION](harrisrebar.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
174 −| [Leadsonline](leadsonline.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
175 −| [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
176 −| [Enseignant suppléant](oneschoolglobal.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
177 −| [Sofinafoods](sofinafoods.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
178 −| [Westjet](westjet.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
179 −| [Production Operator I (Montreal)](wikoff.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
180 −| [Field Mechanic](bly.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
181 −| [Téléfilm Canada](telefilmcanada.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:13 | ✅ |
54 +| [La Vie en Rose](lavieenrose.md) | 159 | 3 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
55 +| [Le Groupe Maurice](groupemaurice.md) | 135 | 0 % | 100 % | 0 % | 2026-09-21 17:02 | ✅ |
56 +| [Vetstrategy](vetstrategy.md) | 130 | 2 % | 100 % | 1 % | 2026-09-21 17:40 | ✅ |
57 +| [Bulkbarn](bulkbarn.md) | 80 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
58 +| [Gray Collection (Groupe Antonopoulos)](graycollection.md) | 61 | 0 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
59 +| [Gdv](gdv.md) | 54 | 0 % | 100 % | 0 % | 2026-09-21 16:59 | ✅ |
60 +| [Automobileendirect](automobileendirect.md) | 52 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
61 +| [Unoria](unoria.md) | 45 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
62 +| [Camions Excellence Peterbilt](excellencepeterbilt.md) | 43 | 16 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
63 +| [Laura Canada](lauracanada.md) | 43 | 0 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
64 +| [BPA (Experts-conseils)](bpa.md) | 42 | 0 % | 100 % | 2 % | 2026-09-21 16:40 | ✅ |
65 +| [JD Sports Canada](jdsports.md) | 42 | 0 % | 100 % | 2 % | 2026-09-21 17:13 | ✅ |
66 +| [Groupe CH (Canadiens de Montréal, Centre Bell)](groupech.md) | 41 | 2 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
67 +| [Lesymcaquebec](lesymcaquebec.md) | 40 | 28 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
68 +| [Lgs](lgs.md) | 40 | 0 % | 100 % | 22 % | 2026-09-21 17:21 | ✅ |
69 +| [Kenworthmaska](kenworthmaska.md) | 36 | 3 % | 100 % | 0 % | 2026-09-21 17:19 | ✅ |
70 +| [Sany](imperialdade.md) | 30 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
71 +| [Logm](logm.md) | 26 | 85 % | 100 % | 27 % | 2026-09-21 17:22 | ✅ |
72 +| [Stellajones](stellajones.md) | 24 | 17 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
73 +| [Comptable prix de revient](exceldorfoods478.md) | 22 | 27 % | 100 % | 9 % | 2026-09-21 16:57 | ✅ |
74 +| [Soprema](soprema.md) | 21 | 24 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
75 +| [Cmpams](cmpams.md) | 19 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
76 +| [Pré-assemblage](motionc.md) | 19 | 0 % | 100 % | 5 % | 2026-09-21 17:24 | ✅ |
77 +| [CONTRÔLEUR](novatech.md) | 18 | 33 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
78 +| [Groupe Mach](groupemach.md) | 17 | 12 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
79 +| [Le Massif de Charlevoix](lemassif.md) | 17 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
80 +| [Avocat·e, Bureau de l'avocate générale](mthris.md) | 16 | 38 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
81 +| [Journalier(ère) de production](vestis.md) | 16 | 0 % | 100 % | 0 % | 2026-09-21 17:40 | ✅ |
82 +| [VinFast Canada](vinfastcanada.md) | 15 | 33 % | 100 % | 0 % | 2026-09-21 17:41 | ✅ |
83 +| [Spisante](spisante.md) | 15 | 0 % | 100 % | 33 % | 2026-09-21 17:35 | ✅ |
84 +| [Groupe AGF](groupeagf.md) | 14 | 29 % | 100 % | 29 % | 2026-09-21 17:01 | ✅ |
85 +| [United Services Group](unitedservices.md) | 14 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
86 +| [Ccmhockey](ccmhockey.md) | 14 | 0 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
87 +| [Colabor](colabor.md) | 13 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
88 +| [Hygiéniste Industrielle](kdcone.md) | 13 | 0 % | 100 % | 0 % | 2026-09-21 17:19 | ✅ |
89 +| [Premierparks](premierparks.md) | 13 | 8 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
90 +| [Valnetinc](valnetinc.md) | 13 | 0 % | 100 % | 77 % | 2026-09-21 17:40 | ✅ |
91 +| [Boralex](boralex.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
92 +| [Erb](erb.md) | 12 | 33 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
93 +| [Chef.fe de service de quart, soir](lantic.md) | 12 | 50 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
94 +| [Intervenant·e au suivi psychosocial](obm.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
95 +| [Bilingual Customer Experience Representative (English ...](superiorplus.md) | 12 | 75 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
96 +| [Running Room Canada](runningroom.md) | 11 | 0 % | 100 % | 0 % | 2026-09-21 17:31 | ✅ |
97 +| [Associé(e), entretien préventif](boardwalkreit.md) | 11 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
98 +| [Cfibfcei](cfibfcei.md) | 11 | 18 % | 100 % | 0 % | 2026-09-21 16:46 | ✅ |
99 +| [Heavy Machinery Operator](dhilmarele.md) | 11 | 0 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
100 +| [Lapresse2018Inc](lapresse2018inc.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
101 +| [Groupe Scandinave (Scandinave Spa)](gscandinave.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 17:02 | ✅ |
102 +| [Nationex](nationex.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
103 +| [Vice-President, Strategic Procurement](eddyfi.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 16:55 | ✅ |
104 +| [Josephribkoff](josephribkoff.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 17:19 | ✅ |
105 +| [4Refuel](4refuel.md) | 8 | 25 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
106 +| [Groupemarcelle](groupemarcelle.md) | 8 | 12 % | 100 % | 0 % | 2026-09-21 17:02 | ✅ |
107 +| [Sales Associate-Retail](roots.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
108 +| [Administration portuaire de Québec](portquebec.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
109 +| [Eidos-Montréal](eidosmontreal.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 16:55 | ✅ |
110 +| [Altg](altg.md) | 7 | 14 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
111 +| [Manœuvre générale](athos.md) | 7 | 57 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
112 +| [Eldoradogold](eldoradogold.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 16:55 | ✅ |
113 +| [Liftow](liftow.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
114 +| [CEP Forensique](cep.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
115 +| [Fastco Canada](fastcocanada.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
116 +| [Nssl](nssl.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
117 +| [Terrapure](terrapure.md) | 6 | 17 % | 100 % | 0 % | 2026-09-21 17:37 | ✅ |
118 +| [Field Mechanic](bly.md) | 6 | 100 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
119 +| [Vendeur 3ème Clé (Thirdy Key)](fossil.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
120 +| [Air Canada Rouge](acadierouge.md) | 5 | 20 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
121 +| [Realstar](realstar.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
122 +| [Citronhygiene](citronhygiene.md) | 5 | 100 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
123 +| [Cominar](cominar.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
124 +| [Ggi](ggi.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 16:59 | ✅ |
125 +| [Architecte Salesforce Sommaire](jam.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:13 | ✅ |
126 +| [Mlp](mlp.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
127 +| [Sobeys](sobeys.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
128 +| [Vortex](vortex.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:41 | ✅ |
129 +| [Reflector Entertainment](reflector.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
130 +| [Linehaul Nuit, Conducteur, classe 1](cardinalcouriers.md) | 4 | 50 % | 100 % | 50 % | 2026-09-21 16:41 | ✅ |
131 +| [Board](deltastar.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 16:52 | ✅ |
132 +| [Groupenorbec](groupenorbec.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:02 | ✅ |
133 +| [Administrateur Immobilier](gwlra.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:08 | ✅ |
134 +| [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
135 +| [Porta](porta.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
136 +| [Flowcontrol](flowcontrol.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
137 +| [Dare Foods](darefoods.md) | 3 | 100 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
138 +| [East Penn Canada](eastpenn.md) | 3 | 33 % | 100 % | 0 % | 2026-09-21 16:55 | ✅ |
139 +| [Agent(e) de location de communauté](iip.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
140 +| [Maxicanada](maxicanada.md) | 3 | 100 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
141 +| [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | 3 | 100 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
142 +| [Consultant(e) en développement des affaires](omnitrans.md) | 3 | 67 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
143 +| [Enseignant suppléant](oneschoolglobal.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
144 +| [Quadra](quadra.md) | 3 | 100 % | 100 % | 33 % | 2026-09-21 17:29 | ✅ |
145 +| [Remco](remco.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
146 +| [Rmldb](rmldb.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
147 +| [Souffletmalt](souffletmalt.md) | 3 | 67 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
148 +| [Ajholdingsltd](ajholdingsltd.md) | 3 | 100 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
149 +| [FOREMAN ASSISTANT SHIPPING RECEIVING](benmor.md) | 3 | 33 % | 100 % | 67 % | 2026-09-21 16:39 | ✅ |
150 +| [Bronswerk](bronswerk.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
151 +| [Berger (tourbe horticole)](berger.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
152 +| [Peaktech](peaktech.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
153 +| [StorageMart](storagemart.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
154 +| [Canderel](canderel.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
155 +| [Enercare](enercare.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
156 +| [Granit Design](granit_design.md) | 2 | 0 % | 100 % | 50 % | 2026-09-21 17:01 | ✅ |
157 +| [Designer graphique](mhca.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
158 +| [Realterm](realterm.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
159 +| [E-Commerce Shipping Associate](slg001.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:33 | ✅ |
160 +| [Wafna](wafna.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:41 | ✅ |
161 +| [Westjet](westjet.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:43 | ✅ |
162 +| [Téléfilm Canada](telefilmcanada.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:37 | ✅ |
163 +| [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
164 +| [Cooperrentsequip](cooperrentsequip.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
165 +| [Gng](gng.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
166 +| [AIDE À L'EXPÉDITION/À LA RÉCEPTION](harrisrebar.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:09 | ✅ |
167 +| [Leadsonline](leadsonline.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
168 +| [Levittsafety](levittsafety.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
169 +| [Ndtglobal](ndtglobal.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
170 +| [Assistant contrôleur (remplacement de congé de maternité)](sixflags.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:33 | ✅ |
171 +| [State Industrial Products](stateindustrial.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
172 +| [Accueil / Service client (Montréal)](tourismholdings.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
173 +| [Trisura](trisura.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
174 +| [Production Operator I (Montreal)](wikoff.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:43 | ✅ |
175 +| [Journalier de production](ecyclesolu.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:55 | ✅ |
176 +| [Spectra Premium](spectrapremium.md) | 0 | — | — | — | 2026-09-21 17:34 | ✅ |
177 +| [CPAB (Conseil canadien sur la reddition de comptes)](cpab.md) | 0 | — | — | — | 2026-09-21 16:51 | ✅ |
178 +| [Talent Acquisition Partner](euromoneyplc.md) | 0 | — | — | — | 2026-09-21 16:57 | ✅ |
179 +| [Conseil de gestion financière des Premières Nations (FNFMB)](fnfmb.md) | 0 | — | — | — | 2026-09-21 16:58 | ✅ |
180 +| [G3 Canada](g3canada.md) | 0 | — | — | — | 2026-09-21 16:58 | ✅ |
181 +| [Sofinafoods](sofinafoods.md) | 0 | — | — | — | 2026-09-21 17:34 | ✅ |
182 182
183 183 ## Licence / conformité
184 184
@@ -196,4 +196,5 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
196 196
197 197 Commits touchant `jobka/connectors/dayforce.py` :
198 198
199 +- `cf7075e` 2026-08-26 [ka6] fix connecteur groupemaurice: 502 Bad Gateway transitoire du frontal Dayforce avortait tout le sync (stale 5,3 h, un seul POST search en échec). Garde-fou dans DayforceConnector: le POST de recherche retente une fois après pause sur 5xx, puis lève (sync en échec, jamais un faux 0) — même pattern que njoyn 33dba44 / digitalrecruiters 81cf8e2. Sync isolé re-testé: 108 offres trouvées (= médiane 108).
199 200 - `a5260cc` 2026-08-22 Vague B — 110 nouvelles sources (26 Dayforce nouvelle famille + 84 sur familles existantes)
modified docs/connecteurs/ats-digitalrecruiters.md +5 −4
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-digitalrecruiters.md
7 7 Rôle : Fiche plateforme ATS digitalrecruiters — mécanique partagée + tableau des 2 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `digitalrecruiters`
14 14
15 −**2 employeurs connectés** via cette plateforme — **70 offres actives**. Module partagé : `jobka/connectors/digitalrecruiters.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**2 employeurs connectés** via cette plateforme — **76 offres actives**. Module partagé : `jobka/connectors/digitalrecruiters.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -36,8 +36,8 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
38 38 |---|---|---|---|---|---|---|
39 −| [Santé Québec](sante_quebec.md) | 44 | 98 % | 68 % | 0 % | 2026-08-25 07:52 | ✅ |
40 −| [CSS des Découvreurs](cssdd.md) | 26 | 81 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
39 +| [Santé Québec](sante_quebec.md) | 61 | 97 % | 39 % | 0 % | 2026-09-21 17:31 | ✅ |
40 +| [CSS des Découvreurs](cssdd.md) | 15 | 87 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
41 41
42 42 ## Licence / conformité
43 43
@@ -55,4 +55,5 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
55 55
56 56 Commits touchant `jobka/connectors/digitalrecruiters.py` :
57 57
58 +- `81cf8e2` 2026-08-26 [ka6] fix connecteur cssdd: garde-fou sitemap DigitalRecruiters — une réponse vide/anti-bot (challenge en 200) ne passe plus pour un babillard à 0 offre; retente une fois puis lève une erreur (digitalrecruiters.py, même pattern que njoyn 33dba44)
58 59 - `4917d57` 2026-08-18 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC
modified docs/connecteurs/ats-greenhouse.md +133 −133
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-greenhouse.md
7 7 Rôle : Fiche plateforme ATS greenhouse — mécanique partagée + tableau des 131 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `greenhouse`
14 14
15 −**131 employeurs connectés** via cette plateforme — **886 offres actives**. Module partagé : `jobka/connectors/greenhouse.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**131 employeurs connectés** via cette plateforme — **843 offres actives**. Module partagé : `jobka/connectors/greenhouse.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -37,137 +37,137 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
37 37
38 38 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
39 39 |---|---|---|---|---|---|---|
40 −| [Squarepoint Capital](squarepointcapital.md) | 55 | 42 % | 100 % | 2 % | 2026-08-25 05:02 | ✅ |
41 −| [Levio](levio.md) | 42 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
42 −| [Laporte Experts Conseils](laportefr.md) | 36 | 0 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
43 −| [Coveo](coveofr.md) | 28 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
44 −| [Coveo](coveoen.md) | 27 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
45 −| [Echodyne Corp](echodynecorp.md) | 27 | 100 % | 100 % | 0 % | 2026-08-25 08:21 | ✅ |
46 −| [AppDirect](appdirect.md) | 26 | 38 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
47 −| [mthree](mthreerecruitingportal.md) | 24 | 0 % | 100 % | 21 % | 2026-08-25 07:43 | ✅ |
48 −| [Artiste technique sénior·e UI / Senior UI Tech Artist](x2k.md) | 23 | 9 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
49 −| [Vooban](vooban.md) | 20 | 0 % | 100 % | 0 % | 2026-08-25 05:23 | ✅ |
50 −| [Epic Games](epicgames.md) | 20 | 0 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
51 −| [WPP Media](wppmedia.md) | 20 | 5 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
52 −| [DRW](drweng.md) | 18 | 6 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
53 −| [La Senza](lasenza.md) | 17 | 12 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
54 −| [Aylo](aylo.md) | 17 | 0 % | 100 % | 0 % | 2026-08-25 08:02 | ✅ |
55 −| [Aylo](aylofr.md) | 17 | 0 % | 100 % | 0 % | 2026-08-25 08:02 | ✅ |
56 −| [DRW Montreal](drwfr.md) | 17 | 0 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
57 −| [Sony Pictures Imageworks](sonypicturesimageworks.md) | 16 | 31 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
58 −| [Sid Lee](sidlee.md) | 13 | 0 % | 100 % | 0 % | 2026-08-25 04:58 | ✅ |
59 −| [Quadbridge](quadbridge.md) | 13 | 46 % | 100 % | 8 % | 2026-08-25 07:49 | ✅ |
60 −| [Cloud Chamber Montréal](cloudchamberfr.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
61 −| [LoiZéro](loizero.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
62 −| [Cloud Chamber](cloudchamberen.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
63 −| [LawZero](lawzero.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
64 −| [Royal Vet](royalvet.md) | 10 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
65 −| [Stay22](stay22.md) | 10 | 0 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
66 −| [AlayaCare](alayacare.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 07:58 | ✅ |
67 −| [SIA Innovations](siainnovationsinc.md) | 9 | 44 % | 100 % | 78 % | 2026-08-25 04:58 | ✅ |
68 −| [Valtech](valtech.md) | 9 | 11 % | 100 % | 0 % | 2026-08-25 05:21 | ✅ |
69 −| [Alo Yoga](aloyoga.md) | 9 | 0 % | 78 % | 0 % | 2026-08-25 07:59 | ✅ |
70 −| [Hasbro](hasbro.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
71 −| [GURUS Solutions](gurussolutions.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 08:38 | ✅ |
72 −| [Lyft](lyft.md) | 8 | 100 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
73 −| [Toboggan Labs](tobogganlabs.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 05:16 | ✅ |
74 −| [Artefact North America](artefactnoram.md) | 8 | 50 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
75 −| [Mejuri](mejuri.md) | 7 | 71 % | 100 % | 0 % | 2026-08-25 07:39 | ✅ |
76 −| [Alveole](alveole.md) | 7 | 71 % | 100 % | 14 % | 2026-08-25 07:59 | ✅ |
77 −| [BETA Technologies](betatechnologiesinc.md) | 7 | 86 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
78 −| [Highdive](highdive.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
79 −| [Human Agency](humanagency.md) | 7 | 0 % | 100 % | 43 % | 2026-08-25 08:43 | ✅ |
80 −| [Sweeney Conrad](sweeneyconrad.md) | 7 | 100 % | 100 % | 0 % | 2026-08-25 05:04 | ✅ |
81 −| [Keel Infrastructure](keelinfrastructure.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 07:34 | ✅ |
82 −| [Behavox](behavox.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
83 −| [RTINGS.com (FR)](laboratoirertingscom.md) | 6 | 83 % | 100 % | 83 % | 2026-08-25 07:36 | ✅ |
84 −| [Oldcastle BuildingEnvelope](oldcastlebuildingenvelope.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
85 −| [Lush Cosmétiques](lush.md) | 5 | 100 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
86 −| [Bain Magique](bainmagique.md) | 5 | 100 % | 100 % | 20 % | 2026-08-25 08:02 | ✅ |
87 −| [Capco](capco.md) | 5 | 100 % | 100 % | 40 % | 2026-08-25 08:05 | ✅ |
88 −| [DoorDash Quebec](doordashquebec.md) | 5 | 60 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
89 −| [Kestra Medical Technologies Inc.](kestramedicaltechnologiesinc.md) | 5 | 80 % | 100 % | 0 % | 2026-08-25 07:35 | ✅ |
90 −| [One Medical](onemedical.md) | 5 | 100 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
91 −| [TandemLaunch](tandemlaunch.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 05:07 | ✅ |
92 −| [Vaco](vaco.md) | 4 | 75 % | 100 % | 0 % | 2026-08-25 05:21 | ✅ |
93 −| [Opportunities with AppDirect's Advisor Partners (Recruitment as a Service)](appdirectraas.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
94 −| [Welcome to the Jungle](artefactjobs.md) | 4 | 50 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
95 −| [FlightHub](flighthub.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
96 −| [Haven Interactive Studios](haven.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
97 −| [Haven Interactive Studios - English](havenenglish.md) | 4 | 0 % | 100 % | 25 % | 2026-08-25 08:39 | ✅ |
98 −| [Internal](internaljobsatlush.md) | 4 | 100 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
99 −| [Ivalua](ivalua.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 07:26 | ✅ |
100 −| [Monster Energy](monsterenergy.md) | 4 | 100 % | 100 % | 0 % | 2026-08-25 07:41 | ✅ |
101 −| [New Era Technology](neweratech.md) | 4 | 100 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
102 −| [Novisto](novisto78.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
103 −| [Really Great Reading](reallygreatreading.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:49 | ✅ |
104 −| [Broadsign](broadsign.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
105 −| [Gearbox Studio Québec](gearboxquebec.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:27 | ✅ |
106 −| [Poka](poka.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
107 −| [Broadsign](broadsignfr.md) | 3 | 0 % | 100 % | 33 % | 2026-08-25 08:04 | ✅ |
108 −| [Databricks](databricks.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
109 −| [Earth Rated](earthrated.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:21 | ✅ |
110 −| [EC-Solutions](ecsolutions.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:21 | ✅ |
111 −| [Lake Washington Dermatology](lakewashingtondermatology.md) | 3 | 33 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
112 −| [Modern Menopause](modernmenopause.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:41 | ✅ |
113 −| [Poka FR](pokafr.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
114 −| [SharkNinja](sharkninjaoperatingllc.md) | 3 | 100 % | 100 % | 0 % | 2026-08-25 04:58 | ✅ |
115 −| [Shearwater](shearwater.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 04:58 | ✅ |
116 −| [PlayStation Global](sonyinteractiveentertainmentglobal.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
117 −| [USA Mechanical & Energy Services](usamechasp.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 05:21 | ✅ |
118 −| [Bath Fitter Corporate](bathfitterdistributinginc.md) | 3 | 100 % | 0 % | 33 % | 2026-08-25 08:02 | ✅ |
119 −| [On Running](onrunning.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
120 −| [VML Canada](vmlcanadaen.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 05:23 | ✅ |
121 −| [AutoTrader Canada](autotradercanada.md) | 2 | 100 % | 100 % | 0 % | 2026-08-25 08:01 | ✅ |
122 −| [Latys Intelligence](latys.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
123 −| [KRAFTON Montréal Studio](studiokraftonboard.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
124 −| [Terrestar Solutions](terrestarsolutionsfr.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:12 | ✅ |
125 −| [2K Vegas](x2kvegas.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
126 −| [AON3D](aon3d.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
127 −| [AON3D](aon3d_fr.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
128 −| [Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrosse.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 08:02 | ✅ |
129 −| [French Canadian Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrossefc.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 08:02 | ✅ |
130 −| [Banyan Capital Partners](bcp.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
131 −| [CaptiveAire](captiveaire.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
132 −| [Connor, Clark & Lunn Financial Group Ltd.](cclfg.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:11 | ✅ |
133 −| [Goalcast](goalcast.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:31 | ✅ |
134 −| [IT-ED](ited_solutions.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:26 | ✅ |
135 −| [Numen Labs](numenlabs.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
136 −| [Ponsera](ponsera.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
137 −| [Terrestar Solutions](terrestarsolutionsinc.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:12 | ✅ |
138 −| [VML Canada (French)](vmlcanadafr.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 05:23 | ✅ |
139 −| [WaveShaper AI](waveshaperai.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
140 −| [NATIONAL](national.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
141 −| [Samsara](samsara.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:51 | ✅ |
142 −| [Club Monaco](clubmonaco.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
143 −| [Adaptive Financial Consulting](adaptivefinancialconsulting.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:55 | ✅ |
144 −| [Agapyo](agapyo.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:56 | ✅ |
145 −| [ANINE BING](aninebing.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
146 −| [BCES Global](bces.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
147 −| [Berlin Packaging Canada Corporation](bpcanada.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
148 −| [CapIntel](capintel.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:05 | ✅ |
149 −| [DEPT®](dept.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:19 | ✅ |
150 −| [Edelman Financial Engines, LLC](edelmanfinancialenginesllc.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:21 | ✅ |
151 −| [Industrial Electric Manufacturing](industrialelectricmanufacturing.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
152 −| [Novisto Fr](novistofr.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
153 −| [Numa](numa.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
154 −| [Ocado Group](ocadogroup.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
155 −| [Ogilvy Canada](ogilvycanada.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
156 −| [Passport Brand Design](passportbranddesign.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
157 −| [Connor, Clark & Lunn Private Capital Ltd.](pcm.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
158 −| [PhyNet Dermatology LLC (External)](phynetdermatology.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
159 −| [Proof](proof.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
160 −| [Qohash](qohash.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
161 −| [SOL Mental Health](solmentalhealth.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
162 −| [Terrestar - Strigo](strigofr.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:03 | ✅ |
163 −| [Tefron](tefron.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:12 | ✅ |
164 −| [Torc Robotics](torcrobotics.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:16 | ✅ |
165 −| [Triumvirate Environmental](triumvirateenvironmental.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
166 −| [Uber Freight](uberfreight.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:19 | ✅ |
167 −| [Wisemotion Robotics](wisemotion.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
168 −| [Zscaler](zscaler.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:36 | ✅ |
169 −| [VML](wundermanthompson.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:38 | ✅ |
170 −| [Valence Labs](valencelabs.md) | 0 | — | — | — | 2026-08-25 05:21 | ✅ |
40 +| [Squarepoint Capital](squarepointcapital.md) | 57 | 40 % | 100 % | 2 % | 2026-09-21 17:35 | ✅ |
41 +| [Laporte Experts Conseils](laportefr.md) | 52 | 0 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
42 +| [Levio](levio.md) | 45 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
43 +| [AppDirect](appdirect.md) | 36 | 50 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
44 +| [Coveo](coveofr.md) | 34 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
45 +| [Coveo](coveoen.md) | 30 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
46 +| [mthree](mthreerecruitingportal.md) | 25 | 0 % | 100 % | 24 % | 2026-09-21 17:24 | ✅ |
47 +| [Vooban](vooban.md) | 23 | 0 % | 100 % | 0 % | 2026-09-21 17:41 | ✅ |
48 +| [Lyft](lyft.md) | 18 | 100 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
49 +| [Artiste technique sénior·e UI / Senior UI Tech Artist](x2k.md) | 18 | 6 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
50 +| [DRW](drweng.md) | 18 | 6 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
51 +| [La Senza](lasenza.md) | 17 | 12 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
52 +| [DRW Montreal](drwfr.md) | 17 | 0 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
53 +| [Epic Games](epicgames.md) | 17 | 0 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
54 +| [WPP Media](wppmedia.md) | 17 | 6 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
55 +| [Aylo](aylo.md) | 16 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
56 +| [Aylo](aylofr.md) | 16 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
57 +| [Sony Pictures Imageworks](sonypicturesimageworks.md) | 15 | 33 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
58 +| [AlayaCare](alayacare.md) | 14 | 0 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
59 +| [LoiZéro](loizero.md) | 13 | 0 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
60 +| [LawZero](lawzero.md) | 13 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
61 +| [Quadbridge](quadbridge.md) | 13 | 46 % | 100 % | 8 % | 2026-09-21 17:29 | ✅ |
62 +| [SIA Innovations](siainnovationsinc.md) | 11 | 45 % | 100 % | 73 % | 2026-09-21 17:33 | ✅ |
63 +| [Bain Magique](bainmagique.md) | 11 | 73 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
64 +| [Royal Vet](royalvet.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
65 +| [Toboggan Labs](tobogganlabs.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
66 +| [Stay22](stay22.md) | 10 | 10 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
67 +| [GURUS Solutions](gurussolutions.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 17:08 | ✅ |
68 +| [Cloud Chamber Montréal](cloudchamberfr.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
69 +| [Cloud Chamber](cloudchamberen.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
70 +| [Sid Lee](sidlee.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 17:33 | ✅ |
71 +| [Valtech](valtech.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 17:40 | ✅ |
72 +| [Mejuri](mejuri.md) | 8 | 75 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
73 +| [Behavox](behavox.md) | 8 | 12 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
74 +| [Hasbro](hasbro.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 17:09 | ✅ |
75 +| [Lush Cosmétiques](lush.md) | 7 | 100 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
76 +| [Alo Yoga](aloyoga.md) | 7 | 0 % | 57 % | 0 % | 2026-09-21 16:36 | ✅ |
77 +| [Artefact North America](artefactnoram.md) | 7 | 57 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
78 +| [Human Agency](humanagency.md) | 7 | 0 % | 100 % | 43 % | 2026-09-21 17:11 | ✅ |
79 +| [Alveole](alveole.md) | 6 | 100 % | 100 % | 17 % | 2026-09-21 16:37 | ✅ |
80 +| [BETA Technologies](betatechnologiesinc.md) | 6 | 83 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
81 +| [Ivalua](ivalua.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 17:13 | ✅ |
82 +| [Oldcastle BuildingEnvelope](oldcastlebuildingenvelope.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
83 +| [Broadsign](broadsign.md) | 5 | 0 % | 100 % | 80 % | 2026-09-21 16:40 | ✅ |
84 +| [Vaco](vaco.md) | 5 | 80 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
85 +| [Broadsign](broadsignfr.md) | 5 | 0 % | 100 % | 40 % | 2026-09-21 16:40 | ✅ |
86 +| [Internal](internaljobsatlush.md) | 5 | 100 % | 100 % | 0 % | 2026-09-21 17:13 | ✅ |
87 +| [RTINGS.com (FR)](laboratoirertingscom.md) | 5 | 60 % | 100 % | 80 % | 2026-09-21 17:20 | ✅ |
88 +| [Bath Fitter Corporate](bathfitterdistributinginc.md) | 5 | 60 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
89 +| [Keel Infrastructure](keelinfrastructure.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:19 | ✅ |
90 +| [Welcome to the Jungle](artefactjobs.md) | 4 | 50 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
91 +| [DoorDash Quebec](doordashquebec.md) | 4 | 50 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
92 +| [FlightHub](flighthub.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
93 +| [Highdive](highdive.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:09 | ✅ |
94 +| [Monster Energy](monsterenergy.md) | 4 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
95 +| [Novisto](novisto78.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
96 +| [Poka](poka.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
97 +| [TandemLaunch](tandemlaunch.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:36 | ✅ |
98 +| [Opportunities with AppDirect's Advisor Partners (Recruitment as a Service)](appdirectraas.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
99 +| [French Canadian Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrossefc.md) | 3 | 67 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
100 +| [Haven Interactive Studios](haven.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:09 | ✅ |
101 +| [Haven Interactive Studios - English](havenenglish.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:09 | ✅ |
102 +| [Modern Menopause](modernmenopause.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
103 +| [Shearwater](shearwater.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:32 | ✅ |
104 +| [VML Canada](vmlcanadaen.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 17:41 | ✅ |
105 +| [2K Vegas](x2kvegas.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
106 +| [ANINE BING](aninebing.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
107 +| [AON3D](aon3d.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
108 +| [AON3D](aon3d_fr.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
109 +| [Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrosse.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
110 +| [Berlin Packaging Canada Corporation](bpcanada.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
111 +| [CaptiveAire](captiveaire.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
112 +| [Connor, Clark & Lunn Financial Group Ltd.](cclfg.md) | 2 | 0 % | 100 % | 50 % | 2026-09-21 16:45 | ✅ |
113 +| [Databricks](databricks.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
114 +| [Goalcast](goalcast.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
115 +| [New Era Technology](neweratech.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
116 +| [Numen Labs](numenlabs.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
117 +| [Poka FR](pokafr.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
118 +| [SharkNinja](sharkninjaoperatingllc.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 17:32 | ✅ |
119 +| [PlayStation Global](sonyinteractiveentertainmentglobal.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
120 +| [VML Canada (French)](vmlcanadafr.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 17:41 | ✅ |
121 +| [WaveShaper AI](waveshaperai.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:43 | ✅ |
122 +| [Zscaler](zscaler.md) | 2 | 100 % | 100 % | 100 % | 2026-09-21 17:44 | ✅ |
123 +| [VML](wundermanthompson.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
124 +| [Gearbox Studio Québec](gearboxquebec.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:59 | ✅ |
125 +| [NATIONAL](national.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
126 +| [Samsara](samsara.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:31 | ✅ |
127 +| [AutoTrader Canada](autotradercanada.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
128 +| [Club Monaco](clubmonaco.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
129 +| [KRAFTON Montréal Studio](studiokraftonboard.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
130 +| [Terrestar Solutions](terrestarsolutionsfr.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:37 | ✅ |
131 +| [Adaptive Financial Consulting](adaptivefinancialconsulting.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
132 +| [Agapyo](agapyo.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ |
133 +| [BCES Global](bces.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
134 +| [Banyan Capital Partners](bcp.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
135 +| [Capco](capco.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:41 | ✅ |
136 +| [CapIntel](capintel.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:41 | ✅ |
137 +| [DEPT®](dept.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:52 | ✅ |
138 +| [Industrial Electric Manufacturing](industrialelectricmanufacturing.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
139 +| [IT-ED](ited_solutions.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:13 | ✅ |
140 +| [Novisto Fr](novistofr.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
141 +| [Numa](numa.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
142 +| [Connor, Clark & Lunn Private Capital Ltd.](pcm.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
143 +| [Ponsera](ponsera.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
144 +| [Proof](proof.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
145 +| [Qohash](qohash.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
146 +| [Really Great Reading](reallygreatreading.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:29 | ✅ |
147 +| [Terrestar Solutions](terrestarsolutionsinc.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:37 | ✅ |
148 +| [Torc Robotics](torcrobotics.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
149 +| [Uber Freight](uberfreight.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:39 | ✅ |
150 +| [On Running](onrunning.md) | 0 | — | — | — | 2026-09-21 17:26 | ✅ |
151 +| [Latys Intelligence](latys.md) | 0 | — | — | — | 2026-09-21 17:20 | ✅ |
152 +| [Earth Rated](earthrated.md) | 0 | — | — | — | 2026-09-21 16:55 | ✅ |
153 +| [Echodyne Corp](echodynecorp.md) | 0 | — | — | — | 2026-09-21 16:55 | ✅ |
154 +| [EC-Solutions](ecsolutions.md) | 0 | — | — | — | 2026-09-21 16:55 | ✅ |
155 +| [Edelman Financial Engines, LLC](edelmanfinancialenginesllc.md) | 0 | — | — | — | 2026-09-21 16:55 | ✅ |
156 +| [Kestra Medical Technologies Inc.](kestramedicaltechnologiesinc.md) | 0 | — | — | — | 2026-09-21 17:19 | ✅ |
157 +| [Lake Washington Dermatology](lakewashingtondermatology.md) | 0 | — | — | — | 2026-09-21 17:20 | ✅ |
158 +| [Ocado Group](ocadogroup.md) | 0 | — | — | — | 2026-09-21 17:26 | ✅ |
159 +| [Ogilvy Canada](ogilvycanada.md) | 0 | — | — | — | 2026-09-21 17:26 | ✅ |
160 +| [One Medical](onemedical.md) | 0 | — | — | — | 2026-09-21 17:26 | ✅ |
161 +| [Passport Brand Design](passportbranddesign.md) | 0 | — | — | — | 2026-09-21 17:27 | ✅ |
162 +| [PhyNet Dermatology LLC (External)](phynetdermatology.md) | 0 | — | — | — | 2026-09-21 17:27 | ✅ |
163 +| [SOL Mental Health](solmentalhealth.md) | 0 | — | — | — | 2026-09-21 17:34 | ✅ |
164 +| [Terrestar - Strigo](strigofr.md) | 0 | — | — | — | 2026-09-21 17:35 | ✅ |
165 +| [Sweeney Conrad](sweeneyconrad.md) | 0 | — | — | — | 2026-09-21 17:35 | ✅ |
166 +| [Tefron](tefron.md) | 0 | — | — | — | 2026-09-21 17:37 | ✅ |
167 +| [Triumvirate Environmental](triumvirateenvironmental.md) | 0 | — | — | — | 2026-09-21 17:38 | ✅ |
168 +| [USA Mechanical & Energy Services](usamechasp.md) | 0 | — | — | — | 2026-09-21 17:39 | ✅ |
169 +| [Valence Labs](valencelabs.md) | 0 | — | — | — | 2026-09-21 17:39 | ✅ |
170 +| [Wisemotion Robotics](wisemotion.md) | 0 | — | — | — | 2026-09-21 17:43 | ✅ |
171 171
172 172 ## Licence / conformité
173 173
modified docs/connecteurs/ats-icims.md +9 −9
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-icims.md
7 7 Rôle : Fiche plateforme ATS icims — mécanique partagée + tableau des 7 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `icims`
14 14
15 −**7 employeurs connectés** via cette plateforme — **66 offres actives**. Module partagé : `jobka/connectors/icims.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**7 employeurs connectés** via cette plateforme — **58 offres actives**. Module partagé : `jobka/connectors/icims.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -39,13 +39,13 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
41 41 |---|---|---|---|---|---|---|
42 −| [McCarthy Tétrault](mccarthy_tetrault.md) | 22 | 0 % | 100 % | 9 % | 2026-08-25 07:38 | ✅ |
43 −| [CAPREIT](capreit.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
44 −| [EDF Renouvelables Canada](edf_renouvelables.md) | 9 | 78 % | 67 % | 67 % | 2026-08-25 08:21 | ✅ |
45 −| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | 8 | 88 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
46 −| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | 8 | 88 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
47 −| [Global Excel Management](globalexcel.md) | 7 | 57 % | 0 % | 0 % | 2026-08-25 08:30 | ✅ |
48 −| [Placements Mackenzie (Power/IGM)](mackenzie.md) | 3 | 100 % | 67 % | 0 % | 2026-08-25 07:37 | ✅ |
42 +| [McCarthy Tétrault](mccarthy_tetrault.md) | 18 | 0 % | 94 % | 11 % | 2026-09-21 17:22 | ✅ |
43 +| [Global Excel Management](globalexcel.md) | 13 | 54 % | 38 % | 0 % | 2026-09-21 17:00 | ✅ |
44 +| [EDF Renouvelables Canada](edf_renouvelables.md) | 9 | 89 % | 78 % | 67 % | 2026-09-21 16:55 | ✅ |
45 +| [CAPREIT](capreit.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
46 +| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | 5 | 80 % | 80 % | 0 % | 2026-09-21 17:26 | ✅ |
47 +| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | 5 | 80 % | 80 % | 0 % | 2026-09-21 17:26 | ✅ |
48 +| [Placements Mackenzie (Power/IGM)](mackenzie.md) | 0 | — | — | — | 2026-09-21 17:22 | ✅ |
49 49
50 50 ## Licence / conformité
51 51
modified docs/connecteurs/ats-jazzhr.md +39 −34
@@ -4,15 +4,15 @@ Job·Ka — Groupe KA
4 4 Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-jazzhr.md
7 −Rôle : Fiche plateforme ATS jazzhr — mécanique partagée + tableau des 31 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
7 +Rôle : Fiche plateforme ATS jazzhr — mécanique partagée + tableau des 30 tenants
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `jazzhr`
14 14
15 −**31 employeurs connectés** via cette plateforme — **181 offres actives**. Module partagé : `jobka/connectors/jazzhr.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**30 employeurs connectés** via cette plateforme — **149 offres actives**. Module partagé : `jobka/connectors/jazzhr.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -38,37 +38,36 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
40 40 |---|---|---|---|---|---|---|
41 −| [Valnet](valnetconcept.md) | 22 | 0 % | 0 % | 55 % | 2026-08-25 08:30 | ✅ |
42 −| [Playground](playground.md) | 21 | 76 % | 0 % | 0 % | 2026-08-25 08:24 | ✅ |
43 −| [XTL Transport](xtltransportlogistics.md) | 21 | 0 % | 0 % | 19 % | 2026-08-25 08:32 | ✅ |
44 −| [Optel Group](optelgroup.md) | 13 | 0 % | 0 % | 0 % | 2026-08-25 08:23 | ✅ |
45 −| [36Pix](pix36.md) | 12 | 0 % | 0 % | 0 % | 2026-08-25 08:25 | ✅ |
46 −| [Bloom](makeitbloom.md) | 8 | 0 % | 0 % | 0 % | 2026-08-25 08:22 | ✅ |
47 −| [Turning Point Brands Canada](recreationmarketing.md) | 8 | 0 % | 0 % | 0 % | 2026-08-25 08:26 | ✅ |
48 −| [Altitude Aerospace](altitudeaerospace.md) | 6 | 17 % | 0 % | 17 % | 2026-08-25 08:18 | ✅ |
49 −| [Challenger Motor Freight Inc.](challenger.md) | 6 | 67 % | 0 % | 0 % | 2026-08-25 08:20 | ✅ |
50 −| [Fortigo Freight Services Inc.](fortigofreightservicesinc.md) | 6 | 17 % | 0 % | 0 % | 2026-08-25 08:21 | ✅ |
51 −| [WestGroupe](westgroupe.md) | 6 | 0 % | 0 % | 0 % | 2026-08-25 08:31 | ✅ |
52 −| [ePac Flexible Packaging](epacllc.md) | 5 | 60 % | 0 % | 0 % | 2026-08-25 08:21 | ✅ |
53 −| [CWP Energy](mcgillstlaurent.md) | 5 | 0 % | 0 % | 20 % | 2026-08-25 08:22 | ✅ |
54 −| [Targray](targray.md) | 5 | 0 % | 0 % | 0 % | 2026-08-25 08:29 | ✅ |
55 −| [Teal Communications, Inc.](tealcommunicationsinc.md) | 5 | 60 % | 0 % | 0 % | 2026-08-25 08:29 | ✅ |
56 −| [Digital Moment](digitalmoment.md) | 4 | 0 % | 0 % | 100 % | 2026-08-25 08:20 | ✅ |
57 −| [McGill St Laurent](mcgillstlaurentb8.md) | 4 | 0 % | 0 % | 0 % | 2026-08-25 08:22 | ✅ |
58 −| [FortNine](canadasmotorcycle.md) | 3 | 67 % | 0 % | 33 % | 2026-08-25 08:18 | ✅ |
59 −| [Longbow Advantage](longbowadvantage.md) | 3 | 0 % | 0 % | 0 % | 2026-08-25 08:21 | ✅ |
60 −| [Sun Gro Horticulture](sungrohorticulture.md) | 3 | 0 % | 0 % | 0 % | 2026-08-25 08:28 | ✅ |
61 −| [Bluetooth SIG, Inc.](bluetoothsiginc.md) | 2 | 100 % | 0 % | 50 % | 2026-08-25 08:18 | ✅ |
62 −| [Motos Illimitees](motosillimitees.md) | 2 | 100 % | 0 % | 0 % | 2026-08-25 08:22 | ✅ |
63 −| [Precision Parcel & Package Deliveries](precisionhomeandofficedeliveries.md) | 2 | 0 % | 0 % | 0 % | 2026-08-25 08:26 | ✅ |
64 −| [Seymour Pacific Developments](seymourpacificdevelopmentsltd.md) | 2 | 100 % | 0 % | 50 % | 2026-08-25 08:26 | ✅ |
65 −| [11 Residential](residential11.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 08:25 | ✅ |
66 −| [Clinique D](cliniqued.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 08:20 | ✅ |
67 −| [Deru Market + Catering](derumarketcatering.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 08:20 | ✅ |
68 −| [GEOX](geox.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 08:21 | ✅ |
69 −| [Nadel International](nadel.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 08:23 | ✅ |
70 −| [Synterra](synterra.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 08:28 | ✅ |
71 −| [Ultium Cam](ultiumcam.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 08:29 | ✅ |
41 +| [XTL Transport](xtltransportlogistics.md) | 34 | 0 % | 97 % | 9 % | 2026-09-21 17:44 | ✅ |
42 +| [Valnet](valnetconcept.md) | 22 | 0 % | 100 % | 45 % | 2026-09-21 17:40 | ✅ |
43 +| [Playground](playground.md) | 20 | 70 % | 75 % | 0 % | 2026-09-21 17:27 | ✅ |
44 +| [Optel Group](optelgroup.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
45 +| [Challenger Motor Freight Inc.](challenger.md) | 7 | 43 % | 100 % | 0 % | 2026-09-21 16:47 | ✅ |
46 +| [Turning Point Brands Canada](recreationmarketing.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
47 +| [36Pix](pix36.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
48 +| [Altitude Aerospace](altitudeaerospace.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
49 +| [Digital Moment](digitalmoment.md) | 5 | 0 % | 100 % | 60 % | 2026-09-21 16:53 | ✅ |
50 +| [Targray](targray.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:36 | ✅ |
51 +| [Fortigo Freight Services Inc.](fortigofreightservicesinc.md) | 4 | 25 % | 75 % | 0 % | 2026-09-21 16:58 | ✅ |
52 +| [Longbow Advantage](longbowadvantage.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
53 +| [WestGroupe](westgroupe.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:43 | ✅ |
54 +| [McGill St Laurent](mcgillstlaurentb8.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
55 +| [Precision Parcel & Package Deliveries](precisionhomeandofficedeliveries.md) | 3 | 33 % | 67 % | 0 % | 2026-09-21 17:27 | ✅ |
56 +| [Sun Gro Horticulture](sungrohorticulture.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
57 +| [ePac Flexible Packaging](epacllc.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
58 +| [Bloom](makeitbloom.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
59 +| [CWP Energy](mcgillstlaurent.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
60 +| [Motos Illimitees](motosillimitees.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
61 +| [Ultium Cam](ultiumcam.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
62 +| [11 Residential](residential11.md) | 0 | — | — | — | 2026-09-21 17:30 | ✅ |
63 +| [Bluetooth SIG, Inc.](bluetoothsiginc.md) | 0 | — | — | — | 2026-09-21 16:39 | ✅ |
64 +| [FortNine](canadasmotorcycle.md) | 0 | — | — | — | 2026-09-21 16:41 | ✅ |
65 +| [Clinique D](cliniqued.md) | 0 | — | — | — | 2026-09-21 16:50 | ✅ |
66 +| [GEOX](geox.md) | 0 | — | — | — | 2026-09-21 16:59 | ✅ |
67 +| [Nadel International](nadel.md) | 0 | — | — | — | 2026-09-21 17:24 | ✅ |
68 +| [Seymour Pacific Developments](seymourpacificdevelopmentsltd.md) | 0 | — | — | — | 2026-09-21 17:32 | ✅ |
69 +| [Synterra](synterra.md) | 0 | — | — | — | 2026-09-21 17:36 | ✅ |
70 +| [Teal Communications, Inc.](tealcommunicationsinc.md) | 0 | — | — | — | 2026-09-21 17:37 | ✅ |
72 71
73 72 ## Licence / conformité
74 73
@@ -83,3 +82,9 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
83 82 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
84 83 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
85 84 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
85 +
86 +Commits touchant `jobka/connectors/jazzhr.py` :
87 +
88 +- `adb8637` 2026-09-04 [ka6] connecteur derumarketcatering: compte JazzHR fermé — l'employeur (faux positif US, Kirkland WA, verdict site_source_mort du 2026-08-26) a désactivé son compte JazzHR, la page /apply/ renvoie 200 'Inactive Career Page' sans marqueur resumator; la garde anti-faux-zéro de la plateforme jazzhr (1c116d8) partait alors en 3 essais + 30 s de backoff par sync avec un message trompeur — détection explicite de la page 'Inactive Career Page' au niveau plateforme: échec immédiat, message 'compte JazzHR désactivé / source fermée chez l'ATS' dans sync_log; non-régression vérifiée sur tenant vivant (motosillimitees 2 offres, médiane 2.0); 0 offre active en base pour cette source
89 +- `1c116d8` 2026-09-04 [ka6] fix connecteur motosillimitees: garde anti faux-zéro dans la plateforme jazzhr — la page liste renvoie parfois 200 sans la structure du jobboard (constaté 2026-09-04 10h09, sync à 0 en 0,2 s alors que 2 offres réelles), le marqueur 'resumator' est maintenant exigé avec retry+backoff sinon erreur explicite dans sync_log; sync rejoué: 2 offres (médiane 2.0), rotation d'offres de l'employeur absorbée
90 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/ats-lever.md +60 −60
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-lever.md
7 7 Rôle : Fiche plateforme ATS lever — mécanique partagée + tableau des 58 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `lever`
14 14
15 −**58 employeurs connectés** via cette plateforme — **672 offres actives**. Module partagé : `jobka/connectors/lever.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**58 employeurs connectés** via cette plateforme — **630 offres actives**. Module partagé : `jobka/connectors/lever.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -37,64 +37,64 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
37 37
38 38 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
39 39 |---|---|---|---|---|---|---|
40 −| [Go RH](gorh.md) | 271 | 17 % | 98 % | 99 % | 2026-08-25 08:31 | ✅ |
41 −| [Behaviour Interactif](bhvr.md) | 38 | 0 % | 100 % | 100 % | 2026-08-25 08:03 | ✅ |
42 −| [OSEDEA](osedea.md) | 24 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
43 −| [Cirque du Soleil](cirquedusoleil.md) | 23 | 0 % | 87 % | 100 % | 2026-08-25 08:15 | ✅ |
44 −| [Systemex](systemex.md) | 22 | 0 % | 100 % | 100 % | 2026-08-25 05:07 | ✅ |
45 −| [Xsolla](xsolla.md) | 21 | 95 % | 95 % | 100 % | 2026-08-25 05:35 | ✅ |
46 −| [Immiland Canada Inc.](immiland_canada_inc.md) | 19 | 16 % | 100 % | 100 % | 2026-08-25 08:44 | ✅ |
47 −| [VO2 Group](vo2_group.md) | 17 | 6 % | 100 % | 100 % | 2026-08-25 05:23 | ✅ |
48 −| [Larian Studios](larian.md) | 15 | 0 % | 100 % | 100 % | 2026-08-25 07:36 | ✅ |
49 −| [Work From Home Customer Service Representative](usasurveyjob.md) | 15 | 13 % | 100 % | 100 % | 2026-08-25 05:21 | ✅ |
50 −| [Spiria](spiria.md) | 12 | 58 % | 100 % | 100 % | 2026-08-25 05:02 | ✅ |
51 −| [TSMG](tsmg.md) | 11 | 0 % | 100 % | 100 % | 2026-08-25 05:18 | ✅ |
52 −| [Mirego](mirego.md) | 10 | 0 % | 100 % | 100 % | 2026-08-25 07:41 | ✅ |
53 −| [Telesat](telesat.md) | 10 | 0 % | 100 % | 100 % | 2026-08-25 05:12 | ✅ |
54 −| [Faspac](faspac.md) | 10 | 20 % | 100 % | 100 % | 2026-08-25 08:24 | ✅ |
55 −| [Trackforce](tracktik.md) | 8 | 12 % | 62 % | 100 % | 2026-08-25 05:16 | ✅ |
56 −| [Distro](distro.md) | 7 | 100 % | 100 % | 100 % | 2026-08-25 08:20 | ✅ |
57 −| [US Mobile](usmobile.md) | 7 | 100 % | 100 % | 100 % | 2026-08-25 05:21 | ✅ |
58 −| [ARC'TERYX](arcteryx_com.md) | 7 | 71 % | 100 % | 100 % | 2026-08-25 07:59 | ✅ |
59 −| [CSC Generation](cscgeneration_2.md) | 7 | 0 % | 100 % | 100 % | 2026-08-25 08:19 | ✅ |
60 −| [LifeStance Health](lifestance.md) | 7 | 100 % | 100 % | 100 % | 2026-08-25 07:37 | ✅ |
61 −| [EQ Bank](eqbank.md) | 6 | 50 % | 50 % | 100 % | 2026-08-25 08:22 | ✅ |
62 −| [Daniels Health Canada](daniels_sharpsmart.md) | 6 | 17 % | 33 % | 100 % | 2026-08-25 08:19 | ✅ |
63 −| [LRDG (Language Research Development Group)](lrdgonline.md) | 6 | 100 % | 100 % | 100 % | 2026-08-25 07:37 | ✅ |
64 −| [Maquette Virtuelle](maquettevirtuelle.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 07:38 | ✅ |
65 −| [GoMaterials](gomaterials.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 08:31 | ✅ |
66 −| [2026 GameChanger Scholarship Application](kabam.md) | 6 | 17 % | 100 % | 100 % | 2026-08-25 07:34 | ✅ |
67 −| [Aviya Aerospace Systems](aviyatech.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 08:02 | ✅ |
68 −| [Flynn Group of Companies](flynncompanies.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 08:25 | ✅ |
69 −| [Insomnia Cookies](insomniacookies.md) | 5 | 20 % | 100 % | 100 % | 2026-08-25 08:44 | ✅ |
70 −| [Alimentiv](alimentiv_2.md) | 4 | 100 % | 25 % | 100 % | 2026-08-25 07:58 | ✅ |
71 −| [Cologix](cologix.md) | 4 | 25 % | 100 % | 100 % | 2026-08-25 08:18 | ✅ |
72 −| [Ecosystem Énergie](ecosystem.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 08:21 | ✅ |
73 −| [Kogniz](kogniz.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 07:35 | ✅ |
74 −| [Syntronic](syntronic.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 05:06 | ✅ |
75 −| [DiliTrust](dilitrust.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 08:20 | ✅ |
76 −| [Dulcedo Management](dulcedo.md) | 3 | 33 % | 67 % | 100 % | 2026-08-25 08:20 | ✅ |
77 −| [Mistplay](mistplay.md) | 3 | 33 % | 100 % | 100 % | 2026-08-25 07:41 | ✅ |
78 −| [Welo Global](weloglobal.md) | 3 | 33 % | 67 % | 100 % | 2026-08-25 05:35 | ✅ |
79 −| [Potloc](potloc.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:46 | ✅ |
80 −| [Spreedly](spreedly.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 05:02 | ✅ |
81 −| [Allied](alliedreit.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:58 | ✅ |
82 −| [Executive Assistant](getwingapp.md) | 2 | 50 % | 100 % | 100 % | 2026-08-25 08:27 | ✅ |
83 −| [Keyloop](keyloop.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:35 | ✅ |
84 −| [Novaspace](novaspace.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:44 | ✅ |
85 −| [Pelmorex](pelmorex.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
86 −| [Culligan Quench](quenchwater.md) | 2 | 50 % | 50 % | 100 % | 2026-08-25 07:49 | ✅ |
87 −| [Equativ](equativ.md) | 2 | 0 % | 0 % | 100 % | 2026-08-25 08:22 | ✅ |
88 −| [Daycare Teachers](blockslearning.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
89 −| [Bounteous](bounteous.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
90 −| [Deep Sky](deepsky.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:19 | ✅ |
91 −| [EP Wealth Advisors](epwealth.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:22 | ✅ |
92 −| [Fig](figfinancial.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:24 | ✅ |
93 −| [Fresha](fresha.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:26 | ✅ |
94 −| [Havenpoint Health](havenpoint_health.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:39 | ✅ |
95 −| [SwiftConnect](swiftconnect.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:04 | ✅ |
96 −| [Thesalesfactory](thesalesfactory.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:14 | ✅ |
97 −| [Wingtra AG](wingtra_2.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
40 +| [Go RH](gorh.md) | 264 | 15 % | 98 % | 98 % | 2026-09-21 17:01 | ✅ |
41 +| [Behaviour Interactif](bhvr.md) | 34 | 0 % | 100 % | 100 % | 2026-09-21 16:39 | ✅ |
42 +| [Xsolla](xsolla.md) | 22 | 100 % | 95 % | 100 % | 2026-09-21 17:44 | ✅ |
43 +| [Cirque du Soleil](cirquedusoleil.md) | 20 | 0 % | 85 % | 100 % | 2026-09-21 16:49 | ✅ |
44 +| [Systemex](systemex.md) | 20 | 0 % | 100 % | 100 % | 2026-09-21 17:36 | ✅ |
45 +| [TSMG](tsmg.md) | 19 | 0 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
46 +| [Immiland Canada Inc.](immiland_canada_inc.md) | 19 | 16 % | 100 % | 100 % | 2026-09-21 17:12 | ✅ |
47 +| [VO2 Group](vo2_group.md) | 15 | 7 % | 100 % | 100 % | 2026-09-21 17:41 | ✅ |
48 +| [Work From Home Customer Service Representative](usasurveyjob.md) | 15 | 13 % | 100 % | 100 % | 2026-09-21 17:39 | ✅ |
49 +| [OSEDEA](osedea.md) | 14 | 0 % | 100 % | 100 % | 2026-09-21 17:26 | ✅ |
50 +| [Faspac](faspac.md) | 14 | 14 % | 100 % | 100 % | 2026-09-21 16:57 | ✅ |
51 +| [Larian Studios](larian.md) | 14 | 0 % | 100 % | 100 % | 2026-09-21 17:20 | ✅ |
52 +| [Mirego](mirego.md) | 10 | 0 % | 100 % | 100 % | 2026-09-21 17:23 | ✅ |
53 +| [Distro](distro.md) | 9 | 89 % | 100 % | 100 % | 2026-09-21 16:53 | ✅ |
54 +| [Spiria](spiria.md) | 8 | 62 % | 100 % | 100 % | 2026-09-21 17:34 | ✅ |
55 +| [Telesat](telesat.md) | 8 | 0 % | 100 % | 100 % | 2026-09-21 17:37 | ✅ |
56 +| [GoMaterials](gomaterials.md) | 8 | 0 % | 100 % | 100 % | 2026-09-21 17:01 | ✅ |
57 +| [Trackforce](tracktik.md) | 8 | 38 % | 75 % | 100 % | 2026-09-21 17:38 | ✅ |
58 +| [Dulcedo Management](dulcedo.md) | 7 | 71 % | 86 % | 100 % | 2026-09-21 16:53 | ✅ |
59 +| [Alimentiv](alimentiv_2.md) | 6 | 100 % | 17 % | 100 % | 2026-09-21 16:36 | ✅ |
60 +| [Maquette Virtuelle](maquettevirtuelle.md) | 6 | 0 % | 100 % | 100 % | 2026-09-21 17:22 | ✅ |
61 +| [Flynn Group of Companies](flynncompanies.md) | 6 | 0 % | 100 % | 100 % | 2026-09-21 16:58 | ✅ |
62 +| [2026 GameChanger Scholarship Application](kabam.md) | 6 | 33 % | 100 % | 100 % | 2026-09-21 17:19 | ✅ |
63 +| [Syntronic](syntronic.md) | 6 | 17 % | 100 % | 100 % | 2026-09-21 17:36 | ✅ |
64 +| [Aviya Aerospace Systems](aviyatech.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 16:38 | ✅ |
65 +| [EQ Bank](eqbank.md) | 5 | 60 % | 40 % | 100 % | 2026-09-21 16:56 | ✅ |
66 +| [US Mobile](usmobile.md) | 5 | 100 % | 100 % | 100 % | 2026-09-21 17:39 | ✅ |
67 +| [Ecosystem Énergie](ecosystem.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 16:55 | ✅ |
68 +| [ARC'TERYX](arcteryx_com.md) | 5 | 80 % | 100 % | 100 % | 2026-09-21 16:37 | ✅ |
69 +| [Cologix](cologix.md) | 4 | 25 % | 100 % | 100 % | 2026-09-21 16:50 | ✅ |
70 +| [Daniels Health Canada](daniels_sharpsmart.md) | 4 | 25 % | 25 % | 100 % | 2026-09-21 16:51 | ✅ |
71 +| [Allied](alliedreit.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 16:36 | ✅ |
72 +| [Kogniz](kogniz.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
73 +| [Welo Global](weloglobal.md) | 4 | 0 % | 75 % | 100 % | 2026-09-21 17:43 | ✅ |
74 +| [LRDG (Language Research Development Group)](lrdgonline.md) | 3 | 100 % | 100 % | 100 % | 2026-09-21 17:22 | ✅ |
75 +| [DiliTrust](dilitrust.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:53 | ✅ |
76 +| [Mistplay](mistplay.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
77 +| [Potloc](potloc.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
78 +| [Executive Assistant](getwingapp.md) | 2 | 50 % | 100 % | 100 % | 2026-09-21 16:59 | ✅ |
79 +| [Keyloop](keyloop.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:19 | ✅ |
80 +| [Novaspace](novaspace.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:25 | ✅ |
81 +| [Culligan Quench](quenchwater.md) | 2 | 50 % | 50 % | 100 % | 2026-09-21 17:29 | ✅ |
82 +| [Equativ](equativ.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:56 | ✅ |
83 +| [Spreedly](spreedly.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:35 | ✅ |
84 +| [Bounteous](bounteous.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:40 | ✅ |
85 +| [Deep Sky](deepsky.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:51 | ✅ |
86 +| [Fig](figfinancial.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:57 | ✅ |
87 +| [Fresha](fresha.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:58 | ✅ |
88 +| [Havenpoint Health](havenpoint_health.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:09 | ✅ |
89 +| [Thesalesfactory](thesalesfactory.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
90 +| [Wingtra AG](wingtra_2.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:43 | ✅ |
91 +| [Building Blocks Early Learning Center](blockslearning.md) | 0 | — | — | — | 2026-09-21 16:39 | ✅ |
92 +| [CSC Generation](cscgeneration_2.md) | 0 | — | — | — | 2026-09-21 16:51 | ✅ |
93 +| [EP Wealth Advisors](epwealth.md) | 0 | — | — | — | 2026-09-21 16:56 | ✅ |
94 +| [Insomnia Cookies](insomniacookies.md) | 0 | — | — | — | 2026-09-21 17:12 | ✅ |
95 +| [LifeStance Health](lifestance.md) | 0 | — | — | — | 2026-09-21 17:21 | ✅ |
96 +| [Pelmorex](pelmorex.md) | 0 | — | — | — | 2026-09-21 17:27 | ✅ |
97 +| [SwiftConnect](swiftconnect.md) | 0 | — | — | — | 2026-09-21 17:35 | ✅ |
98 98
99 99 ## Licence / conformité
100 100
modified docs/connecteurs/ats-njoyn.md +27 −20
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-njoyn.md
7 7 Rôle : Fiche plateforme ATS njoyn — mécanique partagée + tableau des 11 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `njoyn`
14 14
15 −**11 employeurs connectés** via cette plateforme — **1228 offres actives**. Module partagé : `jobka/connectors/njoyn.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**11 employeurs connectés** via cette plateforme — **1119 offres actives**. Module partagé : `jobka/connectors/njoyn.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -26,9 +26,10 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
26 26 > ``page=jobdetails&jobid=J####-####``.
27 27 >
28 28 > ⚠ Les domaines *.njoyn.com sont derrière Radware Bot Manager : pour ces
29 −> tenants, mettre ``USE_SCRAPFLY = True`` (contournement ASP). Les babillards
30 −> servis sur un domaine personnalisé (ex. emplois.santemontreal.qc.ca) se
31 −> consultent directement.
29 +> tenants, mettre ``USE_SCRAPFLY = True`` (contournement ASP). Depuis la
30 +> maintenance plateforme du 2026-09-05→07, Radware couvre aussi des domaines
31 +> personnalisés (ex. emplois.santemontreal.qc.ca depuis le 2026-09-08) ; le
32 +> fallback de ``_html`` bascule alors tout le sync sur Scrapfly.
32 33
33 34 ## Accès
34 35
@@ -42,17 +43,17 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
42 43
43 44 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
44 45 |---|---|---|---|---|---|---|
45 −| [Santé Québec — Montréal](sante_montreal.md) | 752 | 97 % | 98 % | 1 % | 2026-08-25 07:52 | ✅ |
46 −| [CGI](cgi.md) | 307 | 0 % | 95 % | 0 % | 2026-08-25 08:13 | ✅ |
47 −| [Institut de recherche du CUSM](cusm_ir.md) | 37 | 97 % | 0 % | 0 % | 2026-08-25 08:40 | ✅ |
48 −| [Groupe Bellemare](groupe_bellemare.md) | 27 | 0 % | 0 % | 0 % | 2026-08-25 08:32 | ✅ |
49 −| [Réseau de transport de la Capitale](rtc_quebec.md) | 17 | 0 % | 0 % | 0 % | 2026-08-25 07:51 | ✅ |
50 −| [Société de transport de Laval](stl_laval.md) | 17 | 29 % | 0 % | 0 % | 2026-08-25 05:03 | ✅ |
51 −| [Réseau de transport de Longueuil (RTL)](rtl.md) | 17 | 24 % | 0 % | 0 % | 2026-08-25 08:38 | ✅ |
52 −| [Groupe Master](groupe_master.md) | 17 | 35 % | 0 % | 6 % | 2026-08-25 08:44 | ✅ |
53 −| [Ville de Gatineau](ville_gatineau.md) | 16 | 94 % | 0 % | 0 % | 2026-08-25 05:23 | ✅ |
54 −| [Ville de Terrebonne](ville_terrebonne.md) | 14 | 93 % | 0 % | 0 % | 2026-08-25 05:23 | ✅ |
55 −| [Ville de Mirabel](ville_mirabel.md) | 7 | 100 % | 0 % | 0 % | 2026-08-25 07:31 | ✅ |
46 +| [Santé Québec — Montréal](sante_montreal.md) | 772 | 98 % | 98 % | 1 % | 2026-09-21 17:31 | ✅ |
47 +| [CGI](cgi.md) | 185 | 0 % | 96 % | 0 % | 2026-09-21 16:47 | ✅ |
48 +| [Groupe Bellemare](groupe_bellemare.md) | 30 | 0 % | 0 % | 0 % | 2026-09-21 17:01 | ✅ |
49 +| [Institut de recherche du CUSM](cusm_ir.md) | 30 | 97 % | 0 % | 0 % | 2026-09-21 16:51 | ✅ |
50 +| [Ville de Gatineau](ville_gatineau.md) | 23 | 100 % | 0 % | 0 % | 2026-09-21 17:41 | ✅ |
51 +| [Ville de Terrebonne](ville_terrebonne.md) | 18 | 94 % | 0 % | 0 % | 2026-09-21 17:41 | ✅ |
52 +| [Réseau de transport de Longueuil (RTL)](rtl.md) | 16 | 31 % | 0 % | 0 % | 2026-09-21 17:31 | ✅ |
53 +| [Société de transport de Laval](stl_laval.md) | 15 | 27 % | 0 % | 0 % | 2026-09-21 17:35 | ✅ |
54 +| [Groupe Master](groupe_master.md) | 13 | 62 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
55 +| [Réseau de transport de la Capitale](rtc_quebec.md) | 12 | 0 % | 0 % | 0 % | 2026-09-21 17:31 | ✅ |
56 +| [Ville de Mirabel](ville_mirabel.md) | 5 | 100 % | 0 % | 0 % | 2026-09-21 17:41 | ✅ |
56 57
57 58 ## Licence / conformité
58 59
@@ -72,7 +73,13 @@ Certains domaines de cette plateforme sont servis derrière un gestionnaire anti
72 73
73 74 Commits touchant `jobka/connectors/njoyn.py` :
74 75
75 −- `6bec010` 2026-08-19 Phase 3 — registres et conformité : sources.json (244 sources, 19 familles ATS + réseau Atlas multi-employeurs, retraits cssdm/ttcglobal, lassonde re-pointé sur le site maison) ; docs/CONFORMITE.md daté 2026-08-19 (bases d'accès des nouvelles familles, base légale des API ATS publiques, démarche documentée pour le flux officiel Guichet-Emplois/Job Bank — page libre-service disparue, passer par le formulaire Aide et soutien —, 11 sources écartées avec raisons) ; docs/connecteurs régénérées (265 fiches) ; njoyn : signature stricte de l'habillage tableau (le libellé du lien doit être le numéro de poste) pour ne jamais intercepter les habillages « titre dans le lien » (STL/RTC).
76 −- `86b0d0b` 2026-08-19 Famille Workland réécrite sur l'API JSON publique du frontal Atlas (jobs-prod published-external + default-profiles) : descriptions complètes fr/en, lieux géocodés, dates, mode de travail — 2 requêtes par cycle pour TOUT le réseau. Nouveau connecteur réseau atlas_workland (~80 employeurs QC : CSS scolaires, cégeps, CIUSSS Ouest-de-l'Île, Santé Québec Côte-Nord, ICM, STQ, UQTR, INRS… ; 1 238 offres QC). Connecteur cssdm retiré (couvert par le réseau), fixture remplacée par atlas_workland (sous-ensemble rejouable). Corrige la limite « workland description 0 % ».
77 −- `49067dd` 2026-08-19 Connecteurs phase 2 — correctifs et enrichissement champ par champ. Correctifs : villes SuccessFactors à trait d'union (préfixe municipal MAMH sur le slug, bogue « St »/« Pointe »), colonne date Taleo = date LIMITE chez agnico_eagle (+ garde-fou date future). Enrichissement : SmartRecruiters experienceLevel/function/industry/language/refNumber (lignes de liste, zéro requête), BambooHR locationType→work_mode, Breezy is_remote/logo_url/streetAddress, JSON-LD logo/industry/educationRequirements/skills (portails+icims+DR), Ashby applyUrl + composantes Bonus/Equity/Commission, Lever applyUrl + blocs opening/additional + allLocations, Workable application_url + function/industry, Recruitee careers_apply_url + description FR (translations) + expérience/scolarité + heures/sem, Greenhouse language + requisition_id, Workday externalUrl→apply_url + work_mode via facette Remote Type + clé cache v2, Guichet-Emplois avantages structurés + langue de travail, njoyn apply_url en colonne ; secours cache périmé quand le budget détail est épuisé (plus de fiches vidées)
78 −- `4917d57` 2026-08-18 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC
76 +- `7938ca6` 2026-09-13 [ka6] fix connecteur groupe_bellemare: faux positif de supervision (micro-panne réseau vers api.scrapfly.io) — durcissement du retry de _fetch_listing aux erreurs réseau (njoyn.py) — le statut stale vient d'un unique échec à 04:28 (ConnectTimeout 180 s vers l'API Scrapfly elle-même, seul échec de tout le cycle app : 1105 connecteurs ok), alors que tous les syncs précédents étaient stables à found=34 = médiane exacte ; Scrapfly répond en 0,3 s au moment du diagnostic et le sync rejoué donne found=34 en 8,4 s — connecteur INTACT. Vraie faiblesse corrigée : le retry durci du 2026-09-09 (3 essais, ré-amorçage de session) ne couvrait que les réponses vides/anti-bot ; une requests.ConnectTimeout levée par base.scrapfly() traversait la boucle et avortait le sync au premier essai. _fetch_listing attrape désormais requests.RequestException — même traitement qu'une page vide (nouvelle session Scrapfly = nouveau proxy, backoff 10-20 s), ré-élévation après 3 échecs. Test unitaire ajouté (retry après 2 ConnectTimeout simulés + ré-élévation après 3). Sync rejoué post-patch : found=34, ok. 102 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
77 +- `2e4a54e` 2026-09-09 [ka6] fix connecteur groupe_bellemare: retry avec ré-amorçage de session Scrapfly dans la plateforme njoyn — échec transitoire du 2026-09-09 12h26 (Scrapfly a renvoyé 0 octet aux 2 essais, bellemare et groupe_master tombés ensemble, repartis seuls au sync suivant) ; le retry unique de _fetch_listing rejouait la MÊME session Scrapfly (proxy collant + cookies), donc le même proxy défaillant ; désormais 3 essais, backoff 10-20 s, session Scrapfly ré-amorcée entre les essais (nouveau proxy) ; syncs rejoués : bellemare 31 offres (médiane 31.0), groupe_master 15 (médiane 14.0)
78 +- `d4ab491` 2026-09-09 [ka6] fix connecteur sante_montreal: Radware étendu au domaine personnalisé post-maintenance Njoyn — bascule Scrapfly + sessions Scrapfly pour la pagination
79 +- `9910480` 2026-09-07 [ka6] connecteur cgi: détection de l'état transitoire post-maintenance Njoyn (« Invalid request XWP10023-UA ») — la plateforme entière (tous tenants, vérifié même avec un vrai Chromium depuis IP résidentielle) répond 200 avec ce corps de ~41 octets depuis ~11h EDT le 2026-09-07, pendant la fenêtre de maintenance officielle (retour prévu dimanche ~21h); échec immédiat et explicite dans _fetch_listing, sans retry ni 2e crédit Scrapfly, offres conservées (292 actives cgi, 712 sante_montreal, protégées par la garde anti-dérive); rien à réparer côté connecteur — le volume reviendra à la fin de la fenêtre
80 +- `68cad94` 2026-09-06 [ka6] connecteur cgi: maintenance planifiée de la plateforme Njoyn (2026-09-05 ~22h30 EDT, tous les tenants *.njoyn.com ET domaines personnalisés redirigés vers maintenance.njoyn.com/platform-maintenance, page ~29 ko) — détection explicite de la page de maintenance dans _fetch_listing de la plateforme njoyn: échec immédiat sans retry ni crédit Scrapfly gaspillé, message 'plateforme Njoyn en maintenance planifiée' dans sync_log, offres conservées (292 actives cgi); le volume reviendra de lui-même à la fin de la fenêtre (retour prévu type: dimanche ~21h)
81 +- `a2c6823` 2026-09-04 [ka6] fix connecteur groupe_bellemare: casse du chemin Njoyn — Xweb.asp majuscule requis depuis le 2026-09-02 (le minuscule xweb.asp fait échouer Scrapfly ASP en UPSTREAM_WEBSITE_ERROR, 0 octet), _url() de la plateforme njoyn corrigé, 30 offres retrouvées (médiane 30) + tenants *.njoyn.com frères rétablis (stl_laval 17 vérifié)
82 +- `3843ced` 2026-09-04 Revert "[ka6] connecteur cusm_ir: diagnostic du mur Radware hCaptcha host-wide *.njoyn.com (2026-09-02) — non contournable (Scrapfly/BrightData/Oxylabs/Chromium réel tous bloqués), erreur explicite via _radware_hint, offres en base préservées"
83 +- `c8f84a3` 2026-09-04 [ka6] connecteur cusm_ir: diagnostic du mur Radware hCaptcha host-wide *.njoyn.com (2026-09-02) — non contournable (Scrapfly/BrightData/Oxylabs/Chromium réel tous bloqués), erreur explicite via _radware_hint, offres en base préservées
84 +- `33dba44` 2026-08-26 [ka6] fix connecteur stl_laval: garde-fou njoyn — une page liste vide/anti-bot (Scrapfly en échec renvoie "") ne passe plus pour un babillard à 0 offre; retente une fois puis lève une erreur (njoyn.py)
85 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/ats-recruitee.md +31 −31
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-recruitee.md
7 7 Rôle : Fiche plateforme ATS recruitee — mécanique partagée + tableau des 30 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `recruitee`
14 14
15 −**30 employeurs connectés** via cette plateforme — **275 offres actives**. Module partagé : `jobka/connectors/recruitee.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**30 employeurs connectés** via cette plateforme — **287 offres actives**. Module partagé : `jobka/connectors/recruitee.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -38,36 +38,36 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
40 40 |---|---|---|---|---|---|---|
41 −| [ANCIA Personnel](anciapersonnelinc.md) | 60 | 10 % | 100 % | 100 % | 2026-08-25 07:59 | ✅ |
42 −| [Eurofins EnvironeX](eurofinsenvironex.md) | 45 | 0 % | 100 % | 100 % | 2026-08-25 08:23 | ✅ |
43 −| [RM Staffing B.V.](rebootmonkey.md) | 26 | 85 % | 100 % | 100 % | 2026-08-25 07:49 | ✅ |
44 −| [Huawei Canada](huaweicanada.md) | 23 | 0 % | 100 % | 100 % | 2026-08-25 08:43 | ✅ |
45 −| [LG2](lg2.md) | 17 | 6 % | 100 % | 100 % | 2026-08-25 07:37 | ✅ |
46 −| [Teknion Roy & Breton](teknionroybreton.md) | 15 | 53 % | 93 % | 100 % | 2026-08-25 05:12 | ✅ |
47 −| [Avantage Plus](avantageplus.md) | 11 | 9 % | 100 % | 100 % | 2026-08-25 08:01 | ✅ |
48 −| [Framestore](framestore.md) | 10 | 0 % | 100 % | 100 % | 2026-08-25 08:26 | ✅ |
49 −| [AJ Walter Aviation](ajwalter.md) | 8 | 0 % | 100 % | 100 % | 2026-08-25 07:58 | ✅ |
50 −| [Petal](petalmd.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 07:46 | ✅ |
51 −| [STAS](stasinc.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 05:02 | ✅ |
52 −| [Adèle Express](adeleexpressfr.md) | 5 | 60 % | 100 % | 100 % | 2026-08-25 07:55 | ✅ |
53 −| [Médialo](medialo.md) | 5 | 0 % | 80 % | 100 % | 2026-08-25 07:38 | ✅ |
54 −| [Marcus evans](marcusevanscareers.md) | 5 | 60 % | 100 % | 100 % | 2026-08-25 07:38 | ✅ |
55 −| [TransPerfect](transperfect.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 05:18 | ✅ |
56 −| [Agile DSS](agiledss.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:56 | ✅ |
57 −| [Pivot + Edge](pivotandedge.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:46 | ✅ |
58 −| [Squeeze Studio Animation](squeezestudio.md) | 3 | 0 % | 67 % | 100 % | 2026-08-25 05:02 | ✅ |
59 −| [Guarana](guarana.md) | 3 | 100 % | 100 % | 100 % | 2026-08-25 08:32 | ✅ |
60 −| [Signifly](signifly.md) | 3 | 0 % | 0 % | 100 % | 2026-08-25 04:58 | ✅ |
61 −| [BIXI Montréal](biximontreal.md) | 2 | 50 % | 100 % | 100 % | 2026-08-25 08:04 | ✅ |
62 −| [Homepage](quanteo.md) | 2 | 50 % | 100 % | 100 % | 2026-08-25 07:49 | ✅ |
63 −| [Amilia](amilia.md) | 1 | 0 % | 0 % | 100 % | 2026-08-25 07:59 | ✅ |
64 −| [homepage](allredi.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:58 | ✅ |
65 −| [Consultdss](consultdss.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:18 | ✅ |
66 −| [Siemens Gamesa Certified Wind Turbine Troubleshooters](gevgroupltd.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:28 | ✅ |
67 −| [KEYENCE CANADA](keyencecanadainc.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:35 | ✅ |
68 −| [Video Ad Designer](kodify.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:35 | ✅ |
69 −| [Swordtech](swordtech.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:04 | ✅ |
41 +| [ANCIA Personnel](anciapersonnelinc.md) | 56 | 7 % | 100 % | 100 % | 2026-09-21 16:37 | ✅ |
42 +| [Eurofins EnvironeX](eurofinsenvironex.md) | 43 | 0 % | 100 % | 100 % | 2026-09-21 16:57 | ✅ |
43 +| [RM Staffing B.V.](rebootmonkey.md) | 26 | 85 % | 100 % | 100 % | 2026-09-21 17:29 | ✅ |
44 +| [Huawei Canada](huaweicanada.md) | 24 | 0 % | 100 % | 100 % | 2026-09-21 17:11 | ✅ |
45 +| [LG2](lg2.md) | 23 | 4 % | 100 % | 100 % | 2026-09-21 17:21 | ✅ |
46 +| [Teknion Roy & Breton](teknionroybreton.md) | 18 | 56 % | 89 % | 100 % | 2026-09-21 17:37 | ✅ |
47 +| [Avantage Plus](avantageplus.md) | 11 | 9 % | 100 % | 100 % | 2026-09-21 16:38 | ✅ |
48 +| [AJ Walter Aviation](ajwalter.md) | 10 | 0 % | 100 % | 100 % | 2026-09-21 16:36 | ✅ |
49 +| [Framestore](framestore.md) | 10 | 0 % | 100 % | 100 % | 2026-09-21 16:58 | ✅ |
50 +| [Agile DSS](agiledss.md) | 8 | 0 % | 100 % | 100 % | 2026-09-21 16:35 | ✅ |
51 +| [STAS](stasinc.md) | 8 | 0 % | 100 % | 100 % | 2026-09-21 17:35 | ✅ |
52 +| [Petal](petalmd.md) | 6 | 17 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
53 +| [Adèle Express](adeleexpressfr.md) | 5 | 60 % | 100 % | 100 % | 2026-09-21 16:34 | ✅ |
54 +| [Médialo](medialo.md) | 5 | 0 % | 80 % | 100 % | 2026-09-21 17:23 | ✅ |
55 +| [TransPerfect](transperfect.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
56 +| [Squeeze Studio Animation](squeezestudio.md) | 4 | 0 % | 50 % | 100 % | 2026-09-21 17:35 | ✅ |
57 +| [Pivot + Edge](pivotandedge.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
58 +| [Marcus evans](marcusevanscareers.md) | 4 | 75 % | 100 % | 100 % | 2026-09-21 17:22 | ✅ |
59 +| [Guarana](guarana.md) | 3 | 100 % | 100 % | 100 % | 2026-09-21 17:02 | ✅ |
60 +| [Homepage](quanteo.md) | 3 | 67 % | 100 % | 100 % | 2026-09-21 17:29 | ✅ |
61 +| [Signifly](signifly.md) | 3 | 0 % | 0 % | 100 % | 2026-09-21 17:33 | ✅ |
62 +| [BIXI Montréal](biximontreal.md) | 2 | 50 % | 100 % | 100 % | 2026-09-21 16:39 | ✅ |
63 +| [Amilia](amilia.md) | 1 | 0 % | 0 % | 100 % | 2026-09-21 16:37 | ✅ |
64 +| [homepage](allredi.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:36 | ✅ |
65 +| [Siemens Gamesa Certified Wind Turbine Troubleshooters](gevgroupltd.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:59 | ✅ |
66 +| [KEYENCE CANADA](keyencecanadainc.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:19 | ✅ |
67 +| [Video Ad Designer](kodify.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:20 | ✅ |
68 +| [Swordtech](swordtech.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:35 | ✅ |
70 69 | [Projevia](projevia.md) | 0 | — | — | — | n/d | n/d |
70 +| [Consultdss](consultdss.md) | 0 | — | — | — | 2026-09-21 16:51 | ✅ |
71 71
72 72 ## Licence / conformité
73 73
modified docs/connecteurs/ats-smartrecruiters.md +174 −174
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-smartrecruiters.md
7 7 Rôle : Fiche plateforme ATS smartrecruiters — mécanique partagée + tableau des 172 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `smartrecruiters`
14 14
15 −**172 employeurs connectés** via cette plateforme — **2862 offres actives**. Module partagé : `jobka/connectors/smartrecruiters.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**172 employeurs connectés** via cette plateforme — **2975 offres actives**. Module partagé : `jobka/connectors/smartrecruiters.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -41,178 +41,178 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
41 41
42 42 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
43 43 |---|---|---|---|---|---|---|
44 −| [American Iron and Metal](americanironandmetal.md) | 244 | 17 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
45 −| [CIMA+](cima2.md) | 236 | 0 % | 100 % | 85 % | 2026-08-25 08:14 | ✅ |
46 −| [Ubisoft](ubisoft.md) | 148 | 0 % | 100 % | 1 % | 2026-08-25 05:19 | ✅ |
47 −| [Reitmans](reitmanscanadalteltd.md) | 140 | 22 % | 100 % | 29 % | 2026-08-25 07:50 | ✅ |
48 −| [Sodexo Canada](sodexocanadaltd.md) | 133 | 82 % | 100 % | 8 % | 2026-08-25 05:02 | ✅ |
49 −| [Artelia Canada](artelia.md) | 117 | 0 % | 98 % | 24 % | 2026-08-25 08:00 | ✅ |
50 −| [Groupe Helios](groupehelios.md) | 116 | 2 % | 100 % | 3 % | 2026-08-25 08:32 | ✅ |
51 −| [Dexterra](dexterra.md) | 83 | 1 % | 100 % | 8 % | 2026-08-25 08:20 | ✅ |
52 −| [Linen Chest](linenchest.md) | 82 | 9 % | 100 % | 6 % | 2026-08-25 07:37 | ✅ |
53 −| [Vidéotron](videotron.md) | 76 | 17 % | 100 % | 41 % | 2026-08-25 05:23 | ✅ |
54 −| [EMCO](emcocorporation.md) | 64 | 44 % | 100 % | 19 % | 2026-08-25 08:22 | ✅ |
55 −| [Renaud-Bray](renaud_bray.md) | 64 | 2 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
56 −| [UAP Inc.](uapinc.md) | 62 | 42 % | 98 % | 26 % | 2026-08-25 05:19 | ✅ |
57 −| [Groupe Canam](groupecanam.md) | 57 | 63 % | 98 % | 30 % | 2026-08-25 08:32 | ✅ |
58 −| [AccorHotel](accorhotel.md) | 50 | 74 % | 100 % | 0 % | 2026-08-25 07:55 | ✅ |
59 −| [Techo-Bloc](techo_bloc.md) | 44 | 59 % | 100 % | 18 % | 2026-08-25 05:12 | ✅ |
60 −| [Transat A.T.](transatat1.md) | 40 | 5 % | 100 % | 60 % | 2026-08-25 05:18 | ✅ |
61 −| [Info-Ways](info_ways.md) | 39 | 0 % | 100 % | 8 % | 2026-08-25 08:44 | ✅ |
62 −| [system canada technologies](systemcanadatechnologies.md) | 38 | 0 % | 100 % | 0 % | 2026-08-25 05:07 | ✅ |
63 −| [KABS](kabs.md) | 37 | 0 % | 100 % | 3 % | 2026-08-25 07:34 | ✅ |
64 −| [NBCUniversal](nbcuniversal3.md) | 34 | 0 % | 100 % | 74 % | 2026-08-25 07:43 | ✅ |
65 −| [QSL](qsl.md) | 31 | 23 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
66 −| [H&M](hmgroup.md) | 29 | 0 % | 100 % | 0 % | 2026-08-25 08:41 | ✅ |
67 −| [LGI Healthcare Solutions Santé Inc.](lgihealthcaresolutionssanteinc.md) | 29 | 0 % | 100 % | 79 % | 2026-08-25 07:37 | ✅ |
68 −| [Wabtec](wabtec.md) | 29 | 24 % | 21 % | 34 % | 2026-08-25 07:40 | ✅ |
69 −| [Structube](structube1.md) | 25 | 0 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
70 −| [Distribution stox](distributionstox2.md) | 25 | 60 % | 100 % | 36 % | 2026-08-25 08:20 | ✅ |
71 −| [Sopra Steria](soprasteria1.md) | 24 | 0 % | 100 % | 75 % | 2026-08-25 05:02 | ✅ |
72 −| [Spectrum Health Care](spectrumhealthcare.md) | 24 | 88 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
73 −| [MEDFAR Solutions Cliniques](medfar.md) | 23 | 0 % | 100 % | 96 % | 2026-08-25 07:38 | ✅ |
74 −| [Egis Group](egisgroup.md) | 23 | 0 % | 100 % | 22 % | 2026-08-25 08:22 | ✅ |
75 −| [ATIA Ltd](atialtd.md) | 23 | 43 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
76 −| [Rodeo FX](rodeofx.md) | 20 | 0 % | 100 % | 10 % | 2026-08-25 07:50 | ✅ |
77 −| [AECOM](aecom2.md) | 20 | 0 % | 100 % | 95 % | 2026-08-25 07:56 | ✅ |
78 −| [REXEL](rexel1.md) | 19 | 0 % | 100 % | 16 % | 2026-08-25 07:50 | ✅ |
79 −| [Sia](sia.md) | 18 | 0 % | 100 % | 28 % | 2026-08-25 04:58 | ✅ |
80 −| [Vosker](vosker.md) | 17 | 0 % | 100 % | 94 % | 2026-08-25 05:23 | ✅ |
81 −| [Relais & Châteaux](relaischateaux.md) | 16 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
82 −| [Renovco](renovco.md) | 14 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
83 −| [Talan](talan.md) | 13 | 0 % | 100 % | 85 % | 2026-08-25 05:07 | ✅ |
84 −| [Scalian](scalian.md) | 13 | 31 % | 100 % | 100 % | 2026-08-25 04:56 | ✅ |
85 −| [Gameloft](gameloft.md) | 12 | 0 % | 100 % | 75 % | 2026-08-25 08:26 | ✅ |
86 −| [Lemay](lemay.md) | 12 | 8 % | 100 % | 67 % | 2026-08-25 07:37 | ✅ |
87 −| [Groupe Montoni](groupemontoni.md) | 12 | 8 % | 100 % | 25 % | 2026-08-25 08:32 | ✅ |
88 −| [Frima Studio](frimastudio.md) | 12 | 0 % | 100 % | 92 % | 2026-08-25 08:26 | ✅ |
89 −| [ISAAC Instruments](isaacinstruments.md) | 12 | 0 % | 33 % | 67 % | 2026-08-25 07:39 | ✅ |
90 −| [People Can Fly](peoplecanfly.md) | 11 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
91 −| [Sika Canada](sikaag.md) | 10 | 0 % | 100 % | 20 % | 2026-08-25 04:58 | ✅ |
92 −| [1perTInent inc](x1pertinentinc.md) | 10 | 0 % | 100 % | 70 % | 2026-08-25 05:35 | ✅ |
93 −| [Airlab Inc.](airlabinc.md) | 10 | 0 % | 100 % | 0 % | 2026-08-25 07:58 | ✅ |
94 −| [JYSK Canada](jyskcanada.md) | 10 | 20 % | 80 % | 20 % | 2026-08-25 07:34 | ✅ |
95 −| [Manitoulin Group of Companies](manitoulingroupofcompanies.md) | 10 | 30 % | 100 % | 0 % | 2026-08-25 07:38 | ✅ |
96 −| [Pyrotek](pyrotek3.md) | 10 | 100 % | 90 % | 10 % | 2026-08-25 07:49 | ✅ |
97 −| [R&D Partners](rdpartners1.md) | 10 | 0 % | 100 % | 80 % | 2026-08-25 07:49 | ✅ |
98 −| [J'Excelle](jexcelleinc.md) | 9 | 0 % | 100 % | 11 % | 2026-08-25 07:27 | ✅ |
99 −| [act digital](altersolutions.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
100 −| [LGT](lgt1.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
101 −| [Oliver & Bonacini](oliverbonacini.md) | 9 | 11 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
102 −| [Utask](utask.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 07:39 | ✅ |
103 −| [CF Montréal](cfmontreal.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 08:12 | ✅ |
104 −| [AbbVie](abbvie.md) | 8 | 0 % | 100 % | 100 % | 2026-08-25 07:54 | ✅ |
105 −| [Canadian Helicopters](canadianhelicopters.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
106 −| [Indigo Books & Music](indigobooksmusic.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
107 −| [O-I](o_i.md) | 8 | 50 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
108 −| [Turner & Townsend](turnertownsend.md) | 8 | 50 % | 100 % | 50 % | 2026-08-25 05:19 | ✅ |
109 −| [MalOPlus Group Inc.](maloplusteleservices1.md) | 8 | 0 % | 100 % | 88 % | 2026-08-25 07:37 | ✅ |
110 −| [MalOPlus Group](maloplusteleservices.md) | 8 | 0 % | 0 % | 100 % | 2026-08-25 07:41 | ✅ |
111 −| [Chagall Design](chagalldesign.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 08:13 | ✅ |
112 −| [Expresco Foods](exprescofoods.md) | 7 | 14 % | 100 % | 0 % | 2026-08-25 08:23 | ✅ |
113 −| [Hydrogen Research Institute](hydrogenresearchinstitute.md) | 7 | 14 % | 100 % | 0 % | 2026-08-25 08:43 | ✅ |
114 −| [McWane Canada](mcwanecanada.md) | 7 | 57 % | 100 % | 0 % | 2026-08-25 07:38 | ✅ |
115 −| [Trigyn Technologies](trigyntechnologies1.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
116 −| [Innovation RH inc.](innovationrh.md) | 7 | 14 % | 100 % | 29 % | 2026-08-25 08:44 | ✅ |
117 −| [Accedian Networks](accediannetworks.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 07:54 | ✅ |
118 −| [Averna](averna1.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 08:01 | ✅ |
119 −| [Cornerstone Building Brands](cornerstonebuildingbrandscareers.md) | 6 | 33 % | 100 % | 33 % | 2026-08-25 08:18 | ✅ |
120 −| [Intersand](intersand.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 07:26 | ✅ |
121 −| [Right Talent Right Now](righttalentrightnow.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
122 −| [Yaksa](yaksa.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
123 −| [Acumatica](acumatica.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 07:55 | ✅ |
124 −| [Ensiti](ensiti.md) | 5 | 0 % | 100 % | 60 % | 2026-08-25 08:22 | ✅ |
125 −| [MVV](mvv1.md) | 5 | 0 % | 100 % | 60 % | 2026-08-25 07:43 | ✅ |
126 −| [Astucemedia](astucemedia.md) | 4 | 0 % | 100 % | 50 % | 2026-08-25 08:00 | ✅ |
127 −| [HoYoverse](hoyoverse.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 08:41 | ✅ |
128 −| [Mattel (Mega Bloks)](mattelinc.md) | 4 | 0 % | 100 % | 25 % | 2026-08-25 07:38 | ✅ |
129 −| [ServiceNow](servicenow.md) | 4 | 0 % | 100 % | 75 % | 2026-08-25 04:58 | ✅ |
130 −| [Boreala Management](borealamanagement.md) | 4 | 0 % | 100 % | 50 % | 2026-08-25 08:04 | ✅ |
131 −| [Chewi Creative](chewicreative.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 08:13 | ✅ |
132 −| [Continental Group Sector ContiTech](continentalgroupsectorcontitech.md) | 4 | 25 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
133 −| [J.S. Held LLC](jsheldllc.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:34 | ✅ |
134 −| [Luckyhammers](luckyhammers.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
135 −| [META4](meta4.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:39 | ✅ |
136 −| [Nmédia](nmdia.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
137 −| [OTIP Group of Companies (OGC)](otipgroupofcompaniesogc.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
138 −| [Outpost VFX](outpostvfx.md) | 4 | 0 % | 100 % | 50 % | 2026-08-25 07:45 | ✅ |
139 −| [Prelib](prelib.md) | 4 | 25 % | 100 % | 25 % | 2026-08-25 07:46 | ✅ |
140 −| [Trigone](trigone.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
141 −| [GURU Boisson Énergisante](guruorganicenergydrink.md) | 3 | 0 % | 100 % | 33 % | 2026-08-25 08:38 | ✅ |
142 −| [Agence Maplr Inc.](agencemaplrinc.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:56 | ✅ |
143 −| [Continental Technology Solutions](continentaltechnologysolutions.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
144 −| [Cygnus Professionals Inc](cygnusprofessionalsinc2.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
145 −| [Dev](dev2.md) | 3 | 100 % | 100 % | 33 % | 2026-08-25 08:20 | ✅ |
146 −| [Gentek Building Products Ltd Partnership](gentekbuildingproductsltdpartner.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:27 | ✅ |
147 −| [Keyrus](keyrus2.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:35 | ✅ |
148 −| [Mannarino Systems & Software Inc.](mannarinosystemssoftwareinc.md) | 3 | 0 % | 100 % | 33 % | 2026-08-25 07:38 | ✅ |
149 −| [Mecar Métal](mecarmtal.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:38 | ✅ |
150 −| [Naisense Solutions Inc](naisensesolutionsinc.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
151 −| [Oboxmedia](oboxmedia1.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
152 −| [A2 Design](a2design.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 07:52 | ✅ |
153 −| [LE CAFÉ DES ARTISTES](lecafdesartistes.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:39 | ✅ |
154 −| [Playmind](playmind.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
155 −| [Venture Media](venturemedia.md) | 2 | 100 % | 100 % | 50 % | 2026-08-25 05:22 | ✅ |
156 −| [Trupanion](trupanion1.md) | 2 | 50 % | 100 % | 100 % | 2026-08-25 05:18 | ✅ |
157 −| [ADVENS](advens.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:55 | ✅ |
158 −| [Arago](arago.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:59 | ✅ |
159 −| [Catalyst Canada](catalystcanada.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:10 | ✅ |
160 −| [Conseil régional de l'environnement - Région de la Capitale Nationale](conseilrgionaldelenvironnement_rgiondelacapitalenationale.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
161 −| [DONTNOD](dontnod.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 08:20 | ✅ |
162 −| [FZ Engineering](fzengineering.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
163 −| [General Dynamics Missions System International](gdmsi.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
164 −| [LVMH Perfumes & Cosmetics](lvmhperfumescosmetics.md) | 2 | 100 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
165 −| [Loiselle inc.](loiselleinc.md) | 2 | 0 % | 100 % | 50 % | 2026-08-25 07:37 | ✅ |
166 −| [MSX International](msxinternational.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
167 −| [McDonald's Restaurants](mcdonaldscanada.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:38 | ✅ |
168 −| [Santropol Roulant](santropolroulant.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 07:52 | ✅ |
169 −| [The Climate Reality Project Canada](theclimaterealityprojectcanada.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 05:14 | ✅ |
170 −| [Waterwell Irrigation](waterwellirrigation.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
171 −| [Dimonoff](dimonoff.md) | 2 | 0 % | 100 % | 50 % | 2026-08-25 08:20 | ✅ |
172 −| [Lactanet](lactanet.md) | 2 | 0 % | 50 % | 0 % | 2026-08-25 07:39 | ✅ |
173 −| [GoLogic](gologic.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:31 | ✅ |
174 −| [Sparkgrid](sparkgrid.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
175 −| [Stelpro](stelpro.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
176 −| [Talsom](talsom.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:07 | ✅ |
177 −| [Xplornet](xplornet.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
178 −| [California Closets](californiaclosets.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
179 −| [Centre multiethnique de Québec](centremultiethniquedequbec.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:11 | ✅ |
180 −| [École des entrepreneurs du Québec](coledesentrepreneursduqubec.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:18 | ✅ |
181 −| [ADGA Group Consultants Inc](adgagroupconsultantsinc1.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:55 | ✅ |
182 −| [AG Globe Services](agglobeservices.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:56 | ✅ |
183 −| [AVEQ](aveq.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:01 | ✅ |
184 −| [Ariolix](ariolix.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
185 −| [C2 Montréal](c2montral.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:05 | ✅ |
186 −| [CCA](cca1.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:11 | ✅ |
187 −| [CM Labs](cmlabs.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:17 | ✅ |
188 −| [Club Assurance](clubassurance.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
189 −| [DLC Teams](dlcteams.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
190 −| [E*Pro Inc](eproinc.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
191 −| [Fenêtres Concept inc.](fentresconceptinc.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:24 | ✅ |
192 −| [Groupe Beaudry](groupebeaudry.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
193 −| [Infrastructel Inc.](infrastructelinc.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
194 −| [Ingeniu inc.](ingeniuinc.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:44 | ✅ |
195 −| [Mobz](jobmobz1.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:34 | ✅ |
196 −| [Léger](leger2.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:37 | ✅ |
197 −| [Logient](logient.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
198 −| [Marquis Imprimeur Inc.](marquisimprimeurinc.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:38 | ✅ |
199 −| [Nexxus Foods](nexxusfoods.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
200 −| [NielsenIQ](nielseniq.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:43 | ✅ |
201 −| [ON Animation Studio](onanimationstudio.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
202 −| [Recruitment Solutions Integrators](recruitmentsolutionsintegrators.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
203 −| [Segic](segic.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 04:57 | ✅ |
204 −| [Software Mind](softwaremind.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:02 | ✅ |
205 −| [spruceinfotech](spruceinfotech2.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
206 −| [Star Marketing](starmarketing.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:02 | ✅ |
207 −| [Tyco](tyco.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:19 | ✅ |
208 −| [WCG International Consultants Ltd.](wcginternationalconsultantsltd.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
209 −| [Westcliff](westcliff.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
210 −| [Évolupharma Inc.](volupharmainc.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:23 | ✅ |
211 −| [ADF Diesel](adfdiesel.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:55 | ✅ |
212 −| [DIMENSION COMPOSITE INC](dimensioncompositeinc.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
213 −| [Ekosystem](ekosystem.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
214 −| [Maison l'Échelon](maisonlchelon.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:39 | ✅ |
215 −| [Tonic DNA](tonicdna1.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:39 | ✅ |
44 +| [American Iron and Metal](americanironandmetal.md) | 240 | 21 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
45 +| [CIMA+](cima2.md) | 232 | 3 % | 100 % | 84 % | 2026-09-21 16:48 | ✅ |
46 +| [Sodexo Canada](sodexocanadaltd.md) | 160 | 84 % | 99 % | 6 % | 2026-09-21 17:34 | ✅ |
47 +| [Ubisoft](ubisoft.md) | 155 | 0 % | 100 % | 1 % | 2026-09-21 17:39 | ✅ |
48 +| [Reitmans](reitmanscanadalteltd.md) | 152 | 23 % | 100 % | 21 % | 2026-09-21 17:29 | ✅ |
49 +| [Groupe Helios](groupehelios.md) | 117 | 2 % | 100 % | 3 % | 2026-09-21 17:01 | ✅ |
50 +| [Artelia Canada](artelia.md) | 116 | 0 % | 99 % | 22 % | 2026-09-21 16:37 | ✅ |
51 +| [Dexterra](dexterra.md) | 91 | 1 % | 100 % | 8 % | 2026-09-21 16:53 | ✅ |
52 +| [Linen Chest](linenchest.md) | 87 | 8 % | 100 % | 8 % | 2026-09-21 17:21 | ✅ |
53 +| [UAP Inc.](uapinc.md) | 87 | 45 % | 97 % | 36 % | 2026-09-21 17:39 | ✅ |
54 +| [Vidéotron](videotron.md) | 82 | 4 % | 100 % | 40 % | 2026-09-21 17:40 | ✅ |
55 +| [Renaud-Bray](renaud_bray.md) | 79 | 1 % | 100 % | 1 % | 2026-09-21 17:29 | ✅ |
56 +| [EMCO](emcocorporation.md) | 65 | 42 % | 100 % | 9 % | 2026-09-21 16:56 | ✅ |
57 +| [Groupe Canam](groupecanam.md) | 57 | 74 % | 98 % | 28 % | 2026-09-21 17:01 | ✅ |
58 +| [AccorHotel](accorhotel.md) | 46 | 59 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
59 +| [Transat A.T.](transatat1.md) | 40 | 5 % | 100 % | 58 % | 2026-09-21 17:38 | ✅ |
60 +| [Info-Ways](info_ways.md) | 39 | 0 % | 100 % | 8 % | 2026-09-21 17:12 | ✅ |
61 +| [system canada technologies](systemcanadatechnologies.md) | 38 | 0 % | 100 % | 0 % | 2026-09-21 17:36 | ✅ |
62 +| [Wabtec](wabtec.md) | 38 | 18 % | 100 % | 42 % | 2026-09-21 17:41 | ✅ |
63 +| [KABS](kabs.md) | 37 | 0 % | 100 % | 3 % | 2026-09-21 17:19 | ✅ |
64 +| [Techo-Bloc](techo_bloc.md) | 36 | 44 % | 100 % | 42 % | 2026-09-21 17:37 | ✅ |
65 +| [Sopra Steria](soprasteria1.md) | 35 | 0 % | 100 % | 80 % | 2026-09-21 17:34 | ✅ |
66 +| [QSL](qsl.md) | 33 | 21 % | 100 % | 6 % | 2026-09-21 17:29 | ✅ |
67 +| [NBCUniversal](nbcuniversal3.md) | 32 | 0 % | 100 % | 78 % | 2026-09-21 17:24 | ✅ |
68 +| [Distribution stox](distributionstox2.md) | 30 | 60 % | 100 % | 33 % | 2026-09-21 16:53 | ✅ |
69 +| [MEDFAR Solutions Cliniques](medfar.md) | 28 | 0 % | 100 % | 89 % | 2026-09-21 17:23 | ✅ |
70 +| [LGI Healthcare Solutions Santé Inc.](lgihealthcaresolutionssanteinc.md) | 27 | 0 % | 100 % | 78 % | 2026-09-21 17:21 | ✅ |
71 +| [Spectrum Health Care](spectrumhealthcare.md) | 26 | 88 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
72 +| [Rodeo FX](rodeofx.md) | 25 | 0 % | 92 % | 4 % | 2026-09-21 17:30 | ✅ |
73 +| [H&M](hmgroup.md) | 24 | 0 % | 100 % | 0 % | 2026-09-21 17:11 | ✅ |
74 +| [Structube](structube1.md) | 24 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
75 +| [Egis Group](egisgroup.md) | 23 | 0 % | 100 % | 22 % | 2026-09-21 16:55 | ✅ |
76 +| [ATIA Ltd](atialtd.md) | 23 | 43 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
77 +| [Talan](talan.md) | 21 | 0 % | 100 % | 81 % | 2026-09-21 17:36 | ✅ |
78 +| [Vosker](vosker.md) | 20 | 0 % | 100 % | 90 % | 2026-09-21 17:41 | ✅ |
79 +| [Sia](sia.md) | 20 | 0 % | 100 % | 30 % | 2026-09-21 17:33 | ✅ |
80 +| [Frima Studio](frimastudio.md) | 20 | 0 % | 100 % | 95 % | 2026-09-21 16:58 | ✅ |
81 +| [AbbVie](abbvie.md) | 18 | 0 % | 100 % | 100 % | 2026-09-21 16:33 | ✅ |
82 +| [REXEL](rexel1.md) | 17 | 0 % | 100 % | 6 % | 2026-09-21 17:30 | ✅ |
83 +| [Lemay](lemay.md) | 16 | 6 % | 100 % | 56 % | 2026-09-21 17:21 | ✅ |
84 +| [Scalian](scalian.md) | 15 | 20 % | 100 % | 100 % | 2026-09-21 17:32 | ✅ |
85 +| [Sika Canada](sikaag.md) | 14 | 7 % | 100 % | 21 % | 2026-09-21 17:33 | ✅ |
86 +| [Renovco](renovco.md) | 14 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
87 +| [AECOM](aecom2.md) | 12 | 0 % | 100 % | 100 % | 2026-09-21 16:35 | ✅ |
88 +| [Relais & Châteaux](relaischateaux.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
89 +| [Gameloft](gameloft.md) | 11 | 0 % | 100 % | 64 % | 2026-09-21 16:58 | ✅ |
90 +| [JYSK Canada](jyskcanada.md) | 11 | 0 % | 100 % | 0 % | 2026-09-21 17:19 | ✅ |
91 +| [CF Montréal](cfmontreal.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 16:46 | ✅ |
92 +| [1perTInent inc](x1pertinentinc.md) | 10 | 0 % | 100 % | 70 % | 2026-09-21 17:44 | ✅ |
93 +| [Airlab Inc.](airlabinc.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ |
94 +| [R&D Partners](rdpartners1.md) | 10 | 0 % | 100 % | 80 % | 2026-09-21 17:29 | ✅ |
95 +| [J'Excelle](jexcelleinc.md) | 9 | 0 % | 100 % | 11 % | 2026-09-21 17:13 | ✅ |
96 +| [act digital](altersolutions.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
97 +| [Cornerstone Building Brands](cornerstonebuildingbrandscareers.md) | 9 | 22 % | 100 % | 33 % | 2026-09-21 16:51 | ✅ |
98 +| [Indigo Books & Music](indigobooksmusic.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
99 +| [LGT](lgt1.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
100 +| [Manitoulin Group of Companies](manitoulingroupofcompanies.md) | 9 | 22 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
101 +| [Utask](utask.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
102 +| [People Can Fly](peoplecanfly.md) | 8 | 0 % | 100 % | 100 % | 2026-09-21 17:27 | ✅ |
103 +| [Canadian Helicopters](canadianhelicopters.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
104 +| [O-I](o_i.md) | 8 | 50 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
105 +| [MalOPlus Group Inc.](maloplusteleservices1.md) | 8 | 0 % | 100 % | 88 % | 2026-09-21 17:22 | ✅ |
106 +| [MalOPlus Group](maloplusteleservices.md) | 8 | 0 % | 0 % | 100 % | 2026-09-21 17:22 | ✅ |
107 +| [Chagall Design](chagalldesign.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 16:47 | ✅ |
108 +| [Groupe Montoni](groupemontoni.md) | 7 | 14 % | 100 % | 29 % | 2026-09-21 17:02 | ✅ |
109 +| [Hydrogen Research Institute](hydrogenresearchinstitute.md) | 7 | 14 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
110 +| [McWane Canada](mcwanecanada.md) | 7 | 57 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
111 +| [Trigyn Technologies](trigyntechnologies1.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
112 +| [Innovation RH inc.](innovationrh.md) | 7 | 14 % | 100 % | 29 % | 2026-09-21 17:12 | ✅ |
113 +| [Mattel (Mega Bloks)](mattelinc.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
114 +| [Accedian Networks](accediannetworks.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
115 +| [Continental Group Sector ContiTech](continentalgroupsectorcontitech.md) | 6 | 17 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
116 +| [Ensiti](ensiti.md) | 6 | 0 % | 100 % | 67 % | 2026-09-21 16:56 | ✅ |
117 +| [Expresco Foods](exprescofoods.md) | 6 | 17 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
118 +| [Right Talent Right Now](righttalentrightnow.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
119 +| [Turner & Townsend](turnertownsend.md) | 6 | 33 % | 100 % | 67 % | 2026-09-21 17:39 | ✅ |
120 +| [Yaksa](yaksa.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
121 +| [ISAAC Instruments](isaacinstruments.md) | 6 | 0 % | 100 % | 67 % | 2026-09-21 17:13 | ✅ |
122 +| [Astucemedia](astucemedia.md) | 5 | 0 % | 100 % | 60 % | 2026-09-21 16:37 | ✅ |
123 +| [MVV](mvv1.md) | 5 | 0 % | 100 % | 60 % | 2026-09-21 17:24 | ✅ |
124 +| [Pyrotek](pyrotek3.md) | 5 | 100 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
125 +| [HoYoverse](hoyoverse.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:11 | ✅ |
126 +| [ServiceNow](servicenow.md) | 4 | 0 % | 100 % | 75 % | 2026-09-21 17:32 | ✅ |
127 +| [Acumatica](acumatica.md) | 4 | 25 % | 100 % | 100 % | 2026-09-21 16:34 | ✅ |
128 +| [Boreala Management](borealamanagement.md) | 4 | 0 % | 100 % | 50 % | 2026-09-21 16:40 | ✅ |
129 +| [Chewi Creative](chewicreative.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 16:47 | ✅ |
130 +| [Luckyhammers](luckyhammers.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
131 +| [META4](meta4.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:23 | ✅ |
132 +| [Nmédia](nmdia.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
133 +| [OTIP Group of Companies (OGC)](otipgroupofcompaniesogc.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 17:26 | ✅ |
134 +| [Oliver & Bonacini](oliverbonacini.md) | 4 | 25 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
135 +| [Trigone](trigone.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
136 +| [Venture Media](venturemedia.md) | 3 | 100 % | 100 % | 33 % | 2026-09-21 17:40 | ✅ |
137 +| [GURU Boisson Énergisante](guruorganicenergydrink.md) | 3 | 0 % | 100 % | 67 % | 2026-09-21 17:08 | ✅ |
138 +| [Agence Maplr Inc.](agencemaplrinc.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ |
139 +| [Continental Technology Solutions](continentaltechnologysolutions.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
140 +| [Cygnus Professionals Inc](cygnusprofessionalsinc2.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
141 +| [Dev](dev2.md) | 3 | 100 % | 100 % | 33 % | 2026-09-21 16:52 | ✅ |
142 +| [General Dynamics Missions System International](gdmsi.md) | 3 | 67 % | 100 % | 33 % | 2026-09-21 16:58 | ✅ |
143 +| [Gentek Building Products Ltd Partnership](gentekbuildingproductsltdpartner.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:59 | ✅ |
144 +| [Groupe Beaudry](groupebeaudry.md) | 3 | 0 % | 100 % | 33 % | 2026-09-21 17:01 | ✅ |
145 +| [Keyrus](keyrus2.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:19 | ✅ |
146 +| [Léger](leger2.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 17:21 | ✅ |
147 +| [Mannarino Systems & Software Inc.](mannarinosystemssoftwareinc.md) | 3 | 0 % | 100 % | 33 % | 2026-09-21 17:22 | ✅ |
148 +| [Mecar Métal](mecarmtal.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
149 +| [Naisense Solutions Inc](naisensesolutionsinc.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
150 +| [Oboxmedia](oboxmedia1.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
151 +| [Outpost VFX](outpostvfx.md) | 3 | 0 % | 100 % | 33 % | 2026-09-21 17:27 | ✅ |
152 +| [Prelib](prelib.md) | 3 | 33 % | 100 % | 33 % | 2026-09-21 17:27 | ✅ |
153 +| [A2 Design](a2design.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 16:33 | ✅ |
154 +| [LE CAFÉ DES ARTISTES](lecafdesartistes.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
155 +| [Playmind](playmind.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
156 +| [Trupanion](trupanion1.md) | 2 | 50 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
157 +| [ADVENS](advens.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
158 +| [Arago](arago.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:37 | ✅ |
159 +| [Averna](averna1.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:38 | ✅ |
160 +| [Catalyst Canada](catalystcanada.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
161 +| [Conseil régional de l'environnement - Région de la Capitale Nationale](conseilrgionaldelenvironnement_rgiondelacapitalenationale.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
162 +| [DONTNOD](dontnod.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:53 | ✅ |
163 +| [FZ Engineering](fzengineering.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
164 +| [Intersand](intersand.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:13 | ✅ |
165 +| [Loiselle inc.](loiselleinc.md) | 2 | 0 % | 100 % | 50 % | 2026-09-21 17:22 | ✅ |
166 +| [MSX International](msxinternational.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
167 +| [McDonald's Restaurants](mcdonaldscanada.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
168 +| [NielsenIQ](nielseniq.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:24 | ✅ |
169 +| [Santropol Roulant](santropolroulant.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 17:31 | ✅ |
170 +| [The Climate Reality Project Canada](theclimaterealityprojectcanada.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
171 +| [Waterwell Irrigation](waterwellirrigation.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 17:43 | ✅ |
172 +| [Lactanet](lactanet.md) | 2 | 0 % | 50 % | 0 % | 2026-09-21 17:20 | ✅ |
173 +| [GoLogic](gologic.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
174 +| [Sparkgrid](sparkgrid.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
175 +| [Stelpro](stelpro.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
176 +| [Talsom](talsom.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:36 | ✅ |
177 +| [Xplornet](xplornet.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
178 +| [Centre multiethnique de Québec](centremultiethniquedequbec.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:45 | ✅ |
179 +| [École des entrepreneurs du Québec](coledesentrepreneursduqubec.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:50 | ✅ |
180 +| [ADGA Group Consultants Inc](adgagroupconsultantsinc1.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
181 +| [AG Globe Services](agglobeservices.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ |
182 +| [AVEQ](aveq.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:38 | ✅ |
183 +| [Ariolix](ariolix.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
184 +| [C2 Montréal](c2montral.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:40 | ✅ |
185 +| [CCA](cca1.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
186 +| [CM Labs](cmlabs.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 16:50 | ✅ |
187 +| [Club Assurance](clubassurance.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
188 +| [DLC Teams](dlcteams.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
189 +| [E*Pro Inc](eproinc.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
190 +| [Fenêtres Concept inc.](fentresconceptinc.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
191 +| [Infrastructel Inc.](infrastructelinc.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
192 +| [Ingeniu inc.](ingeniuinc.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:12 | ✅ |
193 +| [LVMH Perfumes & Cosmetics](lvmhperfumescosmetics.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
194 +| [Logient](logient.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
195 +| [Marquis Imprimeur Inc.](marquisimprimeurinc.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:22 | ✅ |
196 +| [Nexxus Foods](nexxusfoods.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
197 +| [ON Animation Studio](onanimationstudio.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
198 +| [Recruitment Solutions Integrators](recruitmentsolutionsintegrators.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
199 +| [Segic](segic.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:32 | ✅ |
200 +| [spruceinfotech](spruceinfotech2.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
201 +| [Star Marketing](starmarketing.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
202 +| [Tyco](tyco.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
203 +| [WCG International Consultants Ltd.](wcginternationalconsultantsltd.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:43 | ✅ |
204 +| [Westcliff](westcliff.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:43 | ✅ |
205 +| [Évolupharma Inc.](volupharmainc.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:41 | ✅ |
206 +| [ADF Diesel](adfdiesel.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
207 +| [DIMENSION COMPOSITE INC](dimensioncompositeinc.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
208 +| [Dimonoff](dimonoff.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
209 +| [Ekosystem](ekosystem.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:55 | ✅ |
210 +| [Maison l'Échelon](maisonlchelon.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:22 | ✅ |
211 +| [Tonic DNA](tonicdna1.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
212 +| [California Closets](californiaclosets.md) | 0 | — | — | — | 2026-09-21 16:41 | ✅ |
213 +| [J.S. Held LLC](jsheldllc.md) | 0 | — | — | — | 2026-09-21 17:19 | ✅ |
214 +| [Mobz](jobmobz1.md) | 0 | — | — | — | 2026-09-21 17:19 | ✅ |
215 +| [Software Mind](softwaremind.md) | 0 | — | — | — | 2026-09-21 17:34 | ✅ |
216 216
217 217 ## Licence / conformité
218 218
modified docs/connecteurs/ats-successfactors.md +14 −13
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-successfactors.md
7 7 Rôle : Fiche plateforme ATS successfactors — mécanique partagée + tableau des 11 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `successfactors`
14 14
15 −**11 employeurs connectés** via cette plateforme — **1549 offres actives**. Module partagé : `jobka/connectors/successfactors.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**11 employeurs connectés** via cette plateforme — **1451 offres actives**. Module partagé : `jobka/connectors/successfactors.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -38,17 +38,17 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
40 40 |---|---|---|---|---|---|---|
41 −| [Bombardier](bombardier.md) | 809 | 0 % | 100 % | 90 % | 2026-08-25 08:04 | ✅ |
42 −| [Alstom](alstom.md) | 227 | 6 % | 0 % | 4 % | 2026-08-25 07:59 | ✅ |
43 −| [Deloitte Canada](deloitte.md) | 105 | 96 % | 100 % | 98 % | 2026-08-25 08:19 | ✅ |
44 −| [Domtar](domtar.md) | 104 | 0 % | 99 % | 0 % | 2026-08-25 08:20 | ✅ |
45 −| [Cascades](cascades.md) | 99 | 77 % | 100 % | 13 % | 2026-08-25 08:10 | ✅ |
46 −| [Hydro-Québec](hydroquebec.md) | 66 | 58 % | 82 % | 0 % | 2026-08-25 08:43 | ✅ |
47 −| [Kiewit (Ganotec)](kiewit_ganotec.md) | 50 | 0 % | 0 % | 0 % | 2026-08-25 07:35 | ✅ |
48 −| [TELUS](telus.md) | 45 | 0 % | 98 % | 0 % | 2026-08-25 05:12 | ✅ |
49 −| [VIA Rail Canada](via_rail.md) | 24 | 0 % | 100 % | 0 % | 2026-08-25 05:22 | ✅ |
50 −| [Énergir](energir.md) | 11 | 0 % | 100 % | 9 % | 2026-08-25 08:22 | ✅ |
51 −| [Canada Vie](canada_vie.md) | 9 | 0 % | 0 % | 0 % | 2026-08-25 08:05 | ✅ |
41 +| [Bombardier](bombardier.md) | 741 | 0 % | 100 % | 86 % | 2026-09-21 16:40 | ✅ |
42 +| [Alstom](alstom.md) | 237 | 7 % | 100 % | 3 % | 2026-09-21 16:36 | ✅ |
43 +| [Cascades](cascades.md) | 108 | 74 % | 100 % | 19 % | 2026-09-21 16:45 | ✅ |
44 +| [Deloitte Canada](deloitte.md) | 108 | 98 % | 100 % | 100 % | 2026-09-21 16:52 | ✅ |
45 +| [TELUS](telus.md) | 66 | 0 % | 100 % | 3 % | 2026-09-21 17:37 | ✅ |
46 +| [Hydro-Québec](hydroquebec.md) | 53 | 34 % | 77 % | 0 % | 2026-09-21 17:12 | ✅ |
47 +| [Kiewit (Ganotec)](kiewit_ganotec.md) | 52 | 0 % | 100 % | 0 % | 2026-09-21 17:19 | ✅ |
48 +| [Domtar](domtar.md) | 29 | 0 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
49 +| [VIA Rail Canada](via_rail.md) | 24 | 0 % | 100 % | 0 % | 2026-09-21 17:40 | ✅ |
50 +| [Énergir](energir.md) | 18 | 0 % | 100 % | 6 % | 2026-09-21 16:56 | ✅ |
51 +| [Canada Vie](canada_vie.md) | 15 | 0 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
52 52
53 53 ## Licence / conformité
54 54
@@ -66,6 +66,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
66 66
67 67 Commits touchant `jobka/connectors/successfactors.py` :
68 68
69 +- `30c58c2` 2026-09-13 [ka6] fix connecteur alstom: faux positif de supervision (réponse sitemap transitoirement illisible) — garde-fou _fetch_sitemap dans la plateforme successfactors — le statut stale vient d'un unique sync found=0 à 06:14 (contre une médiane stable de 224), alors que le connecteur est INTACT : le sitemap RSS live (24 Mo, 2285 items monde) parse 224 offres QC au rejeu. Vraie faiblesse corrigée : SuccessFactorsConnector.fetch() avalait silencieusement une réponse 200 sans racine <rss>/<urlset> (page de maintenance/anti-bot, corps vide) — pas d'<item> ni de <loc> → [] → faux « 0 trouvé, ok ». Nouveau _fetch_sitemap sur le modèle de njoyn._fetch_listing (7938ca6) : 3 essais avec backoff 10-20 s, retry sur RequestException transitoire et sur réponse sans racine sitemap, échec explicite (RuntimeError, offres conservées) après 3 réponses illisibles ; un sitemap valide mais vide après 3 essais reste accepté (tenant légitimement sans offre, le garde-fou de dérive suspend déjà les retraits). Test unitaire ajouté (retry maintenance+ConnectTimeout, échec explicite après 3 corps vides, tolérance tenant vide). Sync rejoué post-patch : found=224 en 8,9 s, ok. 103 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
69 70 - `856863d` 2026-08-25 Vague D implémentée — 75 nouveaux connecteurs (968 -> 1044 employeurs), ~768 offres QC
70 71 - `49067dd` 2026-08-19 Connecteurs phase 2 — correctifs et enrichissement champ par champ. Correctifs : villes SuccessFactors à trait d'union (préfixe municipal MAMH sur le slug, bogue « St »/« Pointe »), colonne date Taleo = date LIMITE chez agnico_eagle (+ garde-fou date future). Enrichissement : SmartRecruiters experienceLevel/function/industry/language/refNumber (lignes de liste, zéro requête), BambooHR locationType→work_mode, Breezy is_remote/logo_url/streetAddress, JSON-LD logo/industry/educationRequirements/skills (portails+icims+DR), Ashby applyUrl + composantes Bonus/Equity/Commission, Lever applyUrl + blocs opening/additional + allLocations, Workable application_url + function/industry, Recruitee careers_apply_url + description FR (translations) + expérience/scolarité + heures/sem, Greenhouse language + requisition_id, Workday externalUrl→apply_url + work_mode via facette Remote Type + clé cache v2, Guichet-Emplois avantages structurés + langue de travail, njoyn apply_url en colonne ; secours cache périmé quand le budget détail est épuisé (plus de fiches vidées)
71 72 - `4917d57` 2026-08-18 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC
modified docs/connecteurs/ats-taleo.md +9 −7
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-taleo.md
7 7 Rôle : Fiche plateforme ATS taleo — mécanique partagée + tableau des 5 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `taleo`
14 14
15 −**5 employeurs connectés** via cette plateforme — **82 offres actives**. Module partagé : `jobka/connectors/taleo.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**5 employeurs connectés** via cette plateforme — **122 offres actives**. Module partagé : `jobka/connectors/taleo.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -45,11 +45,11 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
45 45
46 46 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
47 47 |---|---|---|---|---|---|---|
48 −| [Agnico Eagle Mines](agnico_eagle.md) | 27 | 0 % | 100 % | 0 % | 2026-08-25 07:56 | ✅ |
49 −| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | 25 | 0 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
50 −| [Bell Textron Canada](bell_textron.md) | 16 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
51 −| [Bayshore HealthCare](bayshore.md) | 13 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
52 −| [IAMGOLD](iamgold.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 08:44 | ✅ |
48 +| [Agnico Eagle Mines](agnico_eagle.md) | 70 | 0 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ |
49 +| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | 23 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
50 +| [Bell Textron Canada](bell_textron.md) | 18 | 0 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
51 +| [Bayshore HealthCare](bayshore.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
52 +| [IAMGOLD](iamgold.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
53 53
54 54 ## Licence / conformité
55 55
@@ -67,5 +67,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
67 67
68 68 Commits touchant `jobka/connectors/taleo.py` :
69 69
70 +- `e45adfd` 2026-09-09 [ka6] fix connecteur bayshore: retry sur réponse searchjobs non-JSON dans la plateforme taleo — le frontal a renvoyé une page HTML statut 200 au lieu du JSON (« Expecting value: line 2 column 1 », constaté 2026-09-09 06h29 sur bayshore, reparti seul), cas couvert par aucun retry existant (ni 5xx ni anti-bot); nouveau _search_page, 3 essais backoff 10-20 s avec ré-amorçage de session, échec explicite avec extrait du corps après 3 essais; sync rejoué: 11 offres (médiane 11.0)
71 +- `14546e9` 2026-09-09 [ka6] fix connecteur bell_textron: retry avec backoff sur 5xx transitoire dans la plateforme taleo — un 500 isolé de l'API searchjobs (constaté 2026-09-08 23h29 sur textron, reparti seul) faisait échouer tout le sync car raise_for_status dans base.get/post n'a aucun retry; nouveau _req couvrant amorce/liste/détail, 3 essais backoff 10-20-30 s, les 4xx restent des échecs immédiats (même correctif que workday b5b4be3); sync rejoué: 16 offres (médiane 16.0)
70 72 - `49067dd` 2026-08-19 Connecteurs phase 2 — correctifs et enrichissement champ par champ. Correctifs : villes SuccessFactors à trait d'union (préfixe municipal MAMH sur le slug, bogue « St »/« Pointe »), colonne date Taleo = date LIMITE chez agnico_eagle (+ garde-fou date future). Enrichissement : SmartRecruiters experienceLevel/function/industry/language/refNumber (lignes de liste, zéro requête), BambooHR locationType→work_mode, Breezy is_remote/logo_url/streetAddress, JSON-LD logo/industry/educationRequirements/skills (portails+icims+DR), Ashby applyUrl + composantes Bonus/Equity/Commission, Lever applyUrl + blocs opening/additional + allLocations, Workable application_url + function/industry, Recruitee careers_apply_url + description FR (translations) + expérience/scolarité + heures/sem, Greenhouse language + requisition_id, Workday externalUrl→apply_url + work_mode via facette Remote Type + clé cache v2, Guichet-Emplois avantages structurés + langue de travail, njoyn apply_url en colonne ; secours cache périmé quand le budget détail est épuisé (plus de fiches vidées)
71 73 - `4917d57` 2026-08-18 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC
modified docs/connecteurs/ats-taleo_tbe.md +9 −9
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-taleo_tbe.md
7 7 Rôle : Fiche plateforme ATS taleo_tbe — mécanique partagée + tableau des 7 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `taleo_tbe`
14 14
15 −**7 employeurs connectés** via cette plateforme — **208 offres actives**. Module partagé : `jobka/connectors/taleo_tbe.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**7 employeurs connectés** via cette plateforme — **209 offres actives**. Module partagé : `jobka/connectors/taleo_tbe.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -46,13 +46,13 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
46 46
47 47 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
48 48 |---|---|---|---|---|---|---|
49 −| [Sépaq](sepaq.md) | 100 | 55 % | 7 % | 4 % | 2026-08-25 04:57 | ✅ |
50 −| [Kruger](kruger.md) | 54 | 9 % | 100 % | 2 % | 2026-08-25 07:36 | ✅ |
51 −| [exo (transport métropolitain)](exo.md) | 26 | 0 % | 100 % | 92 % | 2026-08-25 08:23 | ✅ |
52 −| [HEC Montréal — corps professoral](hec_montreal_profs.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
53 −| [HEC Montréal](hec_montreal.md) | 11 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
54 −| [Graymont](graymont.md) | 4 | 0 % | 0 % | 25 % | 2026-08-25 08:31 | ✅ |
55 −| [Produits Kruger](produits_kruger.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:46 | ✅ |
49 +| [Sépaq](sepaq.md) | 97 | 54 % | 9 % | 7 % | 2026-09-21 17:32 | ✅ |
50 +| [Kruger](kruger.md) | 53 | 9 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
51 +| [exo (transport métropolitain)](exo.md) | 35 | 0 % | 94 % | 94 % | 2026-09-21 16:57 | ✅ |
52 +| [HEC Montréal](hec_montreal.md) | 9 | 0 % | 100 % | 11 % | 2026-09-21 17:09 | ✅ |
53 +| [HEC Montréal — corps professoral](hec_montreal_profs.md) | 9 | 0 % | 100 % | 11 % | 2026-09-21 17:09 | ✅ |
54 +| [Graymont](graymont.md) | 5 | 0 % | 100 % | 40 % | 2026-09-21 17:01 | ✅ |
55 +| [Produits Kruger](produits_kruger.md) | 1 | 0 % | 0 % | 0 % | 2026-09-21 17:27 | ✅ |
56 56
57 57 ## Licence / conformité
58 58
modified docs/connecteurs/ats-teamtailor.md +15 −11
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-teamtailor.md
7 7 Rôle : Fiche plateforme ATS teamtailor — mécanique partagée + tableau des 9 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `teamtailor`
14 14
15 −**9 employeurs connectés** via cette plateforme — **132 offres actives**. Module partagé : `jobka/connectors/teamtailor.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**9 employeurs connectés** via cette plateforme — **140 offres actives**. Module partagé : `jobka/connectors/teamtailor.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -36,15 +36,15 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
38 38 |---|---|---|---|---|---|---|
39 −| [Norda Stelo](nordastelo.md) | 50 | 0 % | 0 % | 0 % | 2026-08-25 08:35 | ✅ |
40 −| [Workin Group](workinquebec.md) | 34 | 53 % | 0 % | 12 % | 2026-08-25 08:37 | ✅ |
41 −| [Humanise](humanisecollective.md) | 13 | 0 % | 0 % | 0 % | 2026-08-25 08:33 | ✅ |
42 −| [ORA Partenaires](orapartenaires.md) | 13 | 92 % | 0 % | 15 % | 2026-08-25 08:35 | ✅ |
43 −| [CAM Mécanique](cammecanique.md) | 6 | 0 % | 0 % | 0 % | 2026-08-25 08:32 | ✅ |
44 −| [LFG Construction](lfgconstruction.md) | 6 | 17 % | 0 % | 0 % | 2026-08-25 08:33 | ✅ |
45 −| [Aleanza Recrutement Durable](aleanzarecrutementdurable.md) | 4 | 25 % | 0 % | 0 % | 2026-08-25 08:32 | ✅ |
46 −| [Synertek](synertek.md) | 4 | 75 % | 0 % | 0 % | 2026-08-25 08:35 | ✅ |
47 −| [Engaged HR](engagedhr.md) | 2 | 100 % | 0 % | 100 % | 2026-08-25 08:33 | ✅ |
39 +| [Norda Stelo](nordastelo.md) | 58 | 0 % | 95 % | 0 % | 2026-09-21 17:24 | ✅ |
40 +| [Workin Group](workinquebec.md) | 36 | 56 % | 100 % | 14 % | 2026-09-21 17:44 | ✅ |
41 +| [ORA Partenaires](orapartenaires.md) | 18 | 78 % | 94 % | 11 % | 2026-09-21 17:26 | ✅ |
42 +| [Humanise](humanisecollective.md) | 11 | 0 % | 91 % | 0 % | 2026-09-21 17:11 | ✅ |
43 +| [CAM Mécanique](cammecanique.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
44 +| [Synertek](synertek.md) | 6 | 67 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
45 +| [LFG Construction](lfgconstruction.md) | 3 | 0 % | 33 % | 0 % | 2026-09-21 17:21 | ✅ |
46 +| [Aleanza Recrutement Durable](aleanzarecrutementdurable.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
47 +| [Engaged HR](engagedhr.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:56 | ✅ |
48 48
49 49 ## Licence / conformité
50 50
@@ -59,3 +59,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
59 59 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
60 60 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
61 61 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
62 +
63 +Commits touchant `jobka/connectors/teamtailor.py` :
64 +
65 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/ats-ultipro.md +6 −6
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-ultipro.md
7 7 Rôle : Fiche plateforme ATS ultipro — mécanique partagée + tableau des 4 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `ultipro`
14 14
15 −**4 employeurs connectés** via cette plateforme — **67 offres actives**. Module partagé : `jobka/connectors/ultipro.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**4 employeurs connectés** via cette plateforme — **73 offres actives**. Module partagé : `jobka/connectors/ultipro.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -40,10 +40,10 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
40 40
41 41 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
42 42 |---|---|---|---|---|---|---|
43 −| [Nortera](nortera.md) | 24 | 58 % | 100 % | 4 % | 2026-08-25 07:44 | ✅ |
44 −| [Messer Canada](messer_canada.md) | 23 | 87 % | 100 % | 0 % | 2026-08-25 07:39 | ✅ |
45 −| [Fruit d'Or](fruitdor.md) | 14 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
46 −| [Sel Windsor (Mines Seleine)](selwindsor.md) | 6 | 0 % | 0 % | 0 % | 2026-08-25 07:24 | ✅ |
43 +| [Nortera](nortera.md) | 33 | 64 % | 100 % | 6 % | 2026-09-21 17:25 | ✅ |
44 +| [Messer Canada](messer_canada.md) | 23 | 87 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
45 +| [Fruit d'Or](fruitdor.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
46 +| [Sel Windsor (Mines Seleine)](selwindsor.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:32 | ✅ |
47 47
48 48 ## Licence / conformité
49 49
modified docs/connecteurs/ats-workable.md +73 −73
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-workable.md
7 7 Rôle : Fiche plateforme ATS workable — mécanique partagée + tableau des 71 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `workable`
14 14
15 −**71 employeurs connectés** via cette plateforme — **1548 offres actives**. Module partagé : `jobka/connectors/workable.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**71 employeurs connectés** via cette plateforme — **1764 offres actives**. Module partagé : `jobka/connectors/workable.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -39,77 +39,77 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
41 41 |---|---|---|---|---|---|---|
42 −| [Solution SFT](solution_sft.md) | 611 | 33 % | 100 % | 9 % | 2026-08-25 05:02 | ✅ |
43 −| [TEHORA](tehora.md) | 346 | 0 % | 100 % | 32 % | 2026-08-25 05:12 | ✅ |
44 −| [Genetec](genetec_inc.md) | 79 | 0 % | 100 % | 16 % | 2026-08-25 08:27 | ✅ |
45 −| [ApexFocusGroup](afg.md) | 46 | 0 % | 100 % | 100 % | 2026-08-25 07:56 | ✅ |
46 −| [SOGECLAIR](sogeclair.md) | 41 | 2 % | 100 % | 2 % | 2026-08-25 05:02 | ✅ |
47 −| [Valsoft](valsoft_corp.md) | 36 | 11 % | 100 % | 17 % | 2026-08-25 05:21 | ✅ |
48 −| [Side (PTW)](sideinc.md) | 31 | 0 % | 100 % | 32 % | 2026-08-25 04:58 | ✅ |
49 −| [Keywords Studios](keywords_intl1.md) | 27 | 89 % | 100 % | 33 % | 2026-08-25 07:35 | ✅ |
50 −| [Tecsys](tecsys.md) | 23 | 0 % | 100 % | 91 % | 2026-08-25 05:12 | ✅ |
51 −| [Baro RH](barorh.md) | 22 | 0 % | 100 % | 5 % | 2026-08-25 08:02 | ✅ |
52 −| [Sapsol Technologies Inc](sapsol_technologies_inc_7.md) | 19 | 0 % | 100 % | 42 % | 2026-08-25 07:52 | ✅ |
53 −| [Lamour](lamour.md) | 14 | 0 % | 100 % | 0 % | 2026-08-25 07:36 | ✅ |
54 −| [Starlink Aviation](starlink_aviation.md) | 14 | 0 % | 100 % | 14 % | 2026-08-25 05:02 | ✅ |
55 −| [Aviso Wealth](aviso.md) | 14 | 100 % | 100 % | 0 % | 2026-08-25 08:02 | ✅ |
56 −| [Evolving Web](evolving_web.md) | 12 | 0 % | 100 % | 17 % | 2026-08-25 08:23 | ✅ |
57 −| [LIDD Consultants](lidd.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
58 −| [FLO (AddÉnergie)](flo_addenergie.md) | 11 | 0 % | 100 % | 18 % | 2026-08-25 08:25 | ✅ |
59 −| [Mindrift](toloka_ai.md) | 11 | 100 % | 100 % | 100 % | 2026-08-25 05:16 | ✅ |
60 −| [Eminent Valet](eminent_valet.md) | 10 | 100 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
61 −| [Botpress](botpress.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
62 −| [Rentokil Initial](rentokil_initial.md) | 9 | 89 % | 100 % | 11 % | 2026-08-25 07:50 | ✅ |
63 −| [Mila — Institut québécois d'IA](mila_2.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 07:41 | ✅ |
64 −| [Exportation et développement Canada (EDC)](export_development_canada.md) | 8 | 88 % | 100 % | 12 % | 2026-08-25 08:23 | ✅ |
65 −| [Egon Zehnder](ezrecruiting.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 08:23 | ✅ |
66 −| [Liberty Mutual Canada](liberty_mutual_canada.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
67 −| [Nuovo Photography](nuovophotography.md) | 7 | 29 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
68 −| [CTS Foods Brokers](cts_foods_brokers_inc.md) | 7 | 29 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
69 −| [Devoted Studios](devoted_studios_1.md) | 7 | 0 % | 100 % | 100 % | 2026-08-25 08:20 | ✅ |
70 −| [John Brooks Company](john_brooks_company.md) | 7 | 57 % | 100 % | 43 % | 2026-08-25 07:34 | ✅ |
71 −| [Sweat Pants Agency](sweat_pants_agency.md) | 6 | 50 % | 100 % | 100 % | 2026-08-25 05:04 | ✅ |
72 −| [FinDev Canada](findevcanada.md) | 6 | 67 % | 100 % | 0 % | 2026-08-25 08:24 | ✅ |
73 −| [GHGSAT](ghgsat.md) | 6 | 0 % | 100 % | 17 % | 2026-08-25 08:29 | ✅ |
74 −| [Bardel Entertainment](bardel_entertainment.md) | 5 | 100 % | 100 % | 0 % | 2026-08-25 08:02 | ✅ |
75 −| [Delmar International](delmar_international_inc.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
76 −| [Acuity Insights](acuity_insights.md) | 4 | 75 % | 100 % | 100 % | 2026-08-25 07:55 | ✅ |
77 −| [Allucent](allucent.md) | 4 | 0 % | 100 % | 100 % | 2026-08-25 07:59 | ✅ |
78 −| [Doman Building Materials Group Ltd](doman_building_materials.md) | 4 | 0 % | 100 % | 75 % | 2026-08-25 08:20 | ✅ |
79 −| [Flatgigs](flatgigs.md) | 4 | 0 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
80 −| [Unit8](unit8.md) | 3 | 0 % | 100 % | 67 % | 2026-08-25 05:19 | ✅ |
81 −| [CSN Collision](csncollision.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
82 −| [Damotech](damotech.md) | 3 | 33 % | 100 % | 0 % | 2026-08-25 08:19 | ✅ |
83 −| [Irth Solutions](irth_solutions.md) | 3 | 100 % | 100 % | 100 % | 2026-08-25 07:26 | ✅ |
84 −| [Charger Logistics](charger_logistics_inc.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:13 | ✅ |
85 −| [Charlotte Tilbury](charlotte_tilbury.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:13 | ✅ |
86 −| [Financeit](financeit.md) | 2 | 100 % | 100 % | 0 % | 2026-08-25 08:24 | ✅ |
87 −| [Dentons](dentons_europe.md) | 2 | 50 % | 100 % | 100 % | 2026-08-25 08:19 | ✅ |
88 −| [HireHawk](hirehawk.md) | 2 | 50 % | 100 % | 100 % | 2026-08-25 08:39 | ✅ |
89 −| [Nuvei](nuvei.md) | 2 | 0 % | 100 % | 50 % | 2026-08-25 07:45 | ✅ |
90 −| [Power Factors](power_factors.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
91 −| [Stranger Soccer](stranger_soccer_1.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
92 −| [Valard Construction](valard_construction_lp.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:21 | ✅ |
93 −| [Atecna](atecna_montreal.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
94 −| [49 Solutions](x49_solutions_1.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
95 −| [Altom Transport](altom_transport.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
96 −| [Andy Transport](andy_transport.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
97 −| [Hire Ground Talent](hiregroundtalent.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
98 −| [Intuition Machines, Inc.](imachines.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 08:44 | ✅ |
99 −| [JoVE](jove.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:34 | ✅ |
100 −| [Kognitive Sales Solutions](kognitive_sales_solutions.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:35 | ✅ |
101 −| [Liferaft](liferaft.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:37 | ✅ |
102 −| [Omilia](omilia_natural_language_solutions_ua_ltd.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
103 −| [Onomatic](onomatic.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
104 −| [Parallelz](parallelz.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:45 | ✅ |
105 −| [Quandela](quandela.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
106 −| [Sangoma](sangoma_3.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 07:51 | ✅ |
107 −| [SuperMedic.ca](supermedic.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:04 | ✅ |
108 −| [Tristan Fleet](tristan_fleet_1.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
109 −| [WebProps.org](webprops.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:35 | ✅ |
110 −| [Snowed In Studios](snowed_in_studios_3.md) | 1 | 100 % | 0 % | 100 % | 2026-08-25 07:41 | ✅ |
111 −| [Flinks](flinks.md) | 0 | — | — | — | 2026-08-25 08:25 | ✅ |
112 −| [Gunnebo Canada](gunnebo_safe_storage_canada.md) | 0 | — | — | — | 2026-08-25 08:38 | ✅ |
42 +| [Solution SFT](solution_sft.md) | 755 | 28 % | 100 % | 7 % | 2026-09-21 17:34 | ✅ |
43 +| [TEHORA](tehora.md) | 390 | 0 % | 100 % | 30 % | 2026-09-21 17:37 | ✅ |
44 +| [Genetec](genetec_inc.md) | 93 | 0 % | 100 % | 17 % | 2026-09-21 16:59 | ✅ |
45 +| [ApexFocusGroup](afg.md) | 46 | 0 % | 100 % | 100 % | 2026-09-21 16:35 | ✅ |
46 +| [SOGECLAIR](sogeclair.md) | 44 | 2 % | 100 % | 2 % | 2026-09-21 17:34 | ✅ |
47 +| [Valsoft](valsoft_corp.md) | 40 | 12 % | 100 % | 18 % | 2026-09-21 17:40 | ✅ |
48 +| [Exportation et développement Canada (EDC)](export_development_canada.md) | 34 | 97 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
49 +| [Sapsol Technologies Inc](sapsol_technologies_inc_7.md) | 33 | 0 % | 100 % | 42 % | 2026-09-21 17:31 | ✅ |
50 +| [Side (PTW)](sideinc.md) | 25 | 4 % | 100 % | 60 % | 2026-09-21 17:33 | ✅ |
51 +| [Tecsys](tecsys.md) | 25 | 0 % | 100 % | 88 % | 2026-09-21 17:37 | ✅ |
52 +| [Keywords Studios](keywords_intl1.md) | 23 | 91 % | 100 % | 39 % | 2026-09-21 17:19 | ✅ |
53 +| [Baro RH](barorh.md) | 22 | 0 % | 100 % | 5 % | 2026-09-21 16:38 | ✅ |
54 +| [Starlink Aviation](starlink_aviation.md) | 20 | 0 % | 100 % | 10 % | 2026-09-21 17:35 | ✅ |
55 +| [Aviso Wealth](aviso.md) | 14 | 100 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
56 +| [Lamour](lamour.md) | 13 | 0 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
57 +| [FLO (AddÉnergie)](flo_addenergie.md) | 11 | 9 % | 100 % | 18 % | 2026-09-21 16:58 | ✅ |
58 +| [Rentokil Initial](rentokil_initial.md) | 11 | 73 % | 100 % | 9 % | 2026-09-21 17:30 | ✅ |
59 +| [Egon Zehnder](ezrecruiting.md) | 11 | 0 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
60 +| [Botpress](botpress.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
61 +| [Evolving Web](evolving_web.md) | 10 | 0 % | 100 % | 10 % | 2026-09-21 16:57 | ✅ |
62 +| [LIDD Consultants](lidd.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
63 +| [Nuovo Photography](nuovophotography.md) | 9 | 22 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
64 +| [Sweat Pants Agency](sweat_pants_agency.md) | 8 | 25 % | 100 % | 100 % | 2026-09-21 17:35 | ✅ |
65 +| [Eminent Valet](eminent_valet.md) | 7 | 100 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
66 +| [GHGSAT](ghgsat.md) | 6 | 0 % | 100 % | 17 % | 2026-09-21 16:59 | ✅ |
67 +| [Mila — Institut québécois d'IA](mila_2.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
68 +| [Devoted Studios](devoted_studios_1.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 16:52 | ✅ |
69 +| [Irth Solutions](irth_solutions.md) | 5 | 100 % | 100 % | 100 % | 2026-09-21 17:13 | ✅ |
70 +| [Delmar International](delmar_international_inc.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
71 +| [Allucent](allucent.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 16:36 | ✅ |
72 +| [Doman Building Materials Group Ltd](doman_building_materials.md) | 4 | 0 % | 100 % | 75 % | 2026-09-21 16:53 | ✅ |
73 +| [Flatgigs](flatgigs.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
74 +| [John Brooks Company](john_brooks_company.md) | 4 | 25 % | 100 % | 50 % | 2026-09-21 17:19 | ✅ |
75 +| [Power Factors](power_factors.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
76 +| [Flinks](flinks.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 16:58 | ✅ |
77 +| [Unit8](unit8.md) | 3 | 0 % | 100 % | 33 % | 2026-09-21 17:39 | ✅ |
78 +| [CSN Collision](csncollision.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
79 +| [CTS Foods Brokers](cts_foods_brokers_inc.md) | 3 | 33 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
80 +| [Damotech](damotech.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
81 +| [Liberty Mutual Canada](liberty_mutual_canada.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
82 +| [Mindrift](toloka_ai.md) | 3 | 100 % | 100 % | 100 % | 2026-09-21 17:38 | ✅ |
83 +| [Bardel Entertainment](bardel_entertainment.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
84 +| [Charlotte Tilbury](charlotte_tilbury.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:47 | ✅ |
85 +| [Financeit](financeit.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
86 +| [Dentons](dentons_europe.md) | 2 | 50 % | 100 % | 100 % | 2026-09-21 16:52 | ✅ |
87 +| [FinDev Canada](findevcanada.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
88 +| [HireHawk](hirehawk.md) | 2 | 50 % | 100 % | 100 % | 2026-09-21 17:09 | ✅ |
89 +| [Nuvei](nuvei.md) | 2 | 0 % | 100 % | 50 % | 2026-09-21 17:26 | ✅ |
90 +| [Stranger Soccer](stranger_soccer_1.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
91 +| [Valard Construction](valard_construction_lp.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
92 +| [Atecna](atecna_montreal.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
93 +| [Charger Logistics](charger_logistics_inc.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:47 | ✅ |
94 +| [49 Solutions](x49_solutions_1.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:44 | ✅ |
95 +| [Acuity Insights](acuity_insights.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 16:34 | ✅ |
96 +| [Andy Transport](andy_transport.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
97 +| [Hire Ground Talent](hiregroundtalent.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:09 | ✅ |
98 +| [Intuition Machines, Inc.](imachines.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:12 | ✅ |
99 +| [JoVE](jove.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:19 | ✅ |
100 +| [Kognitive Sales Solutions](kognitive_sales_solutions.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
101 +| [Liferaft](liferaft.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:21 | ✅ |
102 +| [Omilia](omilia_natural_language_solutions_ua_ltd.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:26 | ✅ |
103 +| [Onomatic](onomatic.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
104 +| [Sangoma](sangoma_3.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:31 | ✅ |
105 +| [SuperMedic.ca](supermedic.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:35 | ✅ |
106 +| [Tristan Fleet](tristan_fleet_1.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
107 +| [WebProps.org](webprops.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:43 | ✅ |
108 +| [Snowed In Studios](snowed_in_studios_3.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:34 | ✅ |
109 +| [Altom Transport](altom_transport.md) | 0 | — | — | — | 2026-09-21 16:37 | ✅ |
110 +| [Gunnebo Canada](gunnebo_safe_storage_canada.md) | 0 | — | — | — | 2026-09-21 17:08 | ✅ |
111 +| [Parallelz](parallelz.md) | 0 | — | — | — | 2026-09-21 17:27 | ✅ |
112 +| [Quandela](quandela.md) | 0 | — | — | — | 2026-09-21 17:29 | ✅ |
113 113
114 114 ## Licence / conformité
115 115
modified docs/connecteurs/ats-workday.md +243 −235
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-workday.md
7 7 Rôle : Fiche plateforme ATS workday — mécanique partagée + tableau des 233 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `workday`
14 14
15 −**233 employeurs connectés** via cette plateforme — **6106 offres actives**. Module partagé : `jobka/connectors/workday.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**233 employeurs connectés** via cette plateforme — **7523 offres actives**. Module partagé : `jobka/connectors/workday.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -44,239 +44,239 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
44 44
45 45 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
46 46 |---|---|---|---|---|---|---|
47 −| [Couche-Tard / Circle K](circlek.md) | 1032 | 62 % | 63 % | 0 % | 2026-08-25 08:15 | ✅ |
48 −| [Walmart Canada](walmart.md) | 1012 | 92 % | 91 % | 0 % | 2026-08-25 05:34 | ✅ |
49 −| [Mouvement Desjardins](desjardins.md) | 254 | 1 % | 92 % | 20 % | 2026-08-25 08:19 | ✅ |
50 −| [Rechercher des](gianttiger.md) | 229 | 0 % | 100 % | 0 % | 2026-08-25 08:29 | ✅ |
51 −| [Université McGill](mcgill.md) | 196 | 72 % | 100 % | 0 % | 2026-08-25 07:38 | ✅ |
52 −| [Consignaction (AQRCB)](consignaction.md) | 132 | 89 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
53 −| [BMO Groupe financier](bmo.md) | 111 | 85 % | 84 % | 15 % | 2026-08-25 08:04 | ✅ |
54 −| [Dentalcorp](dentalcorp.md) | 95 | 14 % | 99 % | 1 % | 2026-08-25 08:19 | ✅ |
55 −| [Gflenv](gflenv.md) | 82 | 4 % | 93 % | 0 % | 2026-08-25 08:29 | ✅ |
56 −| [Slihrms](slihrms.md) | 81 | 1 % | 93 % | 1 % | 2026-08-25 05:01 | ✅ |
57 −| [Globalhr](globalhr.md) | 80 | 0 % | 88 % | 1 % | 2026-08-25 08:31 | ✅ |
58 −| [Airbus Canada](airbus.md) | 79 | 1 % | 100 % | 0 % | 2026-08-25 07:58 | ✅ |
59 −| [Groupe Banque TD](td.md) | 75 | 96 % | 100 % | 99 % | 2026-08-25 05:12 | ✅ |
60 −| [Agropur](agropur.md) | 67 | 94 % | 100 % | 0 % | 2026-08-25 07:56 | ✅ |
61 −| [Autodesk](autodesk.md) | 67 | 90 % | 46 % | 21 % | 2026-08-25 08:00 | ✅ |
62 −| [Lifeworks](lifeworks.md) | 62 | 21 % | 87 % | 10 % | 2026-08-25 07:37 | ✅ |
63 −| [CAE](cae.md) | 58 | 7 % | 93 % | 0 % | 2026-08-25 08:05 | ✅ |
64 −| [Fairstone](fairstone.md) | 57 | 21 % | 91 % | 0 % | 2026-08-25 08:24 | ✅ |
65 −| [Manuvie](manulife.md) | 51 | 90 % | 71 % | 29 % | 2026-08-25 07:38 | ✅ |
66 −| [Banque CIBC](cibc.md) | 48 | 0 % | 100 % | 2 % | 2026-08-25 08:14 | ✅ |
67 −| [Beneva](beneva.md) | 47 | 4 % | 100 % | 2 % | 2026-08-25 08:03 | ✅ |
68 −| [Cogeco](cogeco.md) | 45 | 16 % | 62 % | 2 % | 2026-08-25 08:18 | ✅ |
69 −| [January 2027](pwc.md) | 45 | 2 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
70 −| [McKesson Canada](mckesson.md) | 44 | 80 % | 89 % | 89 % | 2026-08-25 07:38 | ✅ |
71 −| [Investissements PSP](investpsp.md) | 43 | 5 % | 100 % | 0 % | 2026-08-25 07:26 | ✅ |
72 −| [La Maison Simons](simons.md) | 43 | 0 % | 93 % | 0 % | 2026-08-25 04:59 | ✅ |
73 −| [Myhrabc](myhrabc.md) | 43 | 56 % | 56 % | 93 % | 2026-08-25 07:43 | ✅ |
74 −| [Uhaul](uhaul.md) | 42 | 0 % | 100 % | 0 % | 2026-08-25 05:19 | ✅ |
75 −| [Advanceauto](advanceauto.md) | 39 | 0 % | 33 % | 0 % | 2026-08-25 07:55 | ✅ |
76 −| [Promutuel Assurance](promutuel.md) | 36 | 3 % | 100 % | 17 % | 2026-08-25 07:46 | ✅ |
77 −| [Montreal Export Package Handler (18:00-23:00)](hcmportal.md) | 35 | 94 % | 94 % | 3 % | 2026-08-25 08:39 | ✅ |
78 −| [Ms](ms.md) | 34 | 0 % | 100 % | 100 % | 2026-08-25 07:42 | ✅ |
79 −| [Firststudent](firststudent.md) | 33 | 36 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
80 −| [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | 32 | 100 % | 100 % | 0 % | 2026-08-25 05:16 | ✅ |
81 −| [Service alimentaire Gordon](gfs.md) | 31 | 77 % | 100 % | 0 % | 2026-08-25 08:29 | ✅ |
82 −| [Intelcom (Dragonfly)](intelcomgroup.md) | 31 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
83 −| [Abinbev](abinbev.md) | 30 | 100 % | 100 % | 0 % | 2026-08-25 07:54 | ✅ |
84 −| [Gevernova](gevernova.md) | 30 | 30 % | 100 % | 10 % | 2026-08-25 08:28 | ✅ |
85 −| [Altasciences](altasciences.md) | 28 | 0 % | 100 % | 96 % | 2026-08-25 07:59 | ✅ |
86 −| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | 28 | 0 % | 93 % | 0 % | 2026-08-25 08:11 | ✅ |
87 −| [Alterra](alterra.md) | 28 | 54 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
88 −| [Scotts Canada (Fafard)](scottsmiraclegro.md) | 27 | 4 % | 100 % | 0 % | 2026-08-25 04:57 | ✅ |
89 −| [Comptable en immobilier](belron.md) | 27 | 0 % | 96 % | 0 % | 2026-08-25 08:03 | ✅ |
90 −| [Airliquidehr](airliquidehr.md) | 26 | 19 % | 100 % | 8 % | 2026-08-25 07:58 | ✅ |
91 −| [Associé des ventes](childrensplace.md) | 26 | 0 % | 23 % | 0 % | 2026-08-25 08:14 | ✅ |
92 −| [Best Buy Canada](bestbuycanada.md) | 26 | 0 % | 0 % | 0 % | 2026-08-25 08:03 | ✅ |
93 −| [Saputo](saputo.md) | 25 | 76 % | 100 % | 100 % | 2026-08-25 04:55 | ✅ |
94 −| [Groupeguilbault](groupeguilbault.md) | 25 | 0 % | 100 % | 0 % | 2026-08-25 08:32 | ✅ |
95 −| [Responsable Stratégie des Affaires](uniselect.md) | 25 | 8 % | 100 % | 0 % | 2026-08-25 05:19 | ✅ |
96 −| [FedEx Express Canada](fedex.md) | 24 | 100 % | 88 % | 0 % | 2026-08-25 08:24 | ✅ |
97 −| [Intact Corporation financière](intactfc.md) | 23 | 0 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
98 −| [OPENLANE Canada](openlane.md) | 23 | 30 % | 83 % | 4 % | 2026-08-25 07:45 | ✅ |
99 −| [EXFO](exfo.md) | 22 | 0 % | 100 % | 64 % | 2026-08-25 08:23 | ✅ |
100 −| [Rio Tinto](riotinto.md) | 22 | 0 % | 100 % | 5 % | 2026-08-25 07:50 | ✅ |
101 −| [Cineplex](cineplex.md) | 22 | 5 % | 100 % | 5 % | 2026-08-25 08:14 | ✅ |
102 −| [Search for](bcf.md) | 22 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
103 −| [Bdo](bdo.md) | 22 | 0 % | 100 % | 14 % | 2026-08-25 08:03 | ✅ |
104 −| [Rollsroyce](rollsroyce.md) | 22 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
105 −| [Monteur CVC 1 /HVAC Assembler 1](sunbeltrentals.md) | 22 | 0 % | 55 % | 5 % | 2026-08-25 05:03 | ✅ |
106 −| [Hubinternational](hubinternational.md) | 21 | 14 % | 86 % | 5 % | 2026-08-25 08:43 | ✅ |
107 −| [CAA-Québec](caaquebec.md) | 20 | 20 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
108 −| [JLL](jll.md) | 20 | 5 % | 90 % | 100 % | 2026-08-25 07:28 | ✅ |
109 −| [Estimator](tranetechnologies.md) | 19 | 100 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
110 −| [Ur](ur.md) | 19 | 11 % | 100 % | 0 % | 2026-08-25 05:21 | ✅ |
111 −| [Sales Associate III](tapestry.md) | 18 | 100 % | 100 % | 0 % | 2026-08-25 05:08 | ✅ |
112 −| [BDC](bdc.md) | 17 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
113 −| [Alsglobal](alsglobal.md) | 17 | 6 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
114 −| [Onelineage](onelineage.md) | 17 | 0 % | 94 % | 24 % | 2026-08-25 07:45 | ✅ |
115 −| [Sandvik](sandvik.md) | 17 | 0 % | 0 % | 12 % | 2026-08-25 07:49 | ✅ |
116 −| [Cuisinier(ère) 2, Restaurant Marcus & Lounge (Sur appel) / Cook 2 ...](fourseasons.md) | 16 | 6 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
117 −| [Sanimax](sanimax.md) | 16 | 38 % | 100 % | 0 % | 2026-08-25 07:51 | ✅ |
118 −| [Onepoint (nventive / Logient)](onepoint.md) | 16 | 0 % | 0 % | 0 % | 2026-08-25 07:48 | ✅ |
119 −| [Alcoa Canada](alcoa.md) | 15 | 13 % | 40 % | 0 % | 2026-08-25 07:58 | ✅ |
120 −| [iA Groupe financier](ia_groupe.md) | 14 | 100 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
121 −| [Allstate Canada](allstate.md) | 14 | 21 % | 86 % | 14 % | 2026-08-25 07:59 | ✅ |
122 −| [Comptable](cloudimperiumgames.md) | 14 | 0 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
123 −| [Sci](sci.md) | 14 | 21 % | 71 % | 7 % | 2026-08-25 04:57 | ✅ |
124 −| [Clinical Research Associate](syneoshealth.md) | 14 | 0 % | 100 % | 0 % | 2026-08-25 05:05 | ✅ |
125 −| [Investissement Québec](investquebec.md) | 13 | 8 % | 100 % | 0 % | 2026-08-25 07:26 | ✅ |
126 −| [Avisbudget](avisbudget.md) | 13 | 0 % | 100 % | 0 % | 2026-08-25 08:02 | ✅ |
127 −| [Gea](gea.md) | 13 | 31 % | 100 % | 0 % | 2026-08-25 08:27 | ✅ |
128 −| [Chef de secteur](gsknch.md) | 13 | 8 % | 92 % | 0 % | 2026-08-25 08:32 | ✅ |
129 −| [Peoplecorporation](peoplecorporation.md) | 13 | 0 % | 77 % | 15 % | 2026-08-25 07:45 | ✅ |
130 −| [Ryder](ryder.md) | 13 | 100 % | 31 % | 0 % | 2026-08-25 07:51 | ✅ |
131 −| [Fund Accountant / Comptable de Fonds](sagardholdings.md) | 13 | 23 % | 100 % | 0 % | 2026-08-25 07:51 | ✅ |
132 −| [Fempro (First Quality)](firstquality.md) | 13 | 38 % | 0 % | 0 % | 2026-08-25 08:24 | ✅ |
133 −| [JG Rive-Sud (GFS)](jgrivesud.md) | 12 | 75 % | 100 % | 0 % | 2026-08-25 07:27 | ✅ |
134 −| [Aritzia](aritzia.md) | 12 | 67 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
135 −| [Chef d'équipe Agile](aspentech.md) | 12 | 0 % | 100 % | 0 % | 2026-08-25 08:00 | ✅ |
136 −| [AVP](aviva.md) | 12 | 25 % | 83 % | 0 % | 2026-08-25 08:02 | ✅ |
137 −| [Administrateur comptable principal](bird.md) | 12 | 0 % | 100 % | 8 % | 2026-08-25 08:04 | ✅ |
138 −| [Bridgestone](bridgestone.md) | 12 | 33 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
139 −| [Iqvia](iqvia.md) | 12 | 100 % | 67 % | 8 % | 2026-08-25 07:26 | ✅ |
140 −| [GSK](gsk.md) | 11 | 0 % | 82 % | 0 % | 2026-08-25 08:32 | ✅ |
141 −| [Tmx](tmx.md) | 11 | 0 % | 100 % | 0 % | 2026-08-25 05:16 | ✅ |
142 −| [Unitytech](unitytech.md) | 11 | 64 % | 100 % | 0 % | 2026-08-25 05:20 | ✅ |
143 −| [Medavie](medaviehs.md) | 11 | 73 % | 0 % | 9 % | 2026-08-25 07:48 | ✅ |
144 −| [Abbott](abbott.md) | 10 | 20 % | 90 % | 40 % | 2026-08-25 07:54 | ✅ |
145 −| [VF Corporation (The North Face, Vans)](vfc.md) | 10 | 80 % | 100 % | 0 % | 2026-08-25 05:22 | ✅ |
146 −| [Cadence](cadence.md) | 10 | 40 % | 70 % | 0 % | 2026-08-25 08:05 | ✅ |
147 −| [Hitachi](hitachi.md) | 10 | 10 % | 100 % | 100 % | 2026-08-25 08:41 | ✅ |
148 −| [Nortekinc](nortekinc.md) | 10 | 50 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
149 −| [Frigoriste](vantagedc.md) | 10 | 0 % | 100 % | 0 % | 2026-08-25 05:22 | ✅ |
150 −| [Canadian Tire](canadiantirecorporation.md) | 9 | 56 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
151 −| [Sun Life](sunlife.md) | 9 | 22 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
152 −| [Fieracapital](fieracapital.md) | 9 | 0 % | 100 % | 0 % | 2026-08-25 08:24 | ✅ |
153 −| [Coordinateur, Achats Numériques](dentsuaegis.md) | 8 | 100 % | 88 % | 25 % | 2026-08-25 08:19 | ✅ |
154 −| [Comptable de projet / Project Accountant](ellisdon.md) | 8 | 25 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
155 −| [Préparateur de commandes](sysco.md) | 8 | 0 % | 100 % | 0 % | 2026-08-25 05:07 | ✅ |
156 −| [Groupe Meloche](melocheinc.md) | 8 | 88 % | 0 % | 0 % | 2026-08-25 07:12 | ✅ |
157 −| [Fonds de solidarité FTQ](fondsftq.md) | 7 | 0 % | 100 % | 100 % | 2026-08-25 08:25 | ✅ |
158 −| [Pfizer Canada](pfizer.md) | 7 | 100 % | 43 % | 29 % | 2026-08-25 07:46 | ✅ |
159 −| [Blgllp](blgllp.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
160 −| [Associé (e) d'entrepôt](cardinalhealth.md) | 7 | 71 % | 100 % | 0 % | 2026-08-25 08:07 | ✅ |
161 −| [Ciena](ciena.md) | 7 | 14 % | 57 % | 100 % | 2026-08-25 08:14 | ✅ |
162 −| [Colliers](colliers.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
163 −| [Responsable bilingue du marketing événementiel / Event ...](fil.md) | 7 | 100 % | 100 % | 86 % | 2026-08-25 08:24 | ✅ |
164 −| [Msd](msd.md) | 7 | 86 % | 100 % | 0 % | 2026-08-25 07:43 | ✅ |
165 −| [Northbridgefinancial](northbridgefinancial.md) | 7 | 0 % | 100 % | 0 % | 2026-08-25 07:44 | ✅ |
166 −| [Associé principal (Ressources de gestion)](roberthalf.md) | 7 | 0 % | 71 % | 14 % | 2026-08-25 07:50 | ✅ |
167 −| [Carrier](carrier.md) | 7 | 43 % | 0 % | 100 % | 2026-08-25 08:09 | ✅ |
168 −| [Haemonetics](haemonetics.md) | 7 | 0 % | 0 % | 0 % | 2026-08-25 08:39 | ✅ |
169 −| [Church & Dwight Canada](churchdwight.md) | 6 | 0 % | 100 % | 0 % | 2026-08-25 08:14 | ✅ |
170 −| [Logistics Associate](harry.md) | 6 | 17 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
171 −| [Jci](jci.md) | 6 | 100 % | 100 % | 0 % | 2026-08-25 07:27 | ✅ |
172 −| [Puma](puma.md) | 6 | 100 % | 100 % | 0 % | 2026-08-25 07:47 | ✅ |
173 −| [Warner Bros. Discovery (WB Games Montréal)](warnerbros.md) | 6 | 0 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
174 −| [Aliaxis](aliaxis.md) | 6 | 33 % | 0 % | 0 % | 2026-08-25 07:58 | ✅ |
175 −| [Chanel](cc.md) | 6 | 17 % | 0 % | 0 % | 2026-08-25 08:11 | ✅ |
176 −| [Plusgrade](plusgrade.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
177 −| [Raymond Chabot Grant Thornton](rcgt.md) | 5 | 0 % | 100 % | 20 % | 2026-08-25 07:49 | ✅ |
178 −| [Senior Azure Solution Architect (Montreal – French Speaking)](accenture.md) | 5 | 100 % | 100 % | 0 % | 2026-08-25 07:55 | ✅ |
179 −| [Avocat·e de litige / Litigation Associate](clydeco.md) | 5 | 0 % | 100 % | 80 % | 2026-08-25 08:17 | ✅ |
180 −| [Galderma](galderma.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
181 −| [Gategroup](gategroup.md) | 5 | 60 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
182 −| [Interpublic](interpublic.md) | 5 | 0 % | 100 % | 100 % | 2026-08-25 07:26 | ✅ |
183 −| [Kiongroup](kiongroup.md) | 5 | 80 % | 80 % | 0 % | 2026-08-25 07:35 | ✅ |
184 −| [Lighting](lighting.md) | 5 | 100 % | 100 % | 0 % | 2026-08-25 07:37 | ✅ |
185 −| [Medline](medline.md) | 5 | 100 % | 100 % | 20 % | 2026-08-25 07:38 | ✅ |
186 −| [Moneris](moneris.md) | 5 | 100 % | 100 % | 60 % | 2026-08-25 07:41 | ✅ |
187 −| [Reddyice](reddyice.md) | 5 | 100 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
188 −| [Swarovski](swarovski.md) | 5 | 0 % | 100 % | 0 % | 2026-08-25 05:04 | ✅ |
189 −| [C.H. Guenther & Son](chg.md) | 5 | 40 % | 0 % | 0 % | 2026-08-25 08:13 | ✅ |
190 −| [3M](x3m.md) | 4 | 50 % | 100 % | 100 % | 2026-08-25 05:35 | ✅ |
191 −| [Danaher](danaher.md) | 4 | 75 % | 75 % | 25 % | 2026-08-25 08:19 | ✅ |
192 −| [Associé au Marketing et Opérations Clients – Est](diageo.md) | 4 | 100 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
193 −| [Associé aux ventes/Retail Sales Associate](gapinc.md) | 4 | 0 % | 25 % | 0 % | 2026-08-25 08:26 | ✅ |
194 −| [Medtronic](medtronic.md) | 4 | 100 % | 100 % | 100 % | 2026-08-25 07:38 | ✅ |
195 −| [Nrfcanada](nrfcanada.md) | 4 | 25 % | 75 % | 50 % | 2026-08-25 07:44 | ✅ |
196 −| [Agent(e) de liaison médicale et scientifique, biologiques – Québec ...](organon.md) | 4 | 25 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
197 −| [Sbdinc](sbdinc.md) | 4 | 75 % | 100 % | 0 % | 2026-08-25 04:56 | ✅ |
198 −| [Testing, Automation and Cloud Validation](sglottery.md) | 4 | 25 % | 100 % | 0 % | 2026-08-25 04:58 | ✅ |
199 −| [Trugreen](trugreen.md) | 4 | 50 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
200 −| [Brasseries Sleeman (Unibroue)](sleeman.md) | 3 | 33 % | 100 % | 0 % | 2026-08-25 04:59 | ✅ |
201 −| [Fiserv](fiserv.md) | 3 | 67 % | 100 % | 0 % | 2026-08-25 08:25 | ✅ |
202 −| [Rechercher des](canassurance.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 08:05 | ✅ |
203 −| [Cisco](cisco.md) | 3 | 100 % | 100 % | 67 % | 2026-08-25 08:16 | ✅ |
204 −| [Conagrabrands](conagrabrands.md) | 3 | 100 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
205 −| [Dxctechnology](dxctechnology.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 08:21 | ✅ |
206 −| [Hpe](hpe.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 08:43 | ✅ |
207 −| [Michelin](michelinhr.md) | 3 | 0 % | 100 % | 100 % | 2026-08-25 07:40 | ✅ |
208 −| [Air Traffic Control (ATC)](navcanada.md) | 3 | 33 % | 67 % | 67 % | 2026-08-25 07:43 | ✅ |
209 −| [Rbc](rbc.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
210 −| [Electromechanic](toppan.md) | 3 | 33 % | 100 % | 0 % | 2026-08-25 05:16 | ✅ |
211 −| [Tsys](tsys.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
212 −| [Valmet](valmet.md) | 3 | 0 % | 100 % | 0 % | 2026-08-25 05:21 | ✅ |
213 −| [Zebra](zebra.md) | 3 | 100 % | 100 % | 0 % | 2026-08-25 05:36 | ✅ |
214 −| [HP](hp.md) | 3 | 100 % | 0 % | 0 % | 2026-08-25 08:41 | ✅ |
215 −| [Robover (ODL Canada)](odl.md) | 3 | 0 % | 0 % | 0 % | 2026-08-25 07:48 | ✅ |
216 −| [Reworld](reworld.md) | 3 | 33 % | 0 % | 0 % | 2026-08-25 07:49 | ✅ |
217 −| [SBM Management](sbmmanagement.md) | 3 | 67 % | 0 % | 0 % | 2026-08-25 07:50 | ✅ |
218 −| [Weir Group](weir.md) | 3 | 0 % | 0 % | 67 % | 2026-08-25 07:51 | ✅ |
219 −| [Suncor Énergie](suncor.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:03 | ✅ |
220 −| [Amgen](amgen.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:59 | ✅ |
221 −| [Brambles](brambles.md) | 2 | 100 % | 100 % | 0 % | 2026-08-25 08:04 | ✅ |
222 −| [Carters](carters.md) | 2 | 50 % | 100 % | 50 % | 2026-08-25 08:10 | ✅ |
223 −| [Cdpqfiliales](cdpqfiliales.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:11 | ✅ |
224 −| [Cerence](cerence.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:12 | ✅ |
225 −| [Associé(e) au service](ci.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:14 | ✅ |
226 −| [Production Operator II](coorstek.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:18 | ✅ |
227 −| [Avocat en immigration d'affaires américaine](fragomen.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:26 | ✅ |
228 −| [Freseniusmedicalcare](freseniusmedicalcare.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 08:26 | ✅ |
229 −| [Agent service à la clientèle et soutien comptable](harriscomputer.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 08:39 | ✅ |
230 −| [Sales Consultant Montreal](miele.md) | 2 | 100 % | 100 % | 50 % | 2026-08-25 07:41 | ✅ |
231 −| [Motorolasolutions](motorolasolutions.md) | 2 | 50 % | 100 % | 0 % | 2026-08-25 07:42 | ✅ |
232 −| [Novartis](novartis.md) | 2 | 0 % | 100 % | 100 % | 2026-08-25 07:44 | ✅ |
233 −| [Nutreco](nutreco.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
234 −| [Republic](republic.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 07:50 | ✅ |
235 −| [Warehouse Team Member](tricorbraun.md) | 2 | 0 % | 100 % | 0 % | 2026-08-25 05:18 | ✅ |
236 −| [Bilingual Fire Protection Sales Representative](victaulic.md) | 2 | 100 % | 100 % | 100 % | 2026-08-25 05:23 | ✅ |
237 −| [Zoetis](zoetis.md) | 2 | 0 % | 100 % | 50 % | 2026-08-25 05:36 | ✅ |
238 −| [Innocap](innocap.md) | 2 | 0 % | 0 % | 0 % | 2026-08-25 08:44 | ✅ |
239 −| [Guillevin International](guillevin.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:38 | ✅ |
240 −| [ZOLL Medical](zoll.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:36 | ✅ |
241 −| [Allegion](allegion.md) | 1 | 0 % | 0 % | 100 % | 2026-08-25 07:58 | ✅ |
242 −| [Bdx](bdx.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:03 | ✅ |
243 −| [Cabotcorp](cabotcorp.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
244 −| [Production Support Roles](canadagoose.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:05 | ✅ |
245 −| [Dupont](dupont.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:20 | ✅ |
246 −| [Enbridge](enbridge.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:22 | ✅ |
247 −| [Fednav](fednav.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:24 | ✅ |
248 −| [Medical Scientist HIV, Quebec](gilead.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 08:30 | ✅ |
249 −| [Gipi](gipi.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:30 | ✅ |
250 −| [Huron](huron.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 08:43 | ✅ |
251 −| [Imerys](imerys.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 08:44 | ✅ |
252 −| [Jj](jj.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:28 | ✅ |
253 −| [Kone](kone.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 07:36 | ✅ |
254 −| [Field Service Representative](orthoclinical.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:45 | ✅ |
255 −| [Poolcorp](poolcorp.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:46 | ✅ |
256 −| [Prysmiangroup](prysmiangroup.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 07:47 | ✅ |
257 −| [Regional Representative, Gatineau](psacunion.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:47 | ✅ |
258 −| [Quadreal](quadreal.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 07:49 | ✅ |
259 −| [Infirmier(ère), Salle de réveil](shrinerschildrens.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 04:58 | ✅ |
260 −| [Silabs](silabs.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 04:58 | ✅ |
261 −| [Smucker](smucker.md) | 1 | 100 % | 100 % | 100 % | 2026-08-25 05:02 | ✅ |
262 −| [Thales Canada](thales.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:14 | ✅ |
263 −| [Topbuild](topbuild.md) | 1 | 100 % | 100 % | 0 % | 2026-08-25 05:16 | ✅ |
264 −| [Topcon](topcon.md) | 1 | 0 % | 100 % | 100 % | 2026-08-25 05:16 | ✅ |
265 −| [Wolseley Canada](wolseley.md) | 1 | 100 % | 0 % | 100 % | 2026-08-25 05:35 | ✅ |
266 −| [Warehouse Associate](zepinc.md) | 1 | 0 % | 100 % | 0 % | 2026-08-25 05:36 | ✅ |
267 −| [Groupe Altus](altusgroup.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 07:59 | ✅ |
268 −| [Arterra Wines Canada](awc.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 08:02 | ✅ |
269 −| [Cambria](cambria.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 08:05 | ✅ |
270 −| [Equisoft](equisoft.md) | 1 | 0 % | 0 % | 100 % | 2026-08-25 08:22 | ✅ |
271 −| [Autorité des marchés financiers (AMF)](lautorite.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 07:11 | ✅ |
272 −| [Loblaw (Provigo / Maxi)](myview.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:11 | ✅ |
273 −| [Patterson Companies](pattersoncompanies.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:48 | ✅ |
274 −| [Malvern Panalytical (Spectris)](spectris.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:50 | ✅ |
275 −| [Simpson Strong-Tie](strongtie.md) | 1 | 100 % | 0 % | 0 % | 2026-08-25 07:51 | ✅ |
276 −| [Workwear Outfitters](workwear.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 07:51 | ✅ |
277 −| [Shell Canada](shell.md) | 0 | — | — | — | 2026-08-25 04:58 | ✅ |
278 −| [Fccfac](fccfac.md) | 0 | — | — | — | 2026-08-25 08:24 | ✅ |
279 −| [Synnex](synnex.md) | 0 | — | — | — | 2026-08-25 05:05 | ✅ |
47 +| [Walmart Canada](walmart.md) | 994 | 96 % | 90 % | 0 % | 2026-09-21 17:43 | ✅ |
48 +| [Couche-Tard / Circle K](circlek.md) | 987 | 64 % | 65 % | 0 % | 2026-09-21 16:49 | ✅ |
49 +| [Globalhr](globalhr.md) | 351 | 0 % | 83 % | 4 % | 2026-09-21 17:00 | ✅ |
50 +| [Mouvement Desjardins](desjardins.md) | 263 | 2 % | 94 % | 22 % | 2026-09-21 16:52 | ✅ |
51 +| [Slihrms](slihrms.md) | 258 | 9 % | 91 % | 1 % | 2026-09-21 17:34 | ✅ |
52 +| [Rechercher des](gianttiger.md) | 240 | 1 % | 100 % | 0 % | 2026-09-21 16:59 | ✅ |
53 +| [Université McGill](mcgill.md) | 213 | 72 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
54 +| [Groupe Banque TD](td.md) | 205 | 96 % | 92 % | 100 % | 2026-09-21 17:37 | ✅ |
55 +| [Consignaction (AQRCB)](consignaction.md) | 182 | 86 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
56 +| [Airbus Canada](airbus.md) | 165 | 5 % | 99 % | 1 % | 2026-09-21 16:35 | ✅ |
57 +| [Intact Corporation financière](intactfc.md) | 143 | 0 % | 76 % | 1 % | 2026-09-21 17:12 | ✅ |
58 +| [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | 142 | 97 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
59 +| [BMO Groupe financier](bmo.md) | 93 | 86 % | 83 % | 14 % | 2026-09-21 16:40 | ✅ |
60 +| [Dentalcorp](dentalcorp.md) | 92 | 13 % | 100 % | 1 % | 2026-09-21 16:52 | ✅ |
61 +| [iA Groupe financier](ia_groupe.md) | 90 | 100 % | 96 % | 8 % | 2026-09-21 17:12 | ✅ |
62 +| [Promutuel Assurance](promutuel.md) | 81 | 2 % | 100 % | 9 % | 2026-09-21 17:27 | ✅ |
63 +| [CAE](cae.md) | 78 | 22 % | 97 % | 1 % | 2026-09-21 16:41 | ✅ |
64 +| [Intelcom (Dragonfly)](intelcomgroup.md) | 77 | 0 % | 99 % | 0 % | 2026-09-21 17:13 | ✅ |
65 +| [Banque CIBC](cibc.md) | 69 | 0 % | 97 % | 9 % | 2026-09-21 16:48 | ✅ |
66 +| [Gflenv](gflenv.md) | 67 | 3 % | 91 % | 1 % | 2026-09-21 16:59 | ✅ |
67 +| [Gevernova](gevernova.md) | 65 | 34 % | 94 % | 20 % | 2026-09-21 16:59 | ✅ |
68 +| [Agropur](agropur.md) | 64 | 94 % | 97 % | 2 % | 2026-09-21 16:35 | ✅ |
69 +| [Lifeworks](lifeworks.md) | 63 | 25 % | 84 % | 14 % | 2026-09-21 17:21 | ✅ |
70 +| [January 2027](pwc.md) | 61 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
71 +| [Beneva](beneva.md) | 56 | 4 % | 100 % | 4 % | 2026-09-21 16:39 | ✅ |
72 +| [Autodesk](autodesk.md) | 54 | 83 % | 41 % | 20 % | 2026-09-21 16:38 | ✅ |
73 +| [Manuvie](manulife.md) | 54 | 83 % | 65 % | 28 % | 2026-09-21 17:22 | ✅ |
74 +| [Fairstone](fairstone.md) | 54 | 44 % | 91 % | 0 % | 2026-09-21 16:57 | ✅ |
75 +| [Bdo](bdo.md) | 50 | 10 % | 76 % | 14 % | 2026-09-21 16:39 | ✅ |
76 +| [Saputo](saputo.md) | 47 | 87 % | 100 % | 100 % | 2026-09-21 17:32 | ✅ |
77 +| [Advanceauto](advanceauto.md) | 46 | 0 % | 50 % | 0 % | 2026-09-21 16:34 | ✅ |
78 +| [La Maison Simons](simons.md) | 45 | 0 % | 91 % | 0 % | 2026-09-21 17:33 | ✅ |
79 +| [Alterra](alterra.md) | 45 | 62 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
80 +| [Investissements PSP](investpsp.md) | 44 | 2 % | 100 % | 0 % | 2026-09-21 17:13 | ✅ |
81 +| [Cogeco](cogeco.md) | 43 | 14 % | 49 % | 0 % | 2026-09-21 16:50 | ✅ |
82 +| [McKesson Canada](mckesson.md) | 43 | 79 % | 88 % | 86 % | 2026-09-21 17:23 | ✅ |
83 +| [Firststudent](firststudent.md) | 37 | 43 % | 97 % | 0 % | 2026-09-21 16:57 | ✅ |
84 +| [Myhrabc](myhrabc.md) | 37 | 49 % | 51 % | 86 % | 2026-09-21 17:24 | ✅ |
85 +| [EXFO](exfo.md) | 35 | 0 % | 100 % | 51 % | 2026-09-21 16:57 | ✅ |
86 +| [Best Buy Canada](bestbuycanada.md) | 35 | 0 % | 49 % | 0 % | 2026-09-21 16:39 | ✅ |
87 +| [Ms](ms.md) | 34 | 0 % | 100 % | 97 % | 2026-09-21 17:24 | ✅ |
88 +| [Onepoint (nventive / Logient)](onepoint.md) | 34 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
89 +| [OPENLANE Canada](openlane.md) | 33 | 21 % | 94 % | 3 % | 2026-09-21 17:26 | ✅ |
90 +| [Uhaul](uhaul.md) | 33 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
91 +| [Altasciences](altasciences.md) | 31 | 6 % | 94 % | 97 % | 2026-09-21 16:36 | ✅ |
92 +| [Estimator](tranetechnologies.md) | 30 | 100 % | 97 % | 7 % | 2026-09-21 17:38 | ✅ |
93 +| [Scotts Canada (Fafard)](scottsmiraclegro.md) | 28 | 4 % | 100 % | 0 % | 2026-09-21 17:32 | ✅ |
94 +| [Abinbev](abinbev.md) | 28 | 89 % | 100 % | 0 % | 2026-09-21 16:34 | ✅ |
95 +| [Galderma](galderma.md) | 28 | 14 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
96 +| [Rollsroyce](rollsroyce.md) | 28 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
97 +| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | 27 | 0 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
98 +| [Associé des ventes](childrensplace.md) | 27 | 0 % | 22 % | 0 % | 2026-09-21 16:47 | ✅ |
99 +| [Service alimentaire Gordon](gfs.md) | 26 | 69 % | 100 % | 0 % | 2026-09-21 16:59 | ✅ |
100 +| [Rio Tinto](riotinto.md) | 25 | 4 % | 100 % | 8 % | 2026-09-21 17:30 | ✅ |
101 +| [Airliquidehr](airliquidehr.md) | 25 | 20 % | 100 % | 8 % | 2026-09-21 16:35 | ✅ |
102 +| [Alcoa Canada](alcoa.md) | 24 | 42 % | 29 % | 0 % | 2026-09-21 16:36 | ✅ |
103 +| [Sun Life](sunlife.md) | 24 | 8 % | 67 % | 0 % | 2026-09-21 17:35 | ✅ |
104 +| [Cineplex](cineplex.md) | 24 | 4 % | 96 % | 4 % | 2026-09-21 16:48 | ✅ |
105 +| [FedEx Express Canada](fedex.md) | 24 | 100 % | 88 % | 0 % | 2026-09-21 16:57 | ✅ |
106 +| [Search for](bcf.md) | 24 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
107 +| [Montreal Export Package Handler (18:00-23:00)](hcmportal.md) | 24 | 88 % | 92 % | 4 % | 2026-09-21 17:09 | ✅ |
108 +| [Tmx](tmx.md) | 24 | 0 % | 67 % | 0 % | 2026-09-21 17:38 | ✅ |
109 +| [Wolseley Canada](wolseley.md) | 23 | 0 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
110 +| [AVP](aviva.md) | 22 | 14 % | 86 % | 0 % | 2026-09-21 16:38 | ✅ |
111 +| [Comptable en immobilier](belron.md) | 22 | 5 % | 95 % | 0 % | 2026-09-21 16:39 | ✅ |
112 +| [Unitytech](unitytech.md) | 22 | 91 % | 82 % | 36 % | 2026-09-21 17:39 | ✅ |
113 +| [JLL](jll.md) | 21 | 5 % | 86 % | 100 % | 2026-09-21 17:14 | ✅ |
114 +| [Alsglobal](alsglobal.md) | 21 | 5 % | 95 % | 0 % | 2026-09-21 16:36 | ✅ |
115 +| [Responsable Stratégie des Affaires](uniselect.md) | 21 | 14 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
116 +| [Ur](ur.md) | 21 | 0 % | 100 % | 0 % | 2026-09-21 17:39 | ✅ |
117 +| [Monteur CVC 1 /HVAC Assembler 1](sunbeltrentals.md) | 20 | 0 % | 65 % | 0 % | 2026-09-21 17:35 | ✅ |
118 +| [Sandvik](sandvik.md) | 19 | 0 % | 21 % | 0 % | 2026-09-21 17:31 | ✅ |
119 +| [CAA-Québec](caaquebec.md) | 18 | 28 % | 100 % | 6 % | 2026-09-21 16:40 | ✅ |
120 +| [Groupeguilbault](groupeguilbault.md) | 18 | 0 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
121 +| [Préparateur de commandes](sysco.md) | 18 | 6 % | 94 % | 0 % | 2026-09-21 17:36 | ✅ |
122 +| [Hubinternational](hubinternational.md) | 17 | 18 % | 82 % | 6 % | 2026-09-21 17:11 | ✅ |
123 +| [Jci](jci.md) | 17 | 100 % | 94 % | 6 % | 2026-09-21 17:13 | ✅ |
124 +| [Onelineage](onelineage.md) | 17 | 6 % | 100 % | 12 % | 2026-09-21 17:26 | ✅ |
125 +| [Fund Accountant / Comptable de Fonds](sagardholdings.md) | 17 | 18 % | 100 % | 0 % | 2026-09-21 17:31 | ✅ |
126 +| [Sci](sci.md) | 17 | 29 % | 88 % | 6 % | 2026-09-21 17:32 | ✅ |
127 +| [Sanimax](sanimax.md) | 16 | 38 % | 100 % | 0 % | 2026-09-21 17:31 | ✅ |
128 +| [Sales Associate III](tapestry.md) | 16 | 100 % | 100 % | 0 % | 2026-09-21 17:36 | ✅ |
129 +| [Allstate Canada](allstate.md) | 15 | 27 % | 80 % | 13 % | 2026-09-21 16:36 | ✅ |
130 +| [Gea](gea.md) | 15 | 33 % | 100 % | 0 % | 2026-09-21 16:59 | ✅ |
131 +| [GSK](gsk.md) | 14 | 0 % | 93 % | 0 % | 2026-09-21 17:02 | ✅ |
132 +| [Pfizer Canada](pfizer.md) | 14 | 100 % | 7 % | 7 % | 2026-09-21 17:27 | ✅ |
133 +| [Comptable de projet / Project Accountant](ellisdon.md) | 14 | 21 % | 93 % | 0 % | 2026-09-21 16:56 | ✅ |
134 +| [Responsable bilingue du marketing événementiel / Event ...](fil.md) | 14 | 100 % | 71 % | 64 % | 2026-09-21 16:57 | ✅ |
135 +| [Clinical Research Associate](syneoshealth.md) | 14 | 0 % | 93 % | 14 % | 2026-09-21 17:35 | ✅ |
136 +| [Medavie](medaviehs.md) | 14 | 79 % | 36 % | 7 % | 2026-09-21 17:23 | ✅ |
137 +| [JG Rive-Sud (GFS)](jgrivesud.md) | 13 | 69 % | 100 % | 0 % | 2026-09-21 17:13 | ✅ |
138 +| [Aritzia](aritzia.md) | 13 | 62 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
139 +| [Bridgestone](bridgestone.md) | 13 | 38 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
140 +| [Fieracapital](fieracapital.md) | 13 | 31 % | 69 % | 0 % | 2026-09-21 16:57 | ✅ |
141 +| [Peoplecorporation](peoplecorporation.md) | 13 | 15 % | 62 % | 23 % | 2026-09-21 17:27 | ✅ |
142 +| [Investissement Québec](investquebec.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 17:13 | ✅ |
143 +| [Senior Azure Solution Architect (Montreal – French Speaking)](accenture.md) | 12 | 100 % | 42 % | 8 % | 2026-09-21 16:34 | ✅ |
144 +| [Comptable](cloudimperiumgames.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
145 +| [Hitachi](hitachi.md) | 12 | 8 % | 100 % | 100 % | 2026-09-21 17:11 | ✅ |
146 +| [Ryder](ryder.md) | 12 | 100 % | 33 % | 0 % | 2026-09-21 17:31 | ✅ |
147 +| [Frigoriste](vantagedc.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 17:40 | ✅ |
148 +| [C.H. Guenther & Son](chg.md) | 12 | 58 % | 100 % | 0 % | 2026-09-21 16:47 | ✅ |
149 +| [VF Corporation (The North Face, Vans)](vfc.md) | 11 | 82 % | 100 % | 0 % | 2026-09-21 17:40 | ✅ |
150 +| [Cuisinier(ère) 2, Restaurant Marcus & Lounge (Sur appel) / Cook 2 ...](fourseasons.md) | 11 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
151 +| [Huron](huron.md) | 11 | 100 % | 45 % | 100 % | 2026-09-21 17:12 | ✅ |
152 +| [Fempro (First Quality)](firstquality.md) | 11 | 55 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
153 +| [Canadian Tire](canadiantirecorporation.md) | 10 | 60 % | 90 % | 0 % | 2026-09-21 16:41 | ✅ |
154 +| [Administrateur comptable principal](bird.md) | 10 | 0 % | 100 % | 10 % | 2026-09-21 16:39 | ✅ |
155 +| [Cadence](cadence.md) | 10 | 40 % | 70 % | 0 % | 2026-09-21 16:40 | ✅ |
156 +| [Colliers](colliers.md) | 10 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
157 +| [Fonds de solidarité FTQ](fondsftq.md) | 9 | 0 % | 100 % | 100 % | 2026-09-21 16:58 | ✅ |
158 +| [Chef d'équipe Agile](aspentech.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
159 +| [Avisbudget](avisbudget.md) | 9 | 11 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
160 +| [Coordinateur, Achats Numériques](dentsuaegis.md) | 9 | 89 % | 89 % | 22 % | 2026-09-21 16:52 | ✅ |
161 +| [Fccfac](fccfac.md) | 9 | 100 % | 44 % | 0 % | 2026-09-21 16:57 | ✅ |
162 +| [Puma](puma.md) | 9 | 100 % | 100 % | 0 % | 2026-09-21 17:28 | ✅ |
163 +| [Allegion](allegion.md) | 8 | 62 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
164 +| [Blgllp](blgllp.md) | 8 | 25 % | 75 % | 0 % | 2026-09-21 16:39 | ✅ |
165 +| [Associé (e) d'entrepôt](cardinalhealth.md) | 8 | 62 % | 88 % | 0 % | 2026-09-21 16:41 | ✅ |
166 +| [Moneris](moneris.md) | 8 | 100 % | 88 % | 38 % | 2026-09-21 17:24 | ✅ |
167 +| [Northbridgefinancial](northbridgefinancial.md) | 8 | 0 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
168 +| [Abbott](abbott.md) | 7 | 14 % | 100 % | 43 % | 2026-09-21 16:33 | ✅ |
169 +| [Chef de secteur](gsknch.md) | 7 | 0 % | 100 % | 0 % | 2026-09-21 17:02 | ✅ |
170 +| [Tsys](tsys.md) | 7 | 43 % | 57 % | 0 % | 2026-09-21 17:38 | ✅ |
171 +| [Aliaxis](aliaxis.md) | 7 | 43 % | 86 % | 0 % | 2026-09-21 16:36 | ✅ |
172 +| [Chanel](cc.md) | 7 | 14 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
173 +| [Haemonetics](haemonetics.md) | 7 | 0 % | 100 % | 14 % | 2026-09-21 17:08 | ✅ |
174 +| [Raymond Chabot Grant Thornton](rcgt.md) | 6 | 0 % | 100 % | 17 % | 2026-09-21 17:29 | ✅ |
175 +| [Brasseries Sleeman (Unibroue)](sleeman.md) | 6 | 17 % | 83 % | 0 % | 2026-09-21 17:33 | ✅ |
176 +| [Cerence](cerence.md) | 6 | 50 % | 33 % | 67 % | 2026-09-21 16:45 | ✅ |
177 +| [Avocat·e de litige / Litigation Associate](clydeco.md) | 6 | 0 % | 100 % | 83 % | 2026-09-21 16:50 | ✅ |
178 +| [Logistics Associate](harry.md) | 6 | 17 % | 100 % | 0 % | 2026-09-21 17:09 | ✅ |
179 +| [Hpe](hpe.md) | 6 | 0 % | 50 % | 100 % | 2026-09-21 17:11 | ✅ |
180 +| [Iqvia](iqvia.md) | 6 | 100 % | 50 % | 0 % | 2026-09-21 17:13 | ✅ |
181 +| [Nortekinc](nortekinc.md) | 6 | 33 % | 100 % | 0 % | 2026-09-21 17:25 | ✅ |
182 +| [Nrfcanada](nrfcanada.md) | 6 | 67 % | 33 % | 33 % | 2026-09-21 17:25 | ✅ |
183 +| [Associé principal (Ressources de gestion)](roberthalf.md) | 6 | 0 % | 67 % | 17 % | 2026-09-21 17:30 | ✅ |
184 +| [Sbdinc](sbdinc.md) | 6 | 83 % | 100 % | 0 % | 2026-09-21 17:32 | ✅ |
185 +| [Groupe Meloche](melocheinc.md) | 6 | 100 % | 100 % | 0 % | 2026-09-21 17:23 | ✅ |
186 +| [Bdx](bdx.md) | 5 | 40 % | 80 % | 40 % | 2026-09-21 16:39 | ✅ |
187 +| [Ciena](ciena.md) | 5 | 40 % | 60 % | 80 % | 2026-09-21 16:48 | ✅ |
188 +| [Cisco](cisco.md) | 5 | 100 % | 40 % | 20 % | 2026-09-21 16:49 | ✅ |
189 +| [Associé au Marketing et Opérations Clients – Est](diageo.md) | 5 | 100 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
190 +| [Interpublic](interpublic.md) | 5 | 40 % | 80 % | 100 % | 2026-09-21 17:13 | ✅ |
191 +| [Msd](msd.md) | 5 | 60 % | 100 % | 0 % | 2026-09-21 17:24 | ✅ |
192 +| [Swarovski](swarovski.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
193 +| [Valmet](valmet.md) | 5 | 0 % | 80 % | 0 % | 2026-09-21 17:39 | ✅ |
194 +| [Warner Bros. Discovery (WB Games Montréal)](warnerbros.md) | 5 | 0 % | 100 % | 100 % | 2026-09-21 17:43 | ✅ |
195 +| [Carrier](carrier.md) | 5 | 80 % | 60 % | 100 % | 2026-09-21 16:44 | ✅ |
196 +| [Church & Dwight Canada](churchdwight.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 16:47 | ✅ |
197 +| [Rechercher des](canassurance.md) | 4 | 0 % | 100 % | 50 % | 2026-09-21 16:41 | ✅ |
198 +| [Avocat en immigration d'affaires américaine](fragomen.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
199 +| [Lighting](lighting.md) | 4 | 100 % | 100 % | 0 % | 2026-09-21 17:21 | ✅ |
200 +| [Medline](medline.md) | 4 | 100 % | 100 % | 25 % | 2026-09-21 17:23 | ✅ |
201 +| [Testing, Automation and Cloud Validation](sglottery.md) | 4 | 25 % | 100 % | 0 % | 2026-09-21 17:32 | ✅ |
202 +| [Trugreen](trugreen.md) | 4 | 50 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
203 +| [Equisoft](equisoft.md) | 4 | 0 % | 100 % | 100 % | 2026-09-21 16:56 | ✅ |
204 +| [Malvern Panalytical (Spectris)](spectris.md) | 4 | 0 % | 100 % | 0 % | 2026-09-21 17:34 | ✅ |
205 +| [Weir Group](weir.md) | 4 | 0 % | 100 % | 75 % | 2026-09-21 17:43 | ✅ |
206 +| [Plusgrade](plusgrade.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
207 +| [Guillevin International](guillevin.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:08 | ✅ |
208 +| [Cdpqfiliales](cdpqfiliales.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
209 +| [Associé(e) au service](ci.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 16:48 | ✅ |
210 +| [Danaher](danaher.md) | 3 | 67 % | 67 % | 33 % | 2026-09-21 16:51 | ✅ |
211 +| [Enbridge](enbridge.md) | 3 | 0 % | 67 % | 0 % | 2026-09-21 16:56 | ✅ |
212 +| [Associé aux ventes/Retail Sales Associate](gapinc.md) | 3 | 0 % | 33 % | 0 % | 2026-09-21 16:58 | ✅ |
213 +| [Agent service à la clientèle et soutien comptable](harriscomputer.md) | 3 | 33 % | 100 % | 33 % | 2026-09-21 17:08 | ✅ |
214 +| [Kiongroup](kiongroup.md) | 3 | 100 % | 67 % | 33 % | 2026-09-21 17:20 | ✅ |
215 +| [Michelin](michelinhr.md) | 3 | 0 % | 100 % | 100 % | 2026-09-21 17:23 | ✅ |
216 +| [Motorolasolutions](motorolasolutions.md) | 3 | 67 % | 67 % | 0 % | 2026-09-21 17:24 | ✅ |
217 +| [Air Traffic Control (ATC)](navcanada.md) | 3 | 67 % | 100 % | 67 % | 2026-09-21 17:24 | ✅ |
218 +| [Synnex](synnex.md) | 3 | 100 % | 67 % | 0 % | 2026-09-21 17:36 | ✅ |
219 +| [Electromechanic](toppan.md) | 3 | 67 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
220 +| [Warehouse Team Member](tricorbraun.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
221 +| [Innocap](innocap.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ |
222 +| [Robover (ODL Canada)](odl.md) | 3 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
223 +| [BDC](bdc.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ |
224 +| [Suncor Énergie](suncor.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
225 +| [Fiserv](fiserv.md) | 2 | 50 % | 50 % | 0 % | 2026-09-21 16:57 | ✅ |
226 +| [ZOLL Medical](zoll.md) | 2 | 100 % | 50 % | 100 % | 2026-09-21 17:44 | ✅ |
227 +| [3M](x3m.md) | 2 | 50 % | 100 % | 100 % | 2026-09-21 17:44 | ✅ |
228 +| [Amgen](amgen.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:37 | ✅ |
229 +| [Brambles](brambles.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
230 +| [Carters](carters.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:45 | ✅ |
231 +| [Conagrabrands](conagrabrands.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
232 +| [Dxctechnology](dxctechnology.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:55 | ✅ |
233 +| [Fednav](fednav.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
234 +| [Freseniusmedicalcare](freseniusmedicalcare.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 16:58 | ✅ |
235 +| [Kone](kone.md) | 2 | 50 % | 100 % | 50 % | 2026-09-21 17:20 | ✅ |
236 +| [Medtronic](medtronic.md) | 2 | 50 % | 100 % | 100 % | 2026-09-21 17:23 | ✅ |
237 +| [Sales Consultant Montreal](miele.md) | 2 | 100 % | 100 % | 50 % | 2026-09-21 17:23 | ✅ |
238 +| [Nutreco](nutreco.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
239 +| [Agent(e) de liaison médicale et scientifique, biologiques – Québec ...](organon.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
240 +| [Infirmier(ère), Salle de réveil](shrinerschildrens.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:33 | ✅ |
241 +| [Topbuild](topbuild.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
242 +| [Zoetis](zoetis.md) | 2 | 0 % | 100 % | 100 % | 2026-09-21 17:44 | ✅ |
243 +| [Arterra Wines Canada](awc.md) | 2 | 50 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ |
244 +| [HP](hp.md) | 2 | 100 % | 100 % | 0 % | 2026-09-21 17:11 | ✅ |
245 +| [SBM Management](sbmmanagement.md) | 2 | 100 % | 50 % | 0 % | 2026-09-21 17:32 | ✅ |
246 +| [Workwear Outfitters](workwear.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
247 +| [Cabotcorp](cabotcorp.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:40 | ✅ |
248 +| [Production Support Roles](canadagoose.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
249 +| [Dupont](dupont.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:53 | ✅ |
250 +| [Gategroup](gategroup.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 16:58 | ✅ |
251 +| [Gipi](gipi.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:00 | ✅ |
252 +| [Jj](jj.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:13 | ✅ |
253 +| [Novartis](novartis.md) | 1 | 0 % | 100 % | 100 % | 2026-09-21 17:25 | ✅ |
254 +| [Field Service Representative](orthoclinical.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:26 | ✅ |
255 +| [Prysmiangroup](prysmiangroup.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:28 | ✅ |
256 +| [Rbc](rbc.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
257 +| [Reddyice](reddyice.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:29 | ✅ |
258 +| [Republic](republic.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:30 | ✅ |
259 +| [Silabs](silabs.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:33 | ✅ |
260 +| [Smucker](smucker.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:34 | ✅ |
261 +| [Thales Canada](thales.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:38 | ✅ |
262 +| [Bilingual Fire Protection Sales Representative](victaulic.md) | 1 | 100 % | 100 % | 100 % | 2026-09-21 17:40 | ✅ |
263 +| [Zebra](zebra.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
264 +| [Warehouse Associate](zepinc.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
265 +| [Cambria](cambria.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 16:41 | ✅ |
266 +| [Autorité des marchés financiers (AMF)](lautorite.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:20 | ✅ |
267 +| [Patterson Companies](pattersoncompanies.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:27 | ✅ |
268 +| [Reworld](reworld.md) | 1 | 0 % | 0 % | 0 % | 2026-09-21 17:30 | ✅ |
269 +| [Simpson Strong-Tie](strongtie.md) | 1 | 100 % | 100 % | 0 % | 2026-09-21 17:35 | ✅ |
270 +| [Shell Canada](shell.md) | 0 | — | — | — | 2026-09-21 17:32 | ✅ |
271 +| [CoorsTek](coorstek.md) | 0 | — | — | — | 2026-09-21 16:51 | ✅ |
272 +| [Gilead Sciences](gilead.md) | 0 | — | — | — | 2026-09-21 17:00 | ✅ |
273 +| [Imerys](imerys.md) | 0 | — | — | — | 2026-09-21 17:12 | ✅ |
274 +| [Poolcorp](poolcorp.md) | 0 | — | — | — | 2026-09-21 17:27 | ✅ |
275 +| [Alliance de la Fonction publique du Canada](psacunion.md) | 0 | — | — | — | 2026-09-21 17:28 | ✅ |
276 +| [QuadReal (QuadReal Property Group)](quadreal.md) | 0 | — | — | — | 2026-09-21 17:29 | ✅ |
277 +| [Topcon](topcon.md) | 0 | — | — | — | 2026-09-21 17:38 | ✅ |
278 +| [Groupe Altus](altusgroup.md) | 0 | — | — | — | 2026-09-21 16:37 | ✅ |
279 +| [Loblaw (Provigo / Maxi)](myview.md) | 0 | — | — | — | 2026-09-21 17:24 | ✅ |
280 280
281 281 ## Licence / conformité
282 282
@@ -294,5 +294,13 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
294 294
295 295 Commits touchant `jobka/connectors/workday.py` :
296 296
297 +- `4e9be24` 2026-09-12 [ka6] fix connecteur altusgroup: external_id régional → ID de réquisition (hook _external_id dans la plateforme workday, défaut inchangé) — le tenant altusgroup.wd3 préfixe bulletFields par la région quand il y en a une (['Ontario','R0013639'] vs ['R0013942'] seul), si bien que bullets[0] devenait l'external_id : l'offre QC historique était en base sous external_id='Quebec', et le sync du 2026-08-26 trouvait 2 offres pour 1 seule stockée (collision d'ID entre postes d'une même région). L'extraction est désormais isolée dans un hook _external_id() de WorkdayConnector (comportement par défaut strictement identique pour les autres tenants) et surchargée dans altusgroup.py : premier bullet au format réquisition R+chiffres, sinon suffixe du chemin. Vérifié live : 36 postes scannés → 36 IDs uniques au format R00xxxxx, 0 poste non conforme. Volume 0 légitime AUJOURD'HUI : 7 postes Canada, tous Toronto — aucune offre QC depuis la dépublication de l'offre montréalaise le 2026-08-26 (médiane historique 0.0). Le statut stale vient de là (la supervision date le dernier succès au dernier sync found>0, 2026-08-26 14:19) ; l'unique échec récent (2026-09-12 03:04, « Workday non-JSON HTTP 200 text/html ») est la fenêtre de maintenance hebdomadaire Workday du vendredi/samedi nuit (28 occurrences multi-sources cette nuit, mêmes plages 02h30–03h15 les 2026-08-29 et 2026-09-05), transitoire et déjà retryée. Sync isolé rejoué : found=0 en 2,4 s, statut ok. 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
298 +- `f6c5978` 2026-09-10 [ka6] fix connecteur dxctechnology: repli scan client quand le filtre serveur QC est factice dans la plateforme workday — le tenant dxctechnology (dxctechnology.wd1, site DXCJobs) expose une facette « locations » (Region, State or Province) qui liste « CAN - QC - MONTREAL » count=3 mais dont le filtre serveur renvoie total=0 pour N'IMPORTE QUELLE valeur (vérifié aussi avec DUBAI count=2 → 0) : facette d'affichage seulement. Le repli serveur ajouté ce matin pour jj (ec1b90d, déployé 04h18) sélectionnait cette facette factice → pagination filtrée vide → found=0 au sync de 04h45 (missed=3), statut stale, alors que les 3 offres Montréal existent toujours sur l'API. _list_pages détecte désormais le cas : si la première page filtrée serveur est vide alors que le listing non filtré annonçait des postes (total > 0), le filtre serveur est abandonné (une seule fois) et le scan client complet reprend (938 postes < plafond 60×20, is_quebec_location côté client). Sync rejoué : found=3 (médiane 3.0), les 3 offres réactivées miss_count=0. Non-régression : jj garde son repli serveur (found=1 en 1,9 s), desjardins sa facette province (found=270). pm2 restart job-ka-sync OK, site 200.
299 +- `ec1b90d` 2026-09-10 [ka6] fix connecteur jj: filtre serveur de repli par lieux ville dans la plateforme workday — le tenant jj (Johnson & Johnson, jj.wd5) n'expose AUCUNE facette province « Quebec », seulement une facette locations plate au niveau ville (« Montréal, Quebec, Canada ») ; sans filtre serveur, le scan client plafonné à max_pages=60 (1200 postes) ratait l'unique offre QC dès que le tenant a dépassé le plafond (1692 postes le 2026-09-10) → found=0, statut stale. _find_qc_facet agrège désormais, en repli seulement, toutes les valeurs de lieu québécoises (mêmes règles que is_quebec_location) en un filtre serveur unique. Sync rejoué : found=1 en 2,8 s (vs 0 en 72,5 s), offre R-089236 Montréal réactivée (miss_count=0) ; les 2 retraits (R-093383, R-081608) vérifiés réellement dépubliés sur l'API. Non-régression : desjardins garde sa facette province Region et rapporte 270 offres. pm2 restart job-ka-sync OK, site 200.
300 +- `b5b4be3` 2026-09-07 [ka6] fix connecteur firststudent: retry avec backoff sur 5xx transitoire dans la plateforme workday — un 500 isolé de l'API CXS (constaté 2026-09-07 18h18 sur firststudent.wd1, reparti seul) faisait échouer tout le sync car raise_for_status dans base.get/post court-circuitait le retry de _req_json (qui ne couvrait que le cas 200 non-JSON); les 4xx restent des échecs immédiats; sync rejoué: 35 offres (médiane 35.0)
301 +- `c4d9bfc` 2026-09-04 [ka6] snapshot pré-mission derumarketcatering
302 +- `86fc781` 2026-09-04 Revert "[ka6] connecteur shrinerschildrens: maintenance tenant Workday (401 'system account', 2026-09-04 ~02h EDT, portail redirigé vers community.workday.com/maintenance-page) — retry+backoff du 401 de maintenance dans _req_json de la plateforme workday et erreur explicite dans sync_log; autres tenants wd12 non touchés (cabotcorp 4 offres vérifié)"
303 +- `540cb82` 2026-09-04 [ka6] connecteur shrinerschildrens: maintenance tenant Workday (401 'system account', 2026-09-04 ~02h EDT, portail redirigé vers community.workday.com/maintenance-page) — retry+backoff du 401 de maintenance dans _req_json de la plateforme workday et erreur explicite dans sync_log; autres tenants wd12 non touchés (cabotcorp 4 offres vérifié)
304 +- `7217386` 2026-08-31 [ka6] fix connecteur gsknch: reprise sur réponses Workday 200 non-JSON (fenêtres de maintenance nocturnes ~03h) — retry+backoff _req_json dans la plateforme workday, erreur diagnosticable, 11 offres retrouvées
297 305 - `49067dd` 2026-08-19 Connecteurs phase 2 — correctifs et enrichissement champ par champ. Correctifs : villes SuccessFactors à trait d'union (préfixe municipal MAMH sur le slug, bogue « St »/« Pointe »), colonne date Taleo = date LIMITE chez agnico_eagle (+ garde-fou date future). Enrichissement : SmartRecruiters experienceLevel/function/industry/language/refNumber (lignes de liste, zéro requête), BambooHR locationType→work_mode, Breezy is_remote/logo_url/streetAddress, JSON-LD logo/industry/educationRequirements/skills (portails+icims+DR), Ashby applyUrl + composantes Bonus/Equity/Commission, Lever applyUrl + blocs opening/additional + allLocations, Workable application_url + function/industry, Recruitee careers_apply_url + description FR (translations) + expérience/scolarité + heures/sem, Greenhouse language + requisition_id, Workday externalUrl→apply_url + work_mode via facette Remote Type + clé cache v2, Guichet-Emplois avantages structurés + langue de travail, njoyn apply_url en colonne ; secours cache périmé quand le budget détail est épuisé (plus de fiches vidées)
298 306 - `1fc94ac` 2026-08-17 Fondation Job·Ka : socle backend, 5 connecteurs pilotes, frontend, tests
modified docs/connecteurs/ats-workland.md +3 −3
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-workland.md
7 7 Rôle : Fiche plateforme ATS workland — mécanique partagée + tableau des 1 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `workland`
14 14
15 −**1 employeurs connectés** via cette plateforme — **1269 offres actives**. Module partagé : `jobka/connectors/workland.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**1 employeurs connectés** via cette plateforme — **1226 offres actives**. Module partagé : `jobka/connectors/workland.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -51,7 +51,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
51 51
52 52 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
53 53 |---|---|---|---|---|---|---|
54 −| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | 1269 | 34 % | 100 % | 81 % | 2026-08-25 08:00 | ✅ |
54 +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | 1226 | 35 % | 100 % | 85 % | 2026-09-21 16:37 | ✅ |
55 55
56 56 ## Licence / conformité
57 57
modified docs/connecteurs/ats-wpjobmanager.md +10 −10
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-wpjobmanager.md
7 7 Rôle : Fiche plateforme ATS wpjobmanager — mécanique partagée + tableau des 8 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `wpjobmanager`
14 14
15 −**8 employeurs connectés** via cette plateforme — **867 offres actives**. Module partagé : `jobka/connectors/wpjobmanager.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**8 employeurs connectés** via cette plateforme — **811 offres actives**. Module partagé : `jobka/connectors/wpjobmanager.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -38,14 +38,14 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
40 40 |---|---|---|---|---|---|---|
41 −| [CISSS de Laval](cisss_laval.md) | 148 | 1 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
42 −| [CISSS des Laurentides](cisss_laurentides.md) | 141 | 11 % | 100 % | 1 % | 2026-08-25 08:17 | ✅ |
43 −| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | 140 | 0 % | 100 % | 0 % | 2026-08-25 08:16 | ✅ |
44 −| [CISSS de Lanaudière](cisss_lanaudiere.md) | 131 | 5 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
45 −| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | 113 | 8 % | 100 % | 0 % | 2026-08-25 08:16 | ✅ |
46 −| [CISSS de l'Outaouais](cisss_outaouais.md) | 105 | 31 % | 100 % | 0 % | 2026-08-25 08:17 | ✅ |
47 −| [CHU de Québec — Université Laval](chu_quebec.md) | 59 | 7 % | 100 % | 0 % | 2026-08-25 08:14 | ✅ |
48 −| [CHUM](chum.md) | 30 | 0 % | 100 % | 0 % | 2026-08-25 08:14 | ✅ |
41 +| [CISSS de Laval](cisss_laval.md) | 157 | 3 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
42 +| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | 142 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
43 +| [CISSS des Laurentides](cisss_laurentides.md) | 134 | 6 % | 100 % | 4 % | 2026-09-21 16:50 | ✅ |
44 +| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | 101 | 3 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
45 +| [CISSS de Lanaudière](cisss_lanaudiere.md) | 96 | 6 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
46 +| [CISSS de l'Outaouais](cisss_outaouais.md) | 95 | 29 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ |
47 +| [CHU de Québec — Université Laval](chu_quebec.md) | 57 | 5 % | 100 % | 0 % | 2026-09-21 16:47 | ✅ |
48 +| [CHUM](chum.md) | 29 | 3 % | 100 % | 7 % | 2026-09-21 16:47 | ✅ |
49 49
50 50 ## Licence / conformité
51 51
modified docs/connecteurs/ats-zoho_recruit.md +31 −21
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-zoho_recruit.md
7 7 Rôle : Fiche plateforme ATS zoho_recruit — mécanique partagée + tableau des 17 tenants
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `zoho_recruit`
14 14
15 −**17 employeurs connectés** via cette plateforme — **163 offres actives**. Module partagé : `jobka/connectors/zoho_recruit.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**17 employeurs connectés** via cette plateforme — **183 offres actives**. Module partagé : `jobka/connectors/zoho_recruit.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -21,8 +21,13 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
21 21 > - flux : GET https://<org>.zohorecruit.com/jobs/<PAGE>/rss
22 22 > -> items avec titre, lien (id numérique), description HTML complète
23 23 > précédée de « Catégorie: X » et « Lieu: Ville Région Pays ».
24 −> La page carrières elle-même est une SPA (aucun HTML utile) : le RSS est la
25 −> seule porte publique — tout est dans une requête, pas de budget détail.
24 +> - repli : le RSS ne reflète que les offres « publiées aux job boards » par le
25 +> tenant — il peut être VIDE alors que le site carrières affiche des dizaines
26 +> d'offres (cas gus, 2026-09-10 : RSS 0 item, 51 offres QC publiées). La page
27 +> /jobs/<PAGE> est une SPA, mais elle embarque le listing complet dans un
28 +> <input type="hidden" id="jobs"> (JSON : Posting_Title, City/State/Country,
29 +> Job_Description, Job_Type, Date_Opened, Publish…) : quand le RSS n'a aucun
30 +> <item>, on parse ce JSON embarqué.
26 31
27 32 ## Accès
28 33
@@ -35,23 +40,23 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
35 40
36 41 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
37 42 |---|---|---|---|---|---|---|
38 −| [Mallette - Saguenay](mallette_sag.md) | 26 | 4 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
39 −| [DRB Distribution](drbdistribution.md) | 22 | 0 % | 0 % | 5 % | 2026-08-25 08:37 | ✅ |
40 −| [dentago](dentago.md) | 20 | 5 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
41 −| [Uman Recrutement](umanrecrutement.md) | 13 | 0 % | 0 % | 8 % | 2026-08-25 08:37 | ✅ |
42 −| [Défis RH](defisrh.md) | 12 | 17 % | 0 % | 17 % | 2026-08-25 08:37 | ✅ |
43 −| [ZAYAT AROMA - ZAYAT AROMA](zayataroma.md) | 12 | 0 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
44 −| [Groupe PMI](groupepmi.md) | 10 | 50 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
45 −| [Altitude Sports](altitude_sports.md) | 9 | 33 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
46 −| [Les Excavations Lafontaine Inc.](lafontaineinc.md) | 9 | 0 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
47 −| [Also Recrutement - Carrière](alsorecrutement.md) | 6 | 17 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
48 −| [delisoft](delisoft.md) | 6 | 0 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
49 −| [Place et Forme inc](placeetforme.md) | 5 | 60 % | 0 % | 20 % | 2026-08-25 08:37 | ✅ |
50 −| [Carnaval de Québec Inc.](carnaval.md) | 3 | 0 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
51 −| [EMU](emu.md) | 3 | 67 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
52 −| [Gestion FÉRIQUE](ferique.md) | 3 | 0 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
53 −| [Maintenance Expert M.S.L.G](maintenancexpert.md) | 3 | 100 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
54 −| [GUS](gus.md) | 1 | 0 % | 0 % | 0 % | 2026-08-25 08:37 | ✅ |
43 +| [Mallette - Saguenay](mallette_sag.md) | 26 | 4 % | 85 % | 0 % | 2026-09-21 17:22 | ✅ |
44 +| [DRB Distribution](drbdistribution.md) | 25 | 0 % | 96 % | 8 % | 2026-09-21 16:53 | ✅ |
45 +| [dentago](dentago.md) | 21 | 5 % | 81 % | 0 % | 2026-09-21 16:52 | ✅ |
46 +| [Altitude Sports](altitude_sports.md) | 14 | 21 % | 100 % | 0 % | 2026-09-21 16:36 | ✅ |
47 +| [Uman Recrutement](umanrecrutement.md) | 14 | 0 % | 100 % | 14 % | 2026-09-21 17:39 | ✅ |
48 +| [Défis RH](defisrh.md) | 13 | 31 % | 92 % | 15 % | 2026-09-21 16:51 | ✅ |
49 +| [Les Excavations Lafontaine Inc.](lafontaineinc.md) | 13 | 0 % | 92 % | 0 % | 2026-09-21 17:20 | ✅ |
50 +| [ZAYAT AROMA - ZAYAT AROMA](zayataroma.md) | 12 | 0 % | 100 % | 0 % | 2026-09-21 17:44 | ✅ |
51 +| [Groupe PMI](groupepmi.md) | 10 | 50 % | 100 % | 0 % | 2026-09-21 17:02 | ✅ |
52 +| [Also Recrutement - Carrière](alsorecrutement.md) | 6 | 17 % | 50 % | 0 % | 2026-09-21 16:36 | ✅ |
53 +| [delisoft](delisoft.md) | 6 | 0 % | 100 % | 0 % | 2026-09-21 16:51 | ✅ |
54 +| [Maintenance Expert M.S.L.G](maintenancexpert.md) | 6 | 100 % | 17 % | 0 % | 2026-09-21 17:22 | ✅ |
55 +| [Gestion FÉRIQUE](ferique.md) | 5 | 0 % | 100 % | 0 % | 2026-09-21 16:57 | ✅ |
56 +| [Place et Forme inc](placeetforme.md) | 5 | 60 % | 60 % | 20 % | 2026-09-21 17:27 | ✅ |
57 +| [Carnaval de Québec Inc.](carnaval.md) | 3 | 0 % | 100 % | 33 % | 2026-09-21 16:41 | ✅ |
58 +| [EMU](emu.md) | 3 | 67 % | 100 % | 0 % | 2026-09-21 16:56 | ✅ |
59 +| [GUS](gus.md) | 1 | 0 % | 100 % | 0 % | 2026-09-21 17:08 | ✅ |
55 60
56 61 ## Licence / conformité
57 62
@@ -66,3 +71,8 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
66 71 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
67 72 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
68 73 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
74 +
75 +Commits touchant `jobka/connectors/zoho_recruit.py` :
76 +
77 +- `09c7254` 2026-09-10 [ka6] fix connecteur gus: repli sur le listing JSON embarqué de la page carrières dans la plateforme zoho_recruit — le flux RSS (/jobs/<PAGE>/rss) ne reflète que les offres « publiées aux job boards » par le tenant : chez gus il n'a jamais listé qu'1 offre et est devenu VIDE le 2026-09-10 (200, 0 <item>) alors que le site carrières publie 51 offres QC bien vivantes (page détail 200, dont l'offre en base 715384000005984001). La page /jobs/<PAGE> est une SPA mais embarque le listing complet dans un <input type=hidden id=jobs> (JSON Posting_Title/City/State/Country/Job_Description/Job_Type/Date_Opened/Publish) : quand le RSS n'a aucun item, fetch() bascule sur ce JSON embarqué (filtre Publish + Québec, villes débarrassées des suffixes de quartier Zoho « Gatineau Northeast » → « Gatineau », localité entre parenthèses extraite « Vaudreuil-Soulanges (Coteau-du-Lac) » → « Coteau-du-Lac »). Sync rejoué : found=51 en 2,7 s (+50, ~1, -0), l'offre existante réactivée miss_count=0 — le RSS sous-rapportait depuis le début (médiane 1.0). Non-régression : voie RSS inchangée pour les 16 autres tenants zoho_recruit (mallette_sag 26, altitude_sports 11, maintenancexpert 1 = volumes en base), 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
78 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/autodesk.md +22 −20
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/autodesk.md
7 7 Rôle : Fiche connecteur — Autodesk (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **67 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **54 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -47,24 +47,24 @@ Complétude mesurée sur les **67 offres actives** de la source (base live, 2026
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 49 | `city` — Ville | municipalité normalisée | 33 % |
50 −| `region` — Région | région administrative | 33 % |
50 +| `region` — Région | région administrative | 31 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 21 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 97 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 90 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 90 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 20 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 96 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 83 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 83 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 93 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 87 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 93 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 46 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 41 % |
66 66
67 −Exemple réel : *Senior Director, Platform Programs & Portfolio* — ∅ · -based roles, we expect a starting base salary between $205,000 and $366,630. Offers are b… · parue le 2026-08-24.
67 +Exemple réel : *Marketing Insights Specialist* — Montréal · Pour les postes basés au Canada, nous offrons un salaire de base entre $79,000 et $115,500… · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Senior Director, Platform Programs & Portfolio* — ∅ · -bas
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 78 (dont **67 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 60/67 actives (90 %)
86 −- **GPS** : 31/67 actives (46 %)
87 −- **Mode** : 14/67 actives (21 %)
88 −- **Parution** : 67/67 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 67, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 109
84 +- **Offres en base** : 99 (dont **54 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 45/54 actives (83 %)
86 +- **GPS** : 22/54 actives (41 %)
87 +- **Mode** : 11/54 actives (20 %)
88 +- **Parution** : 54/54 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 53, +0, ~0, -2
90 +- **Syncs enregistrés** (`sync_log`) : 387
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,9 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:19 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:47 |
99 +| HTTPSConnectionPool(host='autodesk.wd1.myworkdayjobs.com', port=443): Max retries exceeded… | 1 | 2026-09-18 12:52 |
100 +| Expecting value: line 1 column 1 (char 0) | 9 | 2026-08-29 03:17 |
99 101
100 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync autodesk` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='autodesk' ORDER BY ts DESC LIMIT 5;"`
101 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/automobileendirect.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/automobileendirect.md
7 7 Rôle : Fiche connecteur — Automobileendirect (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **36 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **52 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,22 +49,22 @@ Complétude mesurée sur les **36 offres actives** de la source (base live, 2026
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 −| `postal_code` — Code postal | code postal si publié | 72 % |
52 +| `postal_code` — Code postal | code postal si publié | 73 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 6 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 50 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 78 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 63 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Coordonnateur.trice des réclamations et résolution des demandes clients* — Laval · ∅ · parue le 2026-08-23.
67 +Exemple réel : *Conseiller(ère) F&I* — Gatineau · ∅ · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,23 @@ Exemple réel : *Coordonnateur.trice des réclamations et résolution des demand
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 36 (dont **36 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/36 actives (0 %)
86 −- **GPS** : 36/36 actives (100 %)
87 −- **Mode** : 0/36 actives (0 %)
88 −- **Parution** : 36/36 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:00 — trouvées 36, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 111 (dont **52 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/52 actives (0 %)
86 +- **GPS** : 52/52 actives (100 %)
87 +- **Mode** : 0/52 actives (0 %)
88 +- **Parution** : 52/52 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 52, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 285
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='jobs.dayforcehcm.com', port=443): Max retries exceeded with url:… | 1 | 2026-09-18 12:52 |
95 99
96 100 - Rejouer un sync isolé : `.venv/bin/python run.py sync automobileendirect` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='automobileendirect' ORDER BY ts DESC LIMIT 5;"`
97 101 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/autotradercanada.md +19 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/autotradercanada.md
7 7 Rôle : Fiche connecteur — AutoTrader Canada (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -16,7 +16,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
16 16
17 17 ## Description
18 18
19 −- **Site** : [AutoTrader Canada]()
19 +- **Site** : [AutoTrader Canada](https://www.autotrader.ca)
20 20 - **Page carrières** : https://job-boards.greenhouse.io/autotradercanada
21 21 - **Secteurs** : Automobile
22 22 - **Région** : Longueuil
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Performance Manager, Longueuil, QC* — Longueuil · $65,000 — $70,000 CAD · parue le 2026-07-29.
65 +Exemple réel : *Gestionnaire de performance , Sherbrooke (Estrie)/Drummondville (Centre-du-Québec)* — Québec · $65,000 — $70,000 CAD · parue le 2026-07-29.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Performance Manager, Longueuil, QC* — Longueuil · $65,000
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 2/2 actives (100 %)
79 −- **GPS** : 2/2 actives (100 %)
80 −- **Mode** : 0/2 actives (0 %)
81 −- **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:01 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 29
77 +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 1/1 actives (100 %)
79 +- **GPS** : 1/1 actives (100 %)
80 +- **Mode** : 0/1 actives (0 %)
81 +- **Parution** : 1/1 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 1, +0, ~1, -0
83 +- **Syncs enregistrés** (`sync_log`) : 308
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:52 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync autotradercanada` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='autotradercanada' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -105,4 +109,5 @@ Aucune erreur dans `sync_log` pour cette source.
105 109
106 110 Commits touchant `jobka/connectors/autotradercanada.py` :
107 111
112 +- `77020a3` 2026-09-18 [ka6] fix connecteur autotradercanada: faux positif de supervision (0 offre QC légitime — AutoTrader n'a plus de poste au Québec) + échec DNS transitoire ponctuel — aucun défaut du connecteur — le statut stale vient de la définition de succès de la supervision : le board Greenhouse autotradercanada n'a AUCUNE offre QC depuis la dépublication des 2 offres de Montréal/Longueuil (7799193003 et 7820524003, 404 confirmés sur l'API détail, déjà constatée le 2026-09-14), donc chaque sync horaire rend ok=1 found=0 (médiane 0.0) et est compté comme non-succès depuis le 2026-09-14 (97 h). Le connecteur est INTACT et re-vérifié live : l'API boards-api.greenhouse.io répond 200 avec 23 offres, toutes hors Québec (22 Toronto, 1 Remote-Canada Maritimes) — zéro occurrence de quebec/montréal/longueuil/laval/gatineau/sherbrooke dans le JSON complet content=true (l'aveuglement type stateindustrial est exclu ; is_quebec_location validé sur les libellés live, Remote (Canada) correctement exclu). L'unique sync en échec (18/09 12:52) est une NameResolutionError DNS transitoire sur boards-api.greenhouse.io, non reproduite (API OK en live). Même profil que altusgroup 2fc9e63, altom_transport ea13137, earthrated f7b1c35, canadasmotorcycle 175b215 : tenant à volume QC nul compté non-succès par la supervision. L'entrée sources.json est déjà propre (url https://www.autotrader.ca présente depuis la mission du 14/09) — seule la docstring du connecteur est mise à jour (23 offres, re-vérif 2026-09-18). Sync isolé rejoué : found=0 en 0,1 s, ok=1 — 0 est le volume légitime tant qu'AutoTrader 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.
108 113 - `a5260cc` 2026-08-22 Vague B — 110 nouvelles sources (26 Dayforce nouvelle famille + 84 sur familles existantes)
modified docs/connecteurs/avantageplus.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/avantageplus.md
7 7 Rôle : Fiche connecteur — Avantage Plus (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -72,19 +72,23 @@ Exemple réel : *Économiste de la construction* — Montréal · Salaire offert
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 11 (dont **11 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 14 (dont **11 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/11 actives (9 %)
79 79 - **GPS** : 11/11 actives (100 %)
80 80 - **Mode** : 11/11 actives (100 %)
81 81 - **Parution** : 11/11 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:01 — trouvées 11, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 29
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 11, +1, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 306
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='avantageplus.recruitee.com', port=443): Max retries exceeded wit… | 1 | 2026-09-18 12:52 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync avantageplus` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='avantageplus' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aveq.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aveq.md
7 7 Rôle : Fiche connecteur — AVEQ (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Directeur.trice général.e* — Montréal · ∅ · parue le 2
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 1/1 actives (100 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:01 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 285
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:52 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync aveq` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aveq' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/averna1.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/averna1.md
7 7 Rôle : Fiche connecteur — Averna (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -56,13 +56,13 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Analyste de données* — Montréal · ∅ · parue le 2026-08-20.
65 +Exemple réel : *Product Quality Customer Support Specialist (English version)* — Montréal · ∅ · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Analyste de données* — Montréal · ∅ · parue le 2026-08-
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/6 actives (0 %)
84 −- **GPS** : 6/6 actives (100 %)
85 −- **Mode** : 6/6 actives (100 %)
86 −- **Parution** : 6/6 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:01 — trouvées 6, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Offres en base** : 19 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/2 actives (0 %)
84 +- **GPS** : 2/2 actives (100 %)
85 +- **Mode** : 2/2 actives (100 %)
86 +- **Parution** : 2/2 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 2, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 285
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='api.smartrecruiters.com', port=443): Max retries exceeded with u… | 1 | 2026-09-18 12:52 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync averna1` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='averna1' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/avisbudget.md +23 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/avisbudget.md
7 7 Rôle : Fiche connecteur — Avisbudget (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **13 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,22 +49,22 @@ Complétude mesurée sur les **13 offres actives** de la source (base live, 2026
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 −| `postal_code` — Code postal | code postal si publié | 54 % |
52 +| `postal_code` — Code postal | code postal si publié | 56 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 11 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 11 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 78 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 62 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 56 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Agent de Service - temps partiel \| Car Detailer - Part time* — Montréal · ∅ · parue le 2026-08-12.
67 +Exemple réel : *Représentants au service à la clientèle - Temps partiel \| Rental Sales Agent - Part time* — Dorval · Taux horaire : 18 $/heure + commission sur les ventes · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Agent de Service - temps partiel \| Car Detailer - Part time*
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 13 (dont **13 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/13 actives (0 %)
86 −- **GPS** : 13/13 actives (100 %)
87 −- **Mode** : 0/13 actives (0 %)
88 −- **Parution** : 13/13 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 13, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 16 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/9 actives (11 %)
86 +- **GPS** : 9/9 actives (100 %)
87 +- **Mode** : 0/9 actives (0 %)
88 +- **Parution** : 9/9 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 9, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 285
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:48 |
99 +| HTTPSConnectionPool(host='avisbudget.wd1.myworkdayjobs.com', port=443): Max retries exceed… | 1 | 2026-09-18 12:53 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:17 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync avisbudget` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='avisbudget' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aviso.md +12 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aviso.md
7 7 Rôle : Fiche connecteur — Aviso Wealth (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **14 offres actives** de la source (base live, 2026
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Administrateur ou administratrice de nouveaux comptes, temporaire* — Montréal · L’échelle salariale prévue de ce poste est de 46 000 $ à 55 000 $ CA par année · parue le 2026-08-19.
65 +Exemple réel : *Administrateur ou administratrice de transferts* — Montréal · L’échelle salariale prévue de ce poste est de 46 000 $ à 55 000 $ CA par année · parue le 2026-09-17.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Administrateur ou administratrice de nouveaux comptes, temporai
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 14 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 18 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 14/14 actives (100 %)
79 79 - **GPS** : 14/14 actives (100 %)
80 80 - **Mode** : 0/14 actives (0 %)
81 81 - **Parution** : 14/14 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 14, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 14, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 285
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aviso` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aviso' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aviva.md +25 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aviva.md
7 7 Rôle : Fiche connecteur — AVP (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 83 % |
49 +| `city` — Ville | municipalité normalisée | 86 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 17 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 25 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 25 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 9 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 14 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 14 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 8 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 59 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 83 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 86 % |
66 66
67 −Exemple réel : *Souscripteur·trice Sénior — Assurance des entreprises (P&C)* — ∅ · Nous sommes à la recherche d’un·e Souscripteur·trice Sénior pour renforcer notre équipe re… · parue le 2026-07-26.
67 +Exemple réel : *Rédacteur(trice) principal(e), Production— Assurance des entreprises (P&C)* — Québec · Nous sommes à la recherche d’un(e) Rédacteur(trice) principal(e), Production pour renforce… · parue le 2026-09-10.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Souscripteur·trice Sénior — Assurance des entreprises (P&C)
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 12 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 3/12 actives (25 %)
86 −- **GPS** : 10/12 actives (83 %)
87 −- **Mode** : 0/12 actives (0 %)
88 −- **Parution** : 12/12 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 12, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 32 (dont **22 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 3/22 actives (14 %)
86 +- **GPS** : 19/22 actives (86 %)
87 +- **Mode** : 0/22 actives (0 %)
88 +- **Parution** : 22/22 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 22, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 284
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:49 |
99 +| HTTPSConnectionPool(host='aviva.wd1.myworkdayjobs.com', port=443): Max retries exceeded wi… | 1 | 2026-09-18 12:53 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:17 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync aviva` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aviva' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aviyatech.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aviyatech.md
7 7 Rôle : Fiche connecteur — Aviya Aerospace Systems (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 40 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Computer Engineer-Talent Pool Longueuil* — Québec · ∅ ·
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/5 actives (0 %)
79 79 - **GPS** : 5/5 actives (100 %)
80 80 - **Mode** : 5/5 actives (100 %)
81 81 - **Parution** : 5/5 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 5, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 5, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 385
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.lever.co', port=443): Max retries exceeded with url: /v0/pos… | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aviyatech` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aviyatech' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/awc.md +24 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/awc.md
7 7 Rôle : Fiche connecteur — Arterra Wines Canada (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 0 % |
49 +| `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 50 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Représentant des ventes (SAQ/licenciés) Montréal/ Brossard* — ∅ · ∅ · parue le 2026-08-13.
67 +Exemple réel : *Électromécanicien - syndiqué (Qc)* — Rougemont · Salaire de 41,81 $/heure (Incluant prime de nuit) · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Représentant des ventes (SAQ/licenciés) Montréal/ Brossard*
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/1 actives (0 %)
86 −- **GPS** : 0/1 actives (0 %)
87 −- **Mode** : 0/1 actives (0 %)
88 −- **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 1, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 3 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/2 actives (50 %)
86 +- **GPS** : 2/2 actives (100 %)
87 +- **Mode** : 0/2 actives (0 %)
88 +- **Parution** : 2/2 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 2, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 279
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:51 |
99 +| HTTPSConnectionPool(host='awc.wd3.myworkdayjobs.com', port=443): Max retries exceeded with… | 1 | 2026-09-18 12:53 |
100 +| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:17 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync awc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='awc' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aylo.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aylo.md
7 7 Rôle : Fiche connecteur — Aylo (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **17 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **16 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **17 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 81 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 59 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 38 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Sr. Software Developer I - Payment Processing* — Montréal · ∅ · parue le 2026-08-18.
65 +Exemple réel : *DevSecOps Specialist* — Montréal · ∅ · parue le 2026-09-09.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Sr. Software Developer I - Payment Processing* — Montréal ·
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 18 (dont **17 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/17 actives (0 %)
79 −- **GPS** : 17/17 actives (100 %)
80 −- **Mode** : 0/17 actives (0 %)
81 −- **Parution** : 17/17 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 17, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 26 (dont **16 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/16 actives (0 %)
79 +- **GPS** : 16/16 actives (100 %)
80 +- **Mode** : 0/16 actives (0 %)
81 +- **Parution** : 16/16 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 16, +0, ~0, -1
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aylo` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aylo' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/aylofr.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/aylofr.md
7 7 Rôle : Fiche connecteur — Aylo (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **17 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **16 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **17 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 94 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 47 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Développeur ou Développeuse sénior de logiciels I - Traitement des paiements* — Montréal · ∅ · parue le 2026-08-18.
65 +Exemple réel : *Spécialiste DevSecOps* — Montréal · ∅ · parue le 2026-09-09.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Développeur ou Développeuse sénior de logiciels I - Traiteme
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 18 (dont **17 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/17 actives (0 %)
79 −- **GPS** : 17/17 actives (100 %)
80 −- **Mode** : 0/17 actives (0 %)
81 −- **Parution** : 17/17 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 17, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 26 (dont **16 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/16 actives (0 %)
79 +- **GPS** : 16/16 actives (100 %)
80 +- **Mode** : 0/16 actives (0 %)
81 +- **Parution** : 16/16 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 16, +0, ~0, -1
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync aylofr` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='aylofr' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bainmagique.md +22 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bainmagique.md
7 7 Rôle : Fiche connecteur — Bain Magique (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 20 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 20 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 27 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 73 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 73 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 64 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 80 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 64 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Opérateur extrusion (nuit) - 30.21 $/h* — Québec · 💰 30,21 $/h (prime de nuit incluse) · parue le 2026-08-12.
65 +Exemple réel : *Journalier de production - 28.21 $/h* — Québec · 28.21 $/h · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Opérateur extrusion (nuit) - 30.21 $/h* — Québec · 💰 30
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 5/5 actives (100 %)
79 −- **GPS** : 5/5 actives (100 %)
80 −- **Mode** : 1/5 actives (20 %)
81 −- **Parution** : 5/5 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 5, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 15 (dont **11 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 8/11 actives (73 %)
79 +- **GPS** : 11/11 actives (100 %)
80 +- **Mode** : 0/11 actives (0 %)
81 +- **Parution** : 11/11 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 11, +2, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync bainmagique` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bainmagique' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bardel_entertainment.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bardel_entertainment.md
7 7 Rôle : Fiche connecteur — Bardel Entertainment (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,14 +49,14 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 50 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 20 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 40 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 0 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Expression of Interest - Superviseur de l'Eclairage / Lighting
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 5/5 actives (100 %)
79 −- **GPS** : 5/5 actives (100 %)
80 −- **Mode** : 0/5 actives (0 %)
81 −- **Parution** : 5/5 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 5, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
77 +- **Offres en base** : 5 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 2/2 actives (100 %)
79 +- **GPS** : 2/2 actives (100 %)
80 +- **Mode** : 0/2 actives (0 %)
81 +- **Parution** : 2/2 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 385
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync bardel_entertainment` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bardel_entertainment' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/barorh.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/barorh.md
7 7 Rôle : Fiche connecteur — Baro RH (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **22 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 32 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 95 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,19 +72,23 @@ Exemple réel : *Avocat(e) litige civil et/ou administratif* — Québec · ∅
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 22 (dont **22 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/22 actives (0 %)
79 79 - **GPS** : 22/22 actives (100 %)
80 80 - **Mode** : 1/22 actives (5 %)
81 81 - **Parution** : 22/22 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 26, +0, ~8, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 26, +0, ~8, -0
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync barorh` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='barorh' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/baseten.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/baseten.md
7 7 Rôle : Fiche connecteur — Baseten (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **23 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **25 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **23 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 60 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **23 offres actives** de la source (base live, 2026
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 64
65 −Exemple réel : *Software Engineer - Continuous Delivery* — ∅ · $165K - $330K · parue le 2026-08-11.
65 +Exemple réel : *Software Engineer - Identity & Authorization* — ∅ · $240K - $285K · parue le 2026-09-02.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Software Engineer - Continuous Delivery* — ∅ · $165K - $33
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 25 (dont **23 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 23/23 actives (100 %)
79 −- **GPS** : 0/23 actives (0 %)
80 −- **Mode** : 23/23 actives (100 %)
81 −- **Parution** : 23/23 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 23, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 27 (dont **25 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 25/25 actives (100 %)
79 +- **GPS** : 0/25 actives (0 %)
80 +- **Mode** : 25/25 actives (100 %)
81 +- **Parution** : 25/25 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 25, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='api.ashbyhq.com', port=443): Max retries exceeded with url: /pos… | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync baseten` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='baseten' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bathfitterdistributinginc.md +22 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bathfitterdistributinginc.md
7 7 Rôle : Fiche connecteur — Bath Fitter Corporate (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 33 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 60 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 60 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 40 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 80 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Extrusion Operator (night) - $30.21 /hour* — Québec · 💰 $30.21/hour (night shift premium included) · parue le 2026-08-12.
65 +Exemple réel : *Production Worker – $28.21 /hour* — Québec · $28.21 / hour · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Extrusion Operator (night) - $30.21 /hour* — Québec · 💰
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 3/3 actives (100 %)
79 −- **GPS** : 0/3 actives (0 %)
80 −- **Mode** : 1/3 actives (33 %)
81 −- **Parution** : 3/3 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 3, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 2
77 +- **Offres en base** : 9 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 3/5 actives (60 %)
79 +- **GPS** : 5/5 actives (100 %)
80 +- **Mode** : 0/5 actives (0 %)
81 +- **Parution** : 5/5 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 5, +2, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 278
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync bathfitterdistributinginc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bathfitterdistributinginc' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/batimoinc.md +19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/batimoinc.md
7 7 Rôle : Fiche connecteur — EMD-Batimo (employeur direct, ATS bamboohr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **14 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 93 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 93 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 89 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Technicien/ne comptable* — Québec · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Directeur/trice régional/e des opérations* — Québec · ∅ · parue le 2026-09-11.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *Technicien/ne comptable* — Québec · ∅ · parue le 2026-08
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 14 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/14 actives (0 %)
84 −- **GPS** : 0/14 actives (0 %)
85 −- **Mode** : 14/14 actives (100 %)
86 −- **Parution** : 14/14 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 14, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 2
82 +- **Offres en base** : 16 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/9 actives (0 %)
84 +- **GPS** : 9/9 actives (100 %)
85 +- **Mode** : 9/9 actives (100 %)
86 +- **Parution** : 9/9 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 9, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 278
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='batimoinc.bamboohr.com', port=443): Max retries exceeded with ur… | 1 | 2026-09-18 12:53 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync batimoinc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='batimoinc' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bauerhockeycascademaveriklacrosse.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bauerhockeycascademaveriklacrosse.md
7 7 Rôle : Fiche connecteur — Bauer Hockey/ Cascade Maverik Lacrosse (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 50 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
@@ -72,19 +72,23 @@ Exemple réel : *Bauer: Préposé aux patins professionnels (journalier de produ
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/2 actives (50 %)
79 79 - **GPS** : 2/2 actives (100 %)
80 80 - **Mode** : 0/2 actives (0 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync bauerhockeycascademaveriklacrosse` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bauerhockeycascademaveriklacrosse' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bauerhockeycascademaveriklacrossefc.md +21 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bauerhockeycascademaveriklacrossefc.md
7 7 Rôle : Fiche connecteur — French Canadian Bauer Hockey/ Cascade Maverik Lacrosse (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,20 +49,20 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 50 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 50 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 67 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 67 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 67 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Bauer: Journalier de production* — Blainville · Salaire à l'embauche: 24.65$/h · parue le 2026-05-27.
65 +Exemple réel : *Bauer: Préposé.e à l'entretien (électromécanicien.ne)* — Blainville · Salaire à l'embauche: 29.10$/h · parue le 2026-09-11.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,19 +72,23 @@ Exemple réel : *Bauer: Journalier de production* — Blainville · Salaire à l
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 1/2 actives (50 %)
79 −- **GPS** : 2/2 actives (100 %)
80 −- **Mode** : 0/2 actives (0 %)
81 −- **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:02 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 2/3 actives (67 %)
79 +- **GPS** : 3/3 actives (100 %)
80 +- **Mode** : 0/3 actives (0 %)
81 +- **Parution** : 3/3 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 3, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync bauerhockeycascademaveriklacrossefc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bauerhockeycascademaveriklacrossefc' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bayshore.md +17 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bayshore.md
7 7 Rôle : Fiche connecteur — Bayshore HealthCare (employeur direct, ATS taleo)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -39,7 +39,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 ## Champs → schéma
41 41
42 −Complétude mesurée sur les **13 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
42 +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
43 43
44 44 | Champ (`jobs.*`) | Rôle | Complétude |
45 45 |---|---|---|
@@ -60,7 +60,7 @@ Complétude mesurée sur les **13 offres actives** de la source (base live, 2026
60 60 | `date_posted` — Date de parution | ISO 8601 | 0 % |
61 61 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
62 62 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
63 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 38 % |
63 +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 33 % |
64 64 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
65 65 | `apply_url` — Candidature | lien de candidature directe | 0 % |
66 66 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
@@ -80,19 +80,24 @@ Exemple réel : *Gestionnaire des services infirmiers, services de pharmacie sp
80 80
81 81 ## Volumétrie & complétude live
82 82
83 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
83 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
84 84
85 −- **Offres en base** : 14 (dont **13 actives**, 0 masquées comme doublons `dup_of`)
86 −- **Salaire** : 0/13 actives (0 %)
87 −- **GPS** : 13/13 actives (100 %)
88 −- **Mode** : 0/13 actives (0 %)
89 −- **Parution** : 0/13 actives (0 %)
90 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 13, +0, ~0, -0
91 −- **Syncs enregistrés** (`sync_log`) : 97
85 +- **Offres en base** : 17 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
86 +- **Salaire** : 0/9 actives (0 %)
87 +- **GPS** : 9/9 actives (100 %)
88 +- **Mode** : 0/9 actives (0 %)
89 +- **Parution** : 0/9 actives (0 %)
90 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 8, +0, ~0, -0
91 +- **Syncs enregistrés** (`sync_log`) : 373
92 92
93 93 ## Erreurs & dépannage
94 94
95 −Aucune erreur dans `sync_log` pour cette source.
95 +Erreurs relevées dans `sync_log` :
96 +
97 +| Erreur | Occurrences | Dernière fois |
98 +|---|---|---|
99 +| HTTPSConnectionPool(host='bayshore.taleo.net', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:53 |
100 +| Expecting value: line 2 column 1 (char 2) | 1 | 2026-09-09 06:29 |
96 101
97 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync bayshore` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bayshore' ORDER BY ts DESC LIMIT 5;"`
98 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bc2.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bc2.md
7 7 Rôle : Fiche connecteur — Groupe BC2 (employeur direct, ATS bamboohr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 50 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *DIRECTEUR(TRICE) DE PROJET \| URBANISME, DÉVELOPPEMENT IMMOBILIER* — Montréal · ∅ · parue le 2026-07-27.
65 +Exemple réel : *CHARGÉ(E) DE PROJET \| URBANISME, DÉVELOPPEMENT IMMOBILIER* — Montréal · ∅ · parue le 2026-09-01.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,19 +77,23 @@ Exemple réel : *DIRECTEUR(TRICE) DE PROJET \| URBANISME, DÉVELOPPEMENT IMMOBIL
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/2 actives (0 %)
84 −- **GPS** : 2/2 actives (100 %)
85 −- **Mode** : 2/2 actives (100 %)
86 −- **Parution** : 2/2 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 2, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 108
82 +- **Offres en base** : 3 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/1 actives (0 %)
84 +- **GPS** : 1/1 actives (100 %)
85 +- **Mode** : 1/1 actives (100 %)
86 +- **Parution** : 1/1 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 382
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| HTTPSConnectionPool(host='bc2.bamboohr.com', port=443): Max retries exceeded with url: /ca… | 1 | 2026-09-18 12:53 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync bc2` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bc2' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bces.md +10 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bces.md
7 7 Rôle : Fiche connecteur — BCES Global (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -72,19 +72,23 @@ Exemple réel : *Power Systems Field Technologist* — Montréal · ∅ · parue
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 282
84 84
85 85 ## Erreurs & dépannage
86 86
87 −Aucune erreur dans `sync_log` pour cette source.
87 +Erreurs relevées dans `sync_log` :
88 +
89 +| Erreur | Occurrences | Dernière fois |
90 +|---|---|---|
91 +| HTTPSConnectionPool(host='boards-api.greenhouse.io', port=443): Max retries exceeded with … | 1 | 2026-09-18 12:53 |
88 92
89 93 - Rejouer un sync isolé : `.venv/bin/python run.py sync bces` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bces' ORDER BY ts DESC LIMIT 5;"`
90 94 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bcf.md +18 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bcf.md
7 7 Rôle : Fiche connecteur — Search for (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,16 +55,16 @@ Complétude mesurée sur les **22 offres actives** de la source (base live, 2026
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 96 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 77 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 88 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Analyste en conformité et conflits d'intérêts* — Montréal · ∅ · parue le 2026-08-19.
67 +Exemple réel : *Avocat·e en droit des technologies et IA (4 à 8 ans)* — Montréal · ∅ · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,23 @@ Exemple réel : *Analyste en conformité et conflits d'intérêts* — Montréal
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 22 (dont **22 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/22 actives (0 %)
86 −- **GPS** : 22/22 actives (100 %)
87 −- **Mode** : 0/22 actives (0 %)
88 −- **Parution** : 22/22 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 22, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 31 (dont **24 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/24 actives (0 %)
86 +- **GPS** : 24/24 actives (100 %)
87 +- **Mode** : 0/24 actives (0 %)
88 +- **Parution** : 24/24 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 24, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 282
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| HTTPSConnectionPool(host='bcf.wd10.myworkdayjobs.com', port=443): Max retries exceeded wit… | 1 | 2026-09-18 12:54 |
95 99
96 100 - Rejouer un sync isolé : `.venv/bin/python run.py sync bcf` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bcf' ORDER BY ts DESC LIMIT 5;"`
97 101 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bcp.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bcp.md
7 7 Rôle : Fiche connecteur — Banyan Capital Partners (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Product Compliance Specialist* — Québec · ∅ · parue le 2026-06-12.
65 +Exemple réel : *Accounting Analyst/ Analyste comptable* — Québec · ∅ · parue le 2026-06-02.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Product Compliance Specialist* — Québec · ∅ · parue le 2
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/2 actives (0 %)
79 −- **GPS** : 2/2 actives (100 %)
80 −- **Mode** : 0/2 actives (0 %)
81 −- **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/1 actives (0 %)
79 +- **GPS** : 1/1 actives (100 %)
80 +- **Mode** : 0/1 actives (0 %)
81 +- **Parution** : 1/1 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:38 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 282
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bdc.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bdc.md
7 7 Rôle : Fiche connecteur — BDC (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **17 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,16 +55,16 @@ Complétude mesurée sur les **17 offres actives** de la source (base live, 2026
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 41 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *SENIOR ACCOUNT MANAGER, FINANCING* — Sherbrooke · ∅ · parue le 2026-08-24.
67 +Exemple réel : *SENIOR MANAGER, UNDERWRITING – CREDIT RISK MANAGEMENT* — Montréal · ∅ · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *SENIOR ACCOUNT MANAGER, FINANCING* — Sherbrooke · ∅ · par
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 22 (dont **17 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/17 actives (0 %)
86 −- **GPS** : 17/17 actives (100 %)
87 −- **Mode** : 0/17 actives (0 %)
88 −- **Parution** : 17/17 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 17, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 96
84 +- **Offres en base** : 28 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/2 actives (0 %)
86 +- **GPS** : 2/2 actives (100 %)
87 +- **Mode** : 0/2 actives (0 %)
88 +- **Parution** : 2/2 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 2, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 370
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bdl_energie.md +18 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bdl_energie.md
7 7 Rôle : Fiche connecteur — BDL Énergie (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -46,23 +46,23 @@ Complétude mesurée sur les **10 offres actives** de la source (base live, 2026
46 46 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 10 % |
50 −| `postal_code` — Code postal | code postal si publié | 40 % |
49 +| `address` — Adresse | adresse du lieu de travail | 33 % |
50 +| `postal_code` — Code postal | code postal si publié | 100 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 33 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 33 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 67 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 90 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 30 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 64
65 −Exemple réel : *Commis(e) à la répartition* — 9771 Boul Métropolitain E, Anjou, QC · ∅ · parue le 2026-08-19.
65 +Exemple réel : *Technicien(ne) comptable* — 13105 Rue Jean Grou, Montréal, QC H1A 3N6 · Rémunération : 28,00$ à 32,00$ par heure · parue le 2026-09-14.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Commis(e) à la répartition* — 9771 Boul Métropolitain E, A
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/10 actives (0 %)
79 −- **GPS** : 3/10 actives (30 %)
80 −- **Mode** : 0/10 actives (0 %)
81 −- **Parution** : 10/10 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 10, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 28
77 +- **Offres en base** : 11 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 1/3 actives (33 %)
79 +- **GPS** : 0/3 actives (0 %)
80 +- **Mode** : 0/3 actives (0 %)
81 +- **Parution** : 3/3 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 3, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 302
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bdo.md +24 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bdo.md
7 7 Rôle : Fiche connecteur — Bdo (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **50 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **22 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 76 % |
50 +| `region` — Région | région administrative | 76 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 14 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 10 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 10 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 72 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 18 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 32 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 76 % |
66 66
67 −Exemple réel : *Executive Assistant, Advisory (18-Months Contract)* — Montréal · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Co-op or Intern, Data & Analytics (January 2027)* — ∅ · The expected range of compensation for this role is $53,000-$78,000. · parue le 2026-09-15.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Executive Assistant, Advisory (18-Months Contract)* — Montré
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 22 (dont **22 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/22 actives (0 %)
86 −- **GPS** : 22/22 actives (100 %)
87 −- **Mode** : 3/22 actives (14 %)
88 −- **Parution** : 22/22 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 22, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 59 (dont **50 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/50 actives (10 %)
86 +- **GPS** : 38/50 actives (76 %)
87 +- **Mode** : 7/50 actives (14 %)
88 +- **Parution** : 50/50 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 50, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 280
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:52 |
99 +| Expecting value: line 1 column 1 (char 0) | 7 | 2026-08-29 03:17 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync bdo` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bdo' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bdx.md +23 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bdx.md
7 7 Rôle : Fiche connecteur — Bdx (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -47,24 +47,24 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
50 +| `region` — Région | région administrative | 80 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 40 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 40 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 40 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 80 % |
66 66
67 −Exemple réel : *Bilingual Field Service Representative (Montreal)* — Montréal · ∅ · parue le 2026-07-27.
67 +Exemple réel : *Consultant en Déploiement Bilingue / Bilingual Deployment Consultant (QC or ON)* — Québec · Salary Range Information: $69000 - $119000 Annual · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Bilingual Field Service Representative (Montreal)* — Montréa
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/1 actives (0 %)
86 −- **GPS** : 1/1 actives (100 %)
87 −- **Mode** : 0/1 actives (0 %)
88 −- **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 1, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 7 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 2/5 actives (40 %)
86 +- **GPS** : 4/5 actives (80 %)
87 +- **Mode** : 2/5 actives (40 %)
88 +- **Parution** : 5/5 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 5, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 279
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:53 |
99 +| Expecting value: line 1 column 1 (char 0) | 6 | 2026-08-29 03:17 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync bdx` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bdx' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/behavox.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/behavox.md
7 7 Rôle : Fiche connecteur — Behavox (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,10 +50,10 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 12 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 12 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 12 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Principal HR Business Partner* — Montréal · ∅ · parue le 2026-08-21.
65 +Exemple réel : *Senior Manager, FP&A* — Montréal · The Senior Manager, FP&A reports to the Chief Operating Officer and owns the financial pla… · parue le 2026-09-10.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Principal HR Business Partner* — Montréal · ∅ · parue le
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/6 actives (0 %)
79 −- **GPS** : 6/6 actives (100 %)
80 −- **Mode** : 0/6 actives (0 %)
81 −- **Parution** : 6/6 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 6, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 22 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 1/8 actives (12 %)
79 +- **GPS** : 8/8 actives (100 %)
80 +- **Mode** : 0/8 actives (0 %)
81 +- **Parution** : 8/8 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 8, +0, ~0, -2
83 +- **Syncs enregistrés** (`sync_log`) : 279
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bell_textron.md +19 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bell_textron.md
7 7 Rôle : Fiche connecteur — Bell Textron Canada (employeur direct, ATS taleo)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -39,7 +39,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 ## Champs → schéma
41 41
42 −Complétude mesurée sur les **16 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
42 +Complétude mesurée sur les **18 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
43 43
44 44 | Champ (`jobs.*`) | Rôle | Complétude |
45 45 |---|---|---|
@@ -52,7 +52,7 @@ Complétude mesurée sur les **16 offres actives** de la source (base live, 2026
52 52 | `address` — Adresse | adresse du lieu de travail | 0 % |
53 53 | `postal_code` — Code postal | code postal si publié | 0 % |
54 54 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
55 −| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
55 +| `employment_type` — Type | temps_plein / temps_partiel / … | 6 % |
56 56 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
57 57 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
58 58 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
@@ -60,12 +60,12 @@ Complétude mesurée sur les **16 offres actives** de la source (base live, 2026
60 60 | `date_posted` — Date de parution | ISO 8601 | 100 % |
61 61 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
62 62 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
63 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 38 % |
63 +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 28 % |
64 64 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
65 65 | `apply_url` — Candidature | lien de candidature directe | 0 % |
66 66 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
67 67
68 −Exemple réel : *Ingénieur en assurance de la conception d'équipements électroniques /Electronic Equipment …* — Québec · ∅ · parue le 2026-08-23.
68 +Exemple réel : *Acheteur tactique, associé / Tactical Buyer , Associate* — Québec · ∅ · parue le 2026-09-11.
69 69
70 70 ## Fréquence & budgets
71 71
@@ -80,19 +80,24 @@ Exemple réel : *Ingénieur en assurance de la conception d'équipements électr
80 80
81 81 ## Volumétrie & complétude live
82 82
83 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
83 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
84 84
85 −- **Offres en base** : 16 (dont **16 actives**, 0 masquées comme doublons `dup_of`)
86 −- **Salaire** : 0/16 actives (0 %)
87 −- **GPS** : 16/16 actives (100 %)
88 −- **Mode** : 0/16 actives (0 %)
89 −- **Parution** : 16/16 actives (100 %)
90 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 16, +0, ~0, -0
91 −- **Syncs enregistrés** (`sync_log`) : 96
85 +- **Offres en base** : 25 (dont **18 actives**, 0 masquées comme doublons `dup_of`)
86 +- **Salaire** : 0/18 actives (0 %)
87 +- **GPS** : 18/18 actives (100 %)
88 +- **Mode** : 0/18 actives (0 %)
89 +- **Parution** : 18/18 actives (100 %)
90 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 18, +0, ~0, -0
91 +- **Syncs enregistrés** (`sync_log`) : 369
92 92
93 93 ## Erreurs & dépannage
94 94
95 −Aucune erreur dans `sync_log` pour cette source.
95 +Erreurs relevées dans `sync_log` :
96 +
97 +| Erreur | Occurrences | Dernière fois |
98 +|---|---|---|
99 +| 500 Server Error: Internal Server Error for url: https://textron.taleo.net/careersection/r… | 1 | 2026-09-08 23:29 |
100 +| taleo textron: numéro de portail introuvable | 1 | 2026-09-02 03:20 |
96 101
97 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync bell_textron` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bell_textron' ORDER BY ts DESC LIMIT 5;"`
98 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/bellatrx_inc.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bellatrx_inc.md
7 7 Rôle : Fiche connecteur — BellatRx (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **15 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -46,14 +46,14 @@ Complétude mesurée sur les **15 offres actives** de la source (base live, 2026
46 46 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 60 % |
49 +| `address` — Adresse | adresse du lieu de travail | 70 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 7 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 10 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 80 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **15 offres actives** de la source (base live, 2026
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Coordonnateur (trice) Logistique / Logistics Coordinator* — Pointe-Claire · ∅ · parue le 2026-08-21.
65 +Exemple réel : *Gestionnaire de Projet / Project Manager* — Pointe-Claire · ∅ · parue le 2026-09-02.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Coordonnateur (trice) Logistique / Logistics Coordinator* — P
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 16 (dont **15 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/15 actives (0 %)
79 −- **GPS** : 15/15 actives (100 %)
80 −- **Mode** : 1/15 actives (7 %)
81 −- **Parution** : 15/15 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 15, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 16 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/10 actives (0 %)
79 +- **GPS** : 10/10 actives (100 %)
80 +- **Mode** : 1/10 actives (10 %)
81 +- **Parution** : 10/10 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 10, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 279
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/belron.md +24 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/belron.md
7 7 Rôle : Fiche connecteur — Comptable en immobilier (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **27 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -47,24 +47,24 @@ Complétude mesurée sur les **27 offres actives** de la source (base live, 2026
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 96 % |
50 +| `region` — Région | région administrative | 95 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 5 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 5 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 82 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 44 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 41 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 96 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 95 % |
66 66
67 −Exemple réel : *National Director, Distribution & Operational Transformation* — Montréal · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Fleet Specialist* — Montréal · Salary range : $85,000 - $100,000 · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *National Director, Distribution & Operational Transformation*
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 27 (dont **27 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/27 actives (0 %)
86 −- **GPS** : 26/27 actives (96 %)
87 −- **Mode** : 0/27 actives (0 %)
88 −- **Parution** : 27/27 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 27, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 33 (dont **22 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/22 actives (5 %)
86 +- **GPS** : 21/22 actives (95 %)
87 +- **Mode** : 0/22 actives (0 %)
88 +- **Parution** : 22/22 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 22, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 279
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:54 |
99 +| 404 Client Error: Not Found for url: https://belron.wd3.myworkdayjobs.com/wday/cxs/belron/… | 1 | 2026-09-03 18:17 |
100 +| Expecting value: line 1 column 1 (char 0) | 6 | 2026-08-29 03:18 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync belron` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='belron' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/beneva.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/beneva.md
7 7 Rôle : Fiche connecteur — Beneva (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **47 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **56 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,21 +50,21 @@ Complétude mesurée sur les **47 offres actives** de la source (base live, 2026
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 2 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 4 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 4 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 4 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 84 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 62 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 73 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Business Projects and Practice Improvement Consultant, Group Insurance* — Québec · **For ONTARIO only ** Salary range: (89,719 $-112,149 $) /year *This represents the expect… · parue le 2026-08-24.
67 +Exemple réel : *Agent service à la clientèle* — Québec · Salaire débutant à 25,34$/h + prime d'anglais! Plusieurs postes disponibles · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Business Projects and Practice Improvement Consultant, Group In
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 71 (dont **47 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 2/47 actives (4 %)
86 −- **GPS** : 47/47 actives (100 %)
87 −- **Mode** : 1/47 actives (2 %)
88 −- **Parution** : 47/47 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 47, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 96
84 +- **Offres en base** : 123 (dont **56 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 2/56 actives (4 %)
86 +- **GPS** : 56/56 actives (100 %)
87 +- **Mode** : 2/56 actives (4 %)
88 +- **Parution** : 56/56 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 56, +1, ~1, -0
90 +- **Syncs enregistrés** (`sync_log`) : 365
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/benmor.md +18 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/benmor.md
7 7 Rôle : Fiche connecteur — FOREMAN ASSISTANT SHIPPING RECEIVING (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,21 +50,21 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 80 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 80 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 67 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 67 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 33 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 33 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 33 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 67 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 33 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *COORDONNATEUR(-TRICE) QUALITÉ* — Saint-Hyacinthe · ∅ · parue le 2026-08-12.
67 +Exemple réel : *SUPERVISEUR(E) EXPEDITION* — Saint-Hyacinthe · 59,000$ - 69,000$ / année · parue le 2026-09-16.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *COORDONNATEUR(-TRICE) QUALITÉ* — Saint-Hyacinthe · ∅ · p
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 6 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/5 actives (0 %)
86 −- **GPS** : 5/5 actives (100 %)
87 −- **Mode** : 4/5 actives (80 %)
88 −- **Parution** : 5/5 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 5, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 9 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/3 actives (33 %)
86 +- **GPS** : 3/3 actives (100 %)
87 +- **Mode** : 2/3 actives (67 %)
88 +- **Parution** : 3/3 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 3, +0, ~1, -0
90 +- **Syncs enregistrés** (`sync_log`) : 277
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bento_sushi.md +17 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bento_sushi.md
7 7 Rôle : Fiche connecteur — Bento Sushi (employeur direct, ATS adp)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,19 +52,19 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
52 52 | `postal_code` — Code postal | code postal si publié | 100 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 89 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 91 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 18 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 11 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 9 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Membres de l'équipe de service alimentaire* — Québec · ∅ · parue le 2026-08-14.
67 +Exemple réel : *Membres de l'équipe de service alimentaire* — Salaberry-de-Valleyfield · Temps partiel commencent immédiatement à $17.00 /heure · parue le 2026-09-03.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Membres de l'équipe de service alimentaire* — Québec · ∅
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 8/9 actives (89 %)
86 −- **GPS** : 9/9 actives (100 %)
87 −- **Mode** : 0/9 actives (0 %)
88 −- **Parution** : 9/9 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 9, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 12 (dont **11 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 10/11 actives (91 %)
86 +- **GPS** : 11/11 actives (100 %)
87 +- **Mode** : 0/11 actives (0 %)
88 +- **Parution** : 11/11 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 11, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 354
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,6 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 +| 500 Server Error: Internal Server Error for url: https://workforcenow.adp.com/mascsr/defau… | 1 | 2026-09-19 11:35 |
99 +| Expecting value: line 1 column 1 (char 0) | 4 | 2026-08-30 01:04 |
98 100 | 500 Server Error: for url: https://workforcenow.adp.com/mascsr/default/careercenter/publi… | 1 | 2026-08-22 00:30 |
99 101
100 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync bento_sushi` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bento_sushi' ORDER BY ts DESC LIMIT 5;"`
modified docs/connecteurs/berger.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/berger.md
7 7 Rôle : Fiche connecteur — Berger (tourbe horticole) (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,22 +49,22 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 −| `postal_code` — Code postal | code postal si publié | 75 % |
52 +| `postal_code` — Code postal | code postal si publié | 67 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Conseiller aux producteurs* — Montréal · ∅ · parue le 2026-08-12.
67 +Exemple réel : *Contremaître de cour - Soir* — Saint-Modeste · ∅ · parue le 2026-08-28.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Conseiller aux producteurs* — Montréal · ∅ · parue le 20
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/4 actives (0 %)
86 −- **GPS** : 4/4 actives (100 %)
87 −- **Mode** : 0/4 actives (0 %)
88 −- **Parution** : 4/4 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 4, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 8 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/3 actives (0 %)
86 +- **GPS** : 3/3 actives (100 %)
87 +- **Mode** : 0/3 actives (0 %)
88 +- **Parution** : 3/3 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 3, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 271
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bestbuycanada.md +21 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bestbuycanada.md
7 7 Rôle : Fiche connecteur — Best Buy Canada (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **26 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **35 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -47,7 +47,7 @@ Complétude mesurée sur les **26 offres actives** de la source (base live, 2026
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 35 % |
50 +| `region` — Région | région administrative | 49 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
@@ -55,16 +55,16 @@ Complétude mesurée sur les **26 offres actives** de la source (base live, 2026
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 97 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 96 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 49 % |
66 66
67 −Exemple réel : *Associé(e) des ventes au détail (Saisonnier(ère)) / Retail Sales Associate (Seasonal)* — Granby · ∅ · parue le 2026-08-25.
67 +Exemple réel : *Associé(e) saisonnier(ère) des ventes au détail* — 11906 Place Laurier · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Associé(e) des ventes au détail (Saisonnier(ère)) / Retail S
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 26 (dont **26 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/26 actives (0 %)
86 −- **GPS** : 0/26 actives (0 %)
87 −- **Mode** : 0/26 actives (0 %)
88 −- **Parution** : 26/26 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 26, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 75 (dont **35 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/35 actives (0 %)
86 +- **GPS** : 17/35 actives (49 %)
87 +- **Mode** : 0/35 actives (0 %)
88 +- **Parution** : 35/35 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 35, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 271
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 02:55 |
99 +| Expecting value: line 1 column 1 (char 0) | 4 | 2026-08-29 03:18 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync bestbuycanada` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bestbuycanada' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/betatechnologiesinc.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/betatechnologiesinc.md
7 7 Rôle : Fiche connecteur — BETA Technologies (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,10 +50,10 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 86 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 86 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 83 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 83 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 83 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Office Coordinator - Montreal* — Montréal · $65,000 — $75
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 6/7 actives (86 %)
79 −- **GPS** : 7/7 actives (100 %)
80 −- **Mode** : 0/7 actives (0 %)
81 −- **Parution** : 7/7 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 7, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 7 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 5/6 actives (83 %)
79 +- **GPS** : 6/6 actives (100 %)
80 +- **Mode** : 0/6 actives (0 %)
81 +- **Parution** : 6/6 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 6, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 276
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bhvr.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bhvr.md
7 7 Rôle : Fiche connecteur — Behaviour Interactif (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **38 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **34 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **38 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 97 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 63 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 65 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Senior Systems Programmer - 7 Days to Die \| Programmeur·euse systèmes sénior·e - 7 Days t…* — Montréal · ∅ · parue le 2026-08-19.
65 +Exemple réel : *Financial Analyst & Planification \| Analyste financier·ère et planification* — Montréal · ∅ · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Senior Systems Programmer - 7 Days to Die \| Programmeur·euse
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 41 (dont **38 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/38 actives (0 %)
79 −- **GPS** : 38/38 actives (100 %)
80 −- **Mode** : 38/38 actives (100 %)
81 −- **Parution** : 38/38 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 38, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 96
77 +- **Offres en base** : 55 (dont **34 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/34 actives (0 %)
79 +- **GPS** : 34/34 actives (100 %)
80 +- **Mode** : 34/34 actives (100 %)
81 +- **Parution** : 34/34 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 33, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 364
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bigbang.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bigbang.md
7 7 Rôle : Fiche connecteur — Big Bang (employeur direct, ATS bamboohr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Client Solutions Manager* — Montréal · CAD 38.46 per hour
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 2/8 actives (25 %)
84 84 - **GPS** : 8/8 actives (100 %)
85 85 - **Mode** : 8/8 actives (100 %)
86 86 - **Parution** : 8/8 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 8, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 96
87 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 8, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 364
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/billups.md +7 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/billups.md
7 7 Rôle : Fiche connecteur — Billups (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Account Manager - Canada* — Montréal · 75 000,00 $ par année · parue le 2026-07-29.
65 +Exemple réel : *Account Manager - Canada* — Montréal · 75 000,00 $ par année · parue le 2026-09-04.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Account Manager - Canada* — Montréal · 75 000,00 $ par ann
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/1 actives (100 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:03 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 28
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 296
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bird.md +20 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bird.md
7 7 Rôle : Fiche connecteur — Administrateur comptable principal (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,21 +50,21 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 8 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 10 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 90 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Contrôleuse de coûts* — Montréal · ∅ · parue le 2026-08-05.
67 +Exemple réel : *Contrôleuse de coûts* — Montréal · ∅ · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Contrôleuse de coûts* — Montréal · ∅ · parue le 2026-0
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 12 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/12 actives (0 %)
86 −- **GPS** : 12/12 actives (100 %)
87 −- **Mode** : 1/12 actives (8 %)
88 −- **Parution** : 12/12 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 12, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 12 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/10 actives (0 %)
86 +- **GPS** : 10/10 actives (100 %)
87 +- **Mode** : 1/10 actives (10 %)
88 +- **Parution** : 10/10 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 10, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 276
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 02:57 |
99 +| Expecting value: line 1 column 1 (char 0) | 4 | 2026-08-29 03:18 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync bird` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bird' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/biximontreal.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/biximontreal.md
7 7 Rôle : Fiche connecteur — BIXI Montréal (employeur direct, ATS recruitee)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -72,15 +72,15 @@ Exemple réel : *Technicien(ne) – Service réseau* — Montréal · • Un sal
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/2 actives (50 %)
79 79 - **GPS** : 2/2 actives (100 %)
80 80 - **Mode** : 2/2 actives (100 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 377
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/black_mcdonald_francais.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/black_mcdonald_francais.md
7 7 Rôle : Fiche connecteur — Black & McDonald (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 67 % |
64 64
65 −Exemple réel : *Frigoriste Compagnon* — Brossard · ∅ · parue le 2026-05-12.
65 +Exemple réel : *Représentant(e) du développement des affaires* — Brossard · ∅ · parue le 2026-09-09.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Frigoriste Compagnon* — Brossard · ∅ · parue le 2026-05-1
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/2 actives (0 %)
79 −- **GPS** : 2/2 actives (100 %)
80 −- **Mode** : 0/2 actives (0 %)
81 −- **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 28
77 +- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/3 actives (0 %)
79 +- **GPS** : 2/3 actives (67 %)
80 +- **Mode** : 0/3 actives (0 %)
81 +- **Parution** : 3/3 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 3, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 296
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bleufeu.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bleufeu.md
7 7 Rôle : Fiche connecteur — BLEUFEU (Festival d'été de Québec) (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -79,15 +79,15 @@ Exemple réel : *Candidature spontanée - BLEUFEU* — Québec · ∅ · parue l
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 84 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 0/1 actives (0 %)
86 86 - **GPS** : 1/1 actives (100 %)
87 87 - **Mode** : 0/1 actives (0 %)
88 88 - **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 27
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 1, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 295
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/blgllp.md +17 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/blgllp.md
7 7 Rôle : Fiche connecteur — Blgllp (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 75 % |
50 +| `region` — Région | région administrative | 75 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 25 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 25 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 75 % |
66 66
67 −Exemple réel : *Coordonnateur, Finance* — Montréal · ∅ · parue le 2026-08-21.
67 +Exemple réel : *Manager, Business Development – Disputes / Gestionnaire, Développement des affaires – Liti…* — ∅ · The expected salary range for this position is $90,000 - $110,000, depending on level of e… · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Coordonnateur, Finance* — Montréal · ∅ · parue le 2026-0
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/7 actives (0 %)
86 −- **GPS** : 7/7 actives (100 %)
87 −- **Mode** : 0/7 actives (0 %)
88 −- **Parution** : 7/7 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 7, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 12 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 2/8 actives (25 %)
86 +- **GPS** : 6/8 actives (75 %)
87 +- **Mode** : 0/8 actives (0 %)
88 +- **Parution** : 8/8 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 8, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 276
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bliinx.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bliinx.md
7 7 Rôle : Fiche connecteur — Bliinx (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Fullstack Nodejs developer* — Montréal · ∅ · parue le 20
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 276
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/blockslearning.md +16 −41
@@ -4,19 +4,19 @@ Job·Ka — Groupe KA
4 4 Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/blockslearning.md
7 −Rôle : Fiche connecteur — Daycare Teachers (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
7 +Rôle : Fiche connecteur — Building Blocks Early Learning Center (employeur direct, ATS lever)
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 −# Daycare Teachers (`blockslearning`)
13 +# Building Blocks Early Learning Center (`blockslearning`)
14 14
15 15 **Employeur direct** · Plateforme ATS : [`lever`](ats-lever.md) · Statut registre : actif · Connecteur : `jobka/connectors/blockslearning.py`
16 16
17 17 ## Description
18 18
19 −- **Site** : [Daycare Teachers]()
19 +- **Site** : [Building Blocks Early Learning Center]()
20 20 - **Page carrières** : https://jobs.lever.co/blockslearning
21 21 - **Secteurs** : Éducation, Services sociaux
22 22 - **Région** : East Granby
@@ -29,40 +29,14 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
29 29
30 30 | Attribut | Valeur |
31 31 |---|---|
32 −| `EMPLOYER` | `Daycare Teachers` |
32 +| `EMPLOYER` | `Building Blocks Early Learning Center` |
33 33 | `ORG` | `blockslearning` |
34 34 - **Throttle** : 1.0 s entre requêtes.
35 35 - **Filtre Québec** : seuls les postes localisés au Québec sont conservés (facette serveur quand l'ATS en offre une, sinon `is_quebec_location` côté client).
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 −
41 −| Champ (`jobs.*`) | Rôle | Complétude |
42 −|---|---|---|
43 −| `title` — Titre | titre du poste | 100 % |
44 −| `employer` — Employeur | nom de l'entreprise | 100 % |
45 −| `url` — URL | lien direct vers l'offre originale | 100 % |
46 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 100 % |
48 −| `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 −| `date_posted` — Date de parution | ISO 8601 | 100 % |
58 −| `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 −| `apply_url` — Candidature | lien de candidature directe | 100 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 −
65 −Exemple réel : *Daycare Teachers* — Granby · ∅ · parue le 2026-05-22.
39 +*Aucune offre active en base pour cette source.*
66 40
67 41 ## Fréquence & budgets
68 42
@@ -72,15 +46,15 @@ Exemple réel : *Daycare Teachers* — Granby · ∅ · parue le 2026-05-22.
72 46
73 47 ## Volumétrie & complétude live
74 48
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
49 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 50
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/1 actives (0 %)
79 −- **GPS** : 1/1 actives (100 %)
80 −- **Mode** : 1/1 actives (100 %)
81 −- **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
51 +- **Offres en base** : 2 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
52 +- **Salaire** : 0/0 actives (—)
53 +- **GPS** : 0/0 actives (—)
54 +- **Mode** : 0/0 actives (—)
55 +- **Parution** : 0/0 actives (—)
56 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 0, +0, ~0, -0
57 +- **Syncs enregistrés** (`sync_log`) : 278
84 58
85 59 ## Erreurs & dépannage
86 60
@@ -91,7 +65,7 @@ Aucune erreur dans `sync_log` pour cette source.
91 65
92 66 ## Licence / conformité
93 67
94 −**Flux public du site carrières officiel de l'employeur** (API JSON de l'ATS ou HTML rendu serveur) — le même contenu que la page carrière affiche publiquement, prévu pour la diffusion des offres, sans authentification. Chaque offre conserve son URL originale et le bouton « Postuler chez Daycare Teachers » renvoie chez l'employeur. Aucune donnée personnelle de candidat n'est collectée. User-Agent identifié `JobKaBot/1.0 (+https://www.job-ka.com; contact@spboucher.ai)` sur les accès directs ; requêtes throttlées et plafonnées par budgets.
68 +**Flux public du site carrières officiel de l'employeur** (API JSON de l'ATS ou HTML rendu serveur) — le même contenu que la page carrière affiche publiquement, prévu pour la diffusion des offres, sans authentification. Chaque offre conserve son URL originale et le bouton « Postuler chez Building Blocks Early Learning Center » renvoie chez l'employeur. Aucune donnée personnelle de candidat n'est collectée. User-Agent identifié `JobKaBot/1.0 (+https://www.job-ka.com; contact@spboucher.ai)` sur les accès directs ; requêtes throttlées et plafonnées par budgets.
95 69
96 70 ## Historique
97 71
@@ -105,4 +79,5 @@ Aucune erreur dans `sync_log` pour cette source.
105 79
106 80 Commits touchant `jobka/connectors/blockslearning.py` :
107 81
82 +- `3bf461d` 2026-08-27 [ka6] fix connecteur blockslearning: employeur Building Blocks Early Learning Center, chaîne de garderies du CONNECTICUT (É.-U.) — les offres captées venaient de « East Granby, CT », pas Granby QC. Faux positif du filtre Québec sur toponyme homonyme, même famille que coorstek b7ebb74 / echodynecorp 5bf3718 / edelmanfinancialenginesllc 6f6298c / epwealth e34defd / insomniacookies 9f92204. Depuis le fix is_quebec_location, ces offres sont correctement rejetées (volume 0). Purge par le mécanisme normal du pipeline: syncs réels → miss_count=2 → active=0 (2 offres retirées); médiane 0 < DRIFT_MIN_BASE=8 donc garde anti-dérive non déclenchée. Vérifié à la source: 11 postings Lever, TOUS au Connecticut, zéro au Québec. Volume 0 = comportement correct. Correction résiduelle: le générateur vague C avait pris le titre de poste « Daycare Teachers » pour le nom d'employeur — EMPLOYER/registre corrigés. Note de contexte ajoutée au connecteur.
108 83 - `c45c753` 2026-08-23 Vague C — +620 connecteurs employeurs directs (350 -> 968)
modified docs/connecteurs/blockstream.md +7 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/blockstream.md
7 7 Rôle : Fiche connecteur — Blockstream (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Accounts Payable & Staff Accountant* — Montréal · ∅ · parue le 2026-06-18.
65 +Exemple réel : *Staff Accountant & Accounts Payable* — Montréal · ∅ · parue le 2026-06-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Accounts Payable & Staff Accountant* — Montréal · ∅ · pa
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 276
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bluetoothsiginc.md +15 −36
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bluetoothsiginc.md
7 7 Rôle : Fiche connecteur — Bluetooth SIG, Inc. (employeur direct, ATS jazzhr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,33 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 −
41 −| Champ (`jobs.*`) | Rôle | Complétude |
42 −|---|---|---|
43 −| `title` — Titre | titre du poste | 100 % |
44 −| `employer` — Employeur | nom de l'entreprise | 100 % |
45 −| `url` — URL | lien direct vers l'offre originale | 100 % |
46 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 100 % |
48 −| `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 50 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 −| `date_posted` — Date de parution | ISO 8601 | 100 % |
58 −| `date_deadline` — Date limite | date limite pour postuler | 100 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 100 % |
62 −| `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 −
65 −Exemple réel : *Senior Software Testing and Quality Engineer II* — Kirkland · ∅ · parue le 2026-08-12.
39 +*Aucune offre active en base pour cette source.*
66 40
67 41 ## Fréquence & budgets
68 42
@@ -77,15 +51,15 @@ Exemple réel : *Senior Software Testing and Quality Engineer II* — Kirkland
77 51
78 52 ## Volumétrie & complétude live
79 53
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
54 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 55
82 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 2/2 actives (100 %)
84 −- **GPS** : 0/2 actives (0 %)
85 −- **Mode** : 1/2 actives (50 %)
86 −- **Parution** : 2/2 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 2, +2, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 1
56 +- **Offres en base** : 2 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
57 +- **Salaire** : 0/0 actives (—)
58 +- **GPS** : 0/0 actives (—)
59 +- **Mode** : 0/0 actives (—)
60 +- **Parution** : 0/0 actives (—)
61 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 0, +0, ~0, -0
62 +- **Syncs enregistrés** (`sync_log`) : 269
89 63
90 64 ## Erreurs & dépannage
91 65
@@ -107,3 +81,8 @@ Aucune erreur dans `sync_log` pour cette source.
107 81 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
108 82 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
109 83 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
84 +
85 +Commits touchant `jobka/connectors/bluetoothsiginc.py` :
86 +
87 +- `7d5cd82` 2026-08-27 [ka6] fix connecteur bluetoothsiginc: employeur Bluetooth SIG, Inc. américain (siège Kirkland WASHINGTON) — les 2 offres captées étaient à Kirkland WA, pas Kirkland QC. Faux positif du filtre Québec sur ville homonyme, même famille que coorstek b7ebb74 / echodynecorp 5bf3718 / edelmanfinancialenginesllc 6f6298c / epwealth e34defd / insomniacookies 9f92204 / blockslearning 3bf461d. Depuis le fix is_quebec_location, ces offres sont correctement rejetées (volume 0). Purge par le mécanisme normal du pipeline: syncs réels → miss_count=2 → active=0 (removed=2); médiane 2 < DRIFT_MIN_BASE=8 donc garde anti-dérive non déclenchée. Vérifié à la source: 3 postings JazzHR (2× Kirkland WA, 1× Japon), zéro au Québec. Sync isolé rejoué: found=0, statut ok. Volume 0 = comportement correct. Note de contexte ajoutée au connecteur (+ correction du chemin dans l'en-tête).
88 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/bly.md +15 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bly.md
7 7 Rôle : Fiche connecteur — Field Mechanic (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 17 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 −| `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 +| `date_deadline` — Date limite | date limite pour postuler | 17 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Val D'or - Commis d'entrepôt temporaire* — Val-d'Or · Rémunération : 25,00 $ à 27,50 $ CA · parue le 2026-08-17.
67 +Exemple réel : *Foreur au Diamant de Souterrain* — Val-d'Or · Salaire Horaire: 33.01$ - 43.39$ à l'heure · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Val D'or - Commis d'entrepôt temporaire* — Val-d'Or · Rému
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/1 actives (100 %)
86 −- **GPS** : 1/1 actives (100 %)
87 −- **Mode** : 0/1 actives (0 %)
88 −- **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 6/6 actives (100 %)
86 +- **GPS** : 6/6 actives (100 %)
87 +- **Mode** : 0/6 actives (0 %)
88 +- **Parution** : 6/6 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:39 — trouvées 6, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 275
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bmo.md +20 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bmo.md
7 7 Rôle : Fiche connecteur — BMO Groupe financier (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **111 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **93 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **111 offres actives** de la source (base live, 202
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 85 % |
50 −| `region` — Région | région administrative | 95 % |
49 +| `city` — Ville | municipalité normalisée | 83 % |
50 +| `region` — Région | région administrative | 94 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 15 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 14 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 95 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 85 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 85 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 86 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 86 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 91 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 98 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 84 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 83 % |
66 66
67 −Exemple réel : *Investment Associate, Wealth Management, Nesbitt Burns* — Montréal · The expected base pay range for this position is: $40,000.00- $42,500.00 · parue le 2026-08-24.
67 +Exemple réel : *Regional Director, High Net Worth Wealth Planning* — Montréal · $110,000.00 - $200,000.00 · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Investment Associate, Wealth Management, Nesbitt Burns* — Mon
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 143 (dont **111 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 94/111 actives (85 %)
86 −- **GPS** : 93/111 actives (84 %)
87 −- **Mode** : 17/111 actives (15 %)
88 −- **Parution** : 111/111 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 111, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 108
84 +- **Offres en base** : 221 (dont **93 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 80/93 actives (86 %)
86 +- **GPS** : 77/93 actives (83 %)
87 +- **Mode** : 13/93 actives (14 %)
88 +- **Parution** : 93/93 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 93, +0, ~2, -0
90 +- **Syncs enregistrés** (`sync_log`) : 375
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:20 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 02:58 |
99 +| Expecting value: line 1 column 1 (char 0) | 4 | 2026-08-29 03:18 |
99 100
100 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync bmo` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bmo' ORDER BY ts DESC LIMIT 5;"`
101 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/boardwalkreit.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/boardwalkreit.md
7 7 Rôle : Fiche connecteur — Associé(e), entretien préventif (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,16 +55,16 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 91 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 44 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 27 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Associé(e), entretien préventif* — Montréal · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Responsable du service-client* — Laval · ∅ · parue le 2026-09-16.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Associé(e), entretien préventif* — Montréal · ∅ · paru
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 10 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/9 actives (0 %)
86 −- **GPS** : 9/9 actives (100 %)
87 −- **Mode** : 0/9 actives (0 %)
88 −- **Parution** : 9/9 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 9, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 25 (dont **11 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/11 actives (0 %)
86 +- **GPS** : 11/11 actives (100 %)
87 +- **Mode** : 0/11 actives (0 %)
88 +- **Parution** : 11/11 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 11, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 274
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bombardier.md +15 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bombardier.md
7 7 Rôle : Fiche connecteur — Bombardier (employeur direct, ATS successfactors)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **809 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **741 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **809 offres actives** de la source (base live, 202
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 100 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 90 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 4 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 86 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 7 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 1 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 51 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 49 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 97 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Analyst Sr, Quality Assurance Product Safety Management* — Dorval · ∅ · parue le 2026-08-22.
65 +Exemple réel : *Installateur, Intérieur* — Dorval · ∅ · parue le 2026-09-19.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Analyst Sr, Quality Assurance Product Safety Management* — Do
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 879 (dont **809 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/809 actives (0 %)
84 −- **GPS** : 809/809 actives (100 %)
85 −- **Mode** : 726/809 actives (90 %)
86 −- **Parution** : 809/809 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 663, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 96
82 +- **Offres en base** : 1107 (dont **741 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/741 actives (0 %)
84 +- **GPS** : 741/741 actives (100 %)
85 +- **Mode** : 637/741 actives (86 %)
86 +- **Parution** : 741/741 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 739, +0, ~2, -0
88 +- **Syncs enregistrés** (`sync_log`) : 361
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/bon_poste.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bon_poste.md
7 7 Rôle : Fiche connecteur — Bon Poste (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Specialiste Devops-CRM* — Brossard · ∅ · parue le 2024-01
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 273
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/boralex.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/boralex.md
7 7 Rôle : Fiche connecteur — Boralex (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **15 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,16 +55,16 @@ Complétude mesurée sur les **15 offres actives** de la source (base live, 2026
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 −| `date_deadline` — Date limite | date limite pour postuler | 13 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 53 % |
60 +| `date_deadline` — Date limite | date limite pour postuler | 25 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Chargé.e de projet ERP* — Montréal · ∅ · parue le 2026-08-17.
67 +Exemple réel : *Directeur(rice) - Gestion des actifs éoliens* — Montréal · ∅ · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Chargé.e de projet ERP* — Montréal · ∅ · parue le 2026-
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 16 (dont **15 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/15 actives (0 %)
86 −- **GPS** : 15/15 actives (100 %)
87 −- **Mode** : 0/15 actives (0 %)
88 −- **Parution** : 15/15 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 15, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 25 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/12 actives (0 %)
86 +- **GPS** : 12/12 actives (100 %)
87 +- **Mode** : 0/12 actives (0 %)
88 +- **Parution** : 12/12 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 12, +0, ~1, -0
90 +- **Syncs enregistrés** (`sync_log`) : 273
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/borealamanagement.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/borealamanagement.md
7 7 Rôle : Fiche connecteur — Boreala Management (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Human Resources & OD Analyst* — Montréal · ∅ · parue le
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/4 actives (0 %)
84 84 - **GPS** : 4/4 actives (100 %)
85 85 - **Mode** : 2/4 actives (50 %)
86 86 - **Parution** : 4/4 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 4, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 4, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 273
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/botpress.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/botpress.md
7 7 Rôle : Fiche connecteur — Botpress (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 78 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 80 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Designer produit sénior (Senior Product Designer)* — Montréal · ∅ · parue le 2026-08-21.
65 +Exemple réel : *FP&A Lead* — Montréal · ∅ · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Designer produit sénior (Senior Product Designer)* — Montré
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 10 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/9 actives (0 %)
79 −- **GPS** : 9/9 actives (100 %)
80 −- **Mode** : 0/9 actives (0 %)
81 −- **Parution** : 9/9 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 11, +0, ~4, -0
83 −- **Syncs enregistrés** (`sync_log`) : 108
77 +- **Offres en base** : 13 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/10 actives (0 %)
79 +- **GPS** : 10/10 actives (100 %)
80 +- **Mode** : 0/10 actives (0 %)
81 +- **Parution** : 10/10 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 12, +0, ~4, -0
83 +- **Syncs enregistrés** (`sync_log`) : 373
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bounteous.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bounteous.md
7 7 Rôle : Fiche connecteur — Bounteous (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Java Developer* — Montréal · ∅ · parue le 2025-03-18.
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 273
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/boxknight.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/boxknight.md
7 7 Rôle : Fiche connecteur — BoxKnight (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Business Development Manager* — Montréal · ∅ · parue le
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 273
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bpa.md +15 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bpa.md
7 7 Rôle : Fiche connecteur — BPA (Experts-conseils) (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **50 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **42 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,21 +50,21 @@ Complétude mesurée sur les **50 offres actives** de la source (base live, 2026
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 2 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 98 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 −| `date_deadline` — Date limite | date limite pour postuler | 2 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 54 % |
60 +| `date_deadline` — Date limite | date limite pour postuler | 7 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Contrôleur - Contrôleuse de projet - Génie-conseil* — Laval · ∅ · parue le 2026-08-21.
67 +Exemple réel : *Gestionnaire BIM* — Montréal · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Contrôleur - Contrôleuse de projet - Génie-conseil* — Lava
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 51 (dont **50 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/50 actives (0 %)
86 −- **GPS** : 50/50 actives (100 %)
87 −- **Mode** : 0/50 actives (0 %)
88 −- **Parution** : 50/50 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 50, +0, ~3, -1
90 −- **Syncs enregistrés** (`sync_log`) : 27
84 +- **Offres en base** : 97 (dont **42 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/42 actives (0 %)
86 +- **GPS** : 42/42 actives (100 %)
87 +- **Mode** : 1/42 actives (2 %)
88 +- **Parution** : 42/42 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 42, +0, ~2, -2
90 +- **Syncs enregistrés** (`sync_log`) : 290
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bpcanada.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bpcanada.md
7 7 Rôle : Fiche connecteur — Berlin Packaging Canada Corporation (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -47,22 +47,22 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 0 % |
50 +| `postal_code` — Code postal | code postal si publié | 50 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Account Executive* — Québec · ∅ · parue le 2025-07-28.
65 +Exemple réel : *Inside Sales Representative* — Québec · ∅ · parue le 2026-09-16.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Account Executive* — Québec · ∅ · parue le 2025-07-28.
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/1 actives (0 %)
79 −- **GPS** : 1/1 actives (100 %)
80 −- **Mode** : 0/1 actives (0 %)
81 −- **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 3 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/2 actives (0 %)
79 +- **GPS** : 2/2 actives (100 %)
80 +- **Mode** : 0/2 actives (0 %)
81 +- **Parution** : 2/2 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 271
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/brambles.md +14 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/brambles.md
7 7 Rôle : Fiche connecteur — Brambles (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -54,8 +54,8 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 50 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Coordonnateur de la logistique (quart de soir) \| Supply Chain Coordinator (Afternoon Shif…* — Québec · La rémunération de base se situe entre $52,240 et $71,830 $ par an · parue le 2026-07-31.
67 +Exemple réel : *Opérateur de Production (quart de jour) \| Production Operator (Day Shift)* — Québec · 23,00-25,93$/h salaire de départ (augmentation de salaire après probation) · parue le 2026-08-31.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Coordonnateur de la logistique (quart de soir) \| Supply Chain
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 84 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 2/2 actives (100 %)
86 86 - **GPS** : 2/2 actives (100 %)
87 87 - **Mode** : 0/2 actives (0 %)
88 88 - **Parution** : 2/2 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 5, +0, ~5, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 4, +0, ~3, -0
90 +- **Syncs enregistrés** (`sync_log`) : 271
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:59 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:19 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync brambles` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='brambles' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/brandmomentum.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/brandmomentum.md
7 7 Rôle : Fiche connecteur — Brand Momentum (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **33 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **33 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -46,14 +46,14 @@ Complétude mesurée sur les **33 offres actives** de la source (base live, 2026
46 46 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 0 % |
49 +| `address` — Adresse | adresse du lieu de travail | 6 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 73 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 76 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 61 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 67 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 88 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **33 offres actives** de la source (base live, 2026
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Marchandiseur - Laval* — Laval · $18 – $20 / hour · parue le 2026-08-24.
65 +Exemple réel : *Ambassadeur(rice) de Marque en Cosmétique* — Dollard-des-Ormeaux · $22 – $25 / hour · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Marchandiseur - Laval* — Laval · $18 – $20 / hour · parue
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 33 (dont **33 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 24/33 actives (73 %)
77 +- **Offres en base** : 68 (dont **33 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 20/33 actives (61 %)
79 79 - **GPS** : 33/33 actives (100 %)
80 80 - **Mode** : 0/33 actives (0 %)
81 81 - **Parution** : 33/33 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 33, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 109
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 33, +1, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 372
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/bridgestone.md +20 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bridgestone.md
7 7 Rôle : Fiche connecteur — Bridgestone (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **13 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,10 +52,10 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 33 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 33 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 38 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 38 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Électromécanicien* — Joliette · Salaire très compétitif de 42,99$ à 46,73$/heure selon expérience, révisé à la hausse chaq… · parue le 2026-07-26.
67 +Exemple réel : *Stagiaire - ressources humaines* — Joliette · Stage 1er année: 24$/h · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Électromécanicien* — Joliette · Salaire très compétitif
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 12 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 4/12 actives (33 %)
86 −- **GPS** : 12/12 actives (100 %)
87 −- **Mode** : 0/12 actives (0 %)
88 −- **Parution** : 12/12 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 12, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 14 (dont **13 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/13 actives (38 %)
86 +- **GPS** : 13/13 actives (100 %)
87 +- **Mode** : 0/13 actives (0 %)
88 +- **Parution** : 13/13 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 13, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 271
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 03:00 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:19 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync bridgestone` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bridgestone' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/broadsign.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/broadsign.md
7 7 Rôle : Fiche connecteur — Broadsign (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,12 +48,12 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 80 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Sales Director, Platform Sales - North America* — Montréal · ∅ · parue le 2026-08-11.
65 +Exemple réel : *Product Specialist* — Montréal · ∅ · parue le 2026-09-04.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Sales Director, Platform Sales - North America* — Montréal
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/3 actives (0 %)
79 −- **GPS** : 3/3 actives (100 %)
80 −- **Mode** : 3/3 actives (100 %)
81 −- **Parution** : 3/3 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 3, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 108
77 +- **Offres en base** : 6 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/5 actives (0 %)
79 +- **GPS** : 5/5 actives (100 %)
80 +- **Mode** : 4/5 actives (80 %)
81 +- **Parution** : 5/5 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 5, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 371
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/broadsignfr.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/broadsignfr.md
7 7 Rôle : Fiche connecteur — Broadsign (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,12 +48,12 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 33 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 40 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Directeur commercial, Ventes de plateforme - Amérique du Nord* — Montréal · ∅ · parue le 2026-08-11.
65 +Exemple réel : *Spécialiste de produit* — Montréal · ∅ · parue le 2026-09-04.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Directeur commercial, Ventes de plateforme - Amérique du Nord*
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/3 actives (0 %)
79 −- **GPS** : 3/3 actives (100 %)
80 −- **Mode** : 1/3 actives (33 %)
81 −- **Parution** : 3/3 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 3, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 6 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/5 actives (0 %)
79 +- **GPS** : 5/5 actives (100 %)
80 +- **Mode** : 2/5 actives (40 %)
81 +- **Parution** : 5/5 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 5, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 271
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/broccolini.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/broccolini.md
7 7 Rôle : Fiche connecteur — Broccolini (employeur direct, ATS bamboohr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **19 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,16 +53,16 @@ Complétude mesurée sur les **22 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 95 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 86 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 84 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 95 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Concepteur(trice) en architecture \| Architectural Designer* — Montréal · ∅ · parue le 2026-08-14.
65 +Exemple réel : *Analyste, Gestion des baux \| Analyst, Lease management* — Montréal · ∅ · parue le 2026-09-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Concepteur(trice) en architecture \| Architectural Designer*
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 23 (dont **22 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/22 actives (0 %)
84 −- **GPS** : 22/22 actives (100 %)
85 −- **Mode** : 22/22 actives (100 %)
86 −- **Parution** : 22/22 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 22, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 96
82 +- **Offres en base** : 26 (dont **19 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/19 actives (0 %)
84 +- **GPS** : 19/19 actives (100 %)
85 +- **Mode** : 19/19 actives (100 %)
86 +- **Parution** : 19/19 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 19, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 359
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/bronswerk.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bronswerk.md
7 7 Rôle : Fiche connecteur — Bronswerk (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,16 +55,16 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Technicien en gestion du cycle de vie des matériaux* — Brossard · ∅ · parue le 2026-07-21.
67 +Exemple réel : *Conception solutions Gestion de projet - Brossard* — Brossard · ∅ · parue le 2026-09-01.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Technicien en gestion du cycle de vie des matériaux* — Bross
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/4 actives (0 %)
86 −- **GPS** : 4/4 actives (100 %)
87 −- **Mode** : 0/4 actives (0 %)
88 −- **Parution** : 4/4 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:04 — trouvées 4, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 5 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/3 actives (0 %)
86 +- **GPS** : 3/3 actives (100 %)
87 +- **Mode** : 0/3 actives (0 %)
88 +- **Parution** : 3/3 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 3, +0, ~1, -0
90 +- **Syncs enregistrés** (`sync_log`) : 270
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/bulkbarn.md +9 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/bulkbarn.md
7 7 Rôle : Fiche connecteur — Bulkbarn (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **80 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **80 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,11 +51,11 @@ Complétude mesurée sur les **80 offres actives** de la source (base live, 2026
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 10 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 12 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 58 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **80 offres actives** de la source (base live, 2026
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Caissier(ère)/Commis aux stocks* — MONTMAGNY · ∅ · parue le 2026-08-25.
67 +Exemple réel : *Détenteur(rice) de clés* — Varennes · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Caissier(ère)/Commis aux stocks* — MONTMAGNY · ∅ · parue
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 83 (dont **80 actives**, 0 masquées comme doublons `dup_of`)
84 +- **Offres en base** : 123 (dont **80 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 0/80 actives (0 %)
86 86 - **GPS** : 80/80 actives (100 %)
87 87 - **Mode** : 0/80 actives (0 %)
88 88 - **Parution** : 80/80 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 80, +1, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 79, +0, ~0, -1
90 +- **Syncs enregistrés** (`sync_log`) : 270
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/c2montral.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/c2montral.md
7 7 Rôle : Fiche connecteur — C2 Montréal (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Développeur(se) Full Stack* — Montréal · ∅ · parue le 2
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 1/1 actives (100 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 270
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/caaquebec.md +18 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/caaquebec.md
7 7 Rôle : Fiche connecteur — CAA-Québec (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **20 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **18 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,21 +50,21 @@ Complétude mesurée sur les **20 offres actives** de la source (base live, 2026
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 6 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 20 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 20 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 28 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 28 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 89 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 70 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Représentant(e) en assurance voyage (Certifié(e) AMF)* — Montréal · Salaire à partir de 24.96$/heure · parue le 2026-08-13.
67 +Exemple réel : *Représentant(e) en assurance voyage (Certifié(e) AMF)* — Montréal · Salaire à partir de 24.96$/heure · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Représentant(e) en assurance voyage (Certifié(e) AMF)* — Mo
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 20 (dont **20 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 4/20 actives (20 %)
86 −- **GPS** : 20/20 actives (100 %)
87 −- **Mode** : 0/20 actives (0 %)
88 −- **Parution** : 20/20 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 20, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 96
84 +- **Offres en base** : 28 (dont **18 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/18 actives (28 %)
86 +- **GPS** : 18/18 actives (100 %)
87 +- **Mode** : 1/18 actives (6 %)
88 +- **Parution** : 18/18 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 18, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 358
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:20 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:01 |
99 +| Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 03:19 |
99 100
100 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync caaquebec` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='caaquebec' ORDER BY ts DESC LIMIT 5;"`
101 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cabotcorp.md +7 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cabotcorp.md
7 7 Rôle : Fiche connecteur — Cabotcorp (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,7 +55,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Coordonnateur(trice) de production – Entrée de données* — Saint-Jean-sur-Richelieu · ∅ · parue le 2026-07-26.
67 +Exemple réel : *Superviseur Maintenance* — Saint-Jean-sur-Richelieu · ∅ · parue le 2026-09-02.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Coordonnateur(trice) de production – Entrée de données* —
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 84 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 0/1 actives (0 %)
86 86 - **GPS** : 1/1 actives (100 %)
87 87 - **Mode** : 0/1 actives (0 %)
88 88 - **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 3, +0, ~3, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 2, +0, ~2, -0
90 +- **Syncs enregistrés** (`sync_log`) : 270
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cadence.md +14 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cadence.md
7 7 Rôle : Fiche connecteur — Cadence (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,7 +55,7 @@ Complétude mesurée sur les **10 offres actives** de la source (base live, 2026
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 40 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 40 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 90 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 90 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **10 offres actives** de la source (base live, 2026
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 70 % |
66 66
67 −Exemple réel : *Ingénieur en conception de micrologiciel - Firmware Design Engineer* — Montréal · The annual salary range for Canada is $ 73,500.00 CAD/year - 136,500.00 CAD/year · parue le 2026-08-20.
67 +Exemple réel : *Ingénieur en conception de micrologiciel - Firmware Design Engineer* — Montréal · The annual salary range for Canada is $ 73,500.00 CAD/year - 136,500.00 CAD/year · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Ingénieur en conception de micrologiciel - Firmware Design Eng
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
84 +- **Offres en base** : 11 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 4/10 actives (40 %)
86 86 - **GPS** : 7/10 actives (70 %)
87 87 - **Mode** : 0/10 actives (0 %)
88 88 - **Parution** : 10/10 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 10, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:40 — trouvées 10, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 270
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 03:02 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:19 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync cadence` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cadence' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cae.md +22 −21
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cae.md
7 7 Rôle : Fiche connecteur — CAE (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **58 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **78 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **58 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 88 % |
50 −| `region` — Région | région administrative | 88 % |
49 +| `city` — Ville | municipalité normalisée | 94 % |
50 +| `region` — Région | région administrative | 94 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 1 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 7 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 7 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 2 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 22 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 22 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 1 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 90 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 78 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 79 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 93 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 97 % |
66 66
67 −Exemple réel : *Director, Business Development, D&S Canada* — ∅ · $184,600 - $234,600 · parue le 2026-08-13.
67 +Exemple réel : *Stagiaire en conception électrique / Electrical Designer Intern* — Montréal · *Pour tous les stagiaires embauchés, nous rembourserons les frais de stage jusqu'à concurr… · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Director, Business Development, D&S Canada* — ∅ · $184,600
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 61 (dont **58 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 4/58 actives (7 %)
86 −- **GPS** : 54/58 actives (93 %)
87 −- **Mode** : 0/58 actives (0 %)
88 −- **Parution** : 58/58 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 58, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 111
84 +- **Offres en base** : 107 (dont **78 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 17/78 actives (22 %)
86 +- **GPS** : 76/78 actives (97 %)
87 +- **Mode** : 1/78 actives (1 %)
88 +- **Parution** : 78/78 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 78, +1, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 373
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:20 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:03 |
99 +| Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 03:19 |
99 100
100 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync cae` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cae' ORDER BY ts DESC LIMIT 5;"`
101 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/californiaclosets.md +10 −36
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/californiaclosets.md
7 7 Rôle : Fiche connecteur — California Closets (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,33 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 −
41 −| Champ (`jobs.*`) | Rôle | Complétude |
42 −|---|---|---|
43 −| `title` — Titre | titre du poste | 100 % |
44 −| `employer` — Employeur | nom de l'entreprise | 100 % |
45 −| `url` — URL | lien direct vers l'offre originale | 100 % |
46 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 100 % |
48 −| `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 −| `date_posted` — Date de parution | ISO 8601 | 100 % |
58 −| `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 −| `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 −
65 −Exemple réel : *Production Operator - Montréal* — Montréal · ∅ · parue le 2026-07-17.
39 +*Aucune offre active en base pour cette source.*
66 40
67 41 ## Fréquence & budgets
68 42
@@ -77,15 +51,15 @@ Exemple réel : *Production Operator - Montréal* — Montréal · ∅ · parue
77 51
78 52 ## Volumétrie & complétude live
79 53
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
54 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 55
82 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/1 actives (0 %)
84 −- **GPS** : 1/1 actives (100 %)
85 −- **Mode** : 0/1 actives (0 %)
86 −- **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 28
56 +- **Offres en base** : 1 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
57 +- **Salaire** : 0/0 actives (—)
58 +- **GPS** : 0/0 actives (—)
59 +- **Mode** : 0/0 actives (—)
60 +- **Parution** : 0/0 actives (—)
61 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 0, +0, ~0, -0
62 +- **Syncs enregistrés** (`sync_log`) : 291
89 63
90 64 ## Erreurs & dépannage
91 65
modified docs/connecteurs/cambria.md +19 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cambria.md
7 7 Rôle : Fiche connecteur — Cambria (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,19 +52,19 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Market Sales Representative* — Montréal · La fourchette de départ de Cambria pour cette position est de $80,133 à $107,221 CAD · parue le 2026-07-26.
67 +Exemple réel : *Mechanic* — Fermont · ∅ · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Market Sales Representative* — Montréal · La fourchette de
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/1 actives (100 %)
86 −- **GPS** : 0/1 actives (0 %)
84 +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/1 actives (0 %)
86 +- **GPS** : 1/1 actives (100 %)
87 87 - **Mode** : 0/1 actives (0 %)
88 88 - **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 1, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 1, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 03:04 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:19 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync cambria` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cambria' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cammecanique.md +12 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cammecanique.md
7 7 Rôle : Fiche connecteur — CAM Mécanique (employeur direct, ATS teamtailor)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,14 +53,14 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 17 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 100 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 65 Exemple réel : *Livreur(euse)* — Blainville · ∅ · parue le 2026-07-13.
66 66
@@ -77,15 +77,15 @@ Exemple réel : *Livreur(euse)* — Blainville · ∅ · parue le 2026-07-13.
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/6 actives (0 %)
84 −- **GPS** : 0/6 actives (0 %)
84 +- **GPS** : 6/6 actives (100 %)
85 85 - **Mode** : 0/6 actives (0 %)
86 86 - **Parution** : 6/6 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:32 — trouvées 6, +6, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 1
87 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 6, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 263
89 89
90 90 ## Erreurs & dépannage
91 91
@@ -107,3 +107,7 @@ Aucune erreur dans `sync_log` pour cette source.
107 107 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
108 108 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
109 109 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
110 +
111 +Commits touchant `jobka/connectors/cammecanique.py` :
112 +
113 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/canada_explorers.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canada_explorers.md
7 7 Rôle : Fiche connecteur — Canada-Explorers (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 0 % |
@@ -72,15 +72,15 @@ Exemple réel : *Technicien en installation de systèmes de sécurité et d'inte
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/1 actives (100 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 270
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/canada_global.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canada_global.md
7 7 Rôle : Fiche connecteur — Canada Global Recruitment (employeur direct, ATS breezy)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 64
65 −Exemple réel : *General labor* — Montreal - QC · ∅ · parue le 2026-06-27.
65 +Exemple réel : *General labor* — Montreal - QC · ∅ · parue le 2026-08-26.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *General labor* — Montreal - QC · ∅ · parue le 2026-06-27.
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 0/1 actives (0 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 108
82 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 370
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/canada_vie.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canada_vie.md
7 7 Rôle : Fiche connecteur — Canada Vie (employeur direct, ATS successfactors)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **15 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -47,7 +47,7 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 44 % |
50 +| `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
@@ -60,9 +60,9 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 0 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Quebec French Proofreader (bilingual FrenchEnglish)* — Montreal Quebec · ∅ · parue le ∅.
65 +Exemple réel : *Chargé de comptes, Épargne et retraite en milieu* — Montréal · ∅ · parue le ∅.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Quebec French Proofreader (bilingual FrenchEnglish)* — Montre
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/9 actives (0 %)
84 −- **GPS** : 0/9 actives (0 %)
85 −- **Mode** : 0/9 actives (0 %)
86 −- **Parution** : 0/9 actives (0 %)
87 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 9, +5, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Offres en base** : 27 (dont **15 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/15 actives (0 %)
84 +- **GPS** : 15/15 actives (100 %)
85 +- **Mode** : 0/15 actives (0 %)
86 +- **Parution** : 0/15 actives (0 %)
87 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 15, +2, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 270
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/canadagoose.md +12 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canadagoose.md
7 7 Rôle : Fiche connecteur — Production Support Roles (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -64,7 +64,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Production Support Roles - Montreal/Rôles de soutien à la production - Montréal* — Montréal · ∅ · parue le 2026-07-26.
67 +Exemple réel : *Production Support Roles - Montreal/Rôles de soutien à la production - Montréal* — Montréal · ∅ · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Production Support Roles - Montreal/Rôles de soutien à la pro
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 84 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 0/1 actives (0 %)
86 86 - **GPS** : 1/1 actives (100 %)
87 87 - **Mode** : 0/1 actives (0 %)
88 88 - **Parution** : 1/1 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 1, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 1, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 270
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:06 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:19 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync canadagoose` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='canadagoose' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/canadasmotorcycle.md +15 −37
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canadasmotorcycle.md
7 7 Rôle : Fiche connecteur — FortNine (employeur direct, ATS jazzhr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -16,7 +16,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
16 16
17 17 ## Description
18 18
19 −- **Site** : [FortNine]()
19 +- **Site** : [FortNine](https://fortnine.ca)
20 20 - **Page carrières** : https://canadasmotorcycle.applytojob.com/apply/
21 21 - **Secteurs** : n/d
22 22 - **Région** : Québec (province)
@@ -36,33 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 −
41 −| Champ (`jobs.*`) | Rôle | Complétude |
42 −|---|---|---|
43 −| `title` — Titre | titre du poste | 100 % |
44 −| `employer` — Employeur | nom de l'entreprise | 100 % |
45 −| `url` — URL | lien direct vers l'offre originale | 100 % |
46 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 100 % |
48 −| `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 100 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 33 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 67 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 67 % |
55 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 −| `date_posted` — Date de parution | ISO 8601 | 100 % |
58 −| `date_deadline` — Date limite | date limite pour postuler | 100 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
60 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 100 % |
62 −| `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 −
65 −Exemple réel : *Customer Advisor / Conseiller(ère) à la clientèle (FortNine)* — Montréal · The salary range for a fully trained agent is between $20 - $25 / hour! · parue le 2026-08-13.
39 +*Aucune offre active en base pour cette source.*
66 40
67 41 ## Fréquence & budgets
68 42
@@ -77,15 +51,15 @@ Exemple réel : *Customer Advisor / Conseiller(ère) à la clientèle (FortNine)
77 51
78 52 ## Volumétrie & complétude live
79 53
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
54 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 55
82 −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 2/3 actives (67 %)
84 −- **GPS** : 0/3 actives (0 %)
85 −- **Mode** : 1/3 actives (33 %)
86 −- **Parution** : 3/3 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 3, +3, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 1
56 +- **Offres en base** : 4 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
57 +- **Salaire** : 0/0 actives (—)
58 +- **GPS** : 0/0 actives (—)
59 +- **Mode** : 0/0 actives (—)
60 +- **Parution** : 0/0 actives (—)
61 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 0, +0, ~0, -0
62 +- **Syncs enregistrés** (`sync_log`) : 264
89 63
90 64 ## Erreurs & dépannage
91 65
@@ -107,3 +81,7 @@ Aucune erreur dans `sync_log` pour cette source.
107 81 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
108 82 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
109 83 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
84 +
85 +Commits touchant `jobka/connectors/canadasmotorcycle.py` :
86 +
87 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/canadavisa.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canadavisa.md
7 7 Rôle : Fiche connecteur — Canadavisa (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 33 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 33 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 33 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Lawyer, Client Growth — CV Labs* — Toronto Office · - Base
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/3 actives (33 %)
79 79 - **GPS** : 2/3 actives (67 %)
80 80 - **Mode** : 3/3 actives (100 %)
81 81 - **Parution** : 3/3 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 3, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 3, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 270
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/canadian_royalties.md +23 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canadian_royalties.md
7 7 Rôle : Fiche connecteur — Canadian Royalties (employeur direct, ATS adp)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **17 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **15 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **17 offres actives** de la source (base live, 2026
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 100 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 94 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 93 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 47 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 41 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 40 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 94 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 93 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *CO26-15 Opérateur Traitement des Eaux* — Salluit · TAUX HORAIRE variant de 43,34$ à 49,24$ · parue le 2026-08-21.
67 +Exemple réel : *MI26-53 Mineur Services Sous-terre* — Salluit · Taux horaire de 39,92 $ · parue le 2026-09-11.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,23 @@ Exemple réel : *CO26-15 Opérateur Traitement des Eaux* — Salluit · TAUX HOR
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 17 (dont **17 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 8/17 actives (47 %)
86 −- **GPS** : 0/17 actives (0 %)
87 −- **Mode** : 0/17 actives (0 %)
88 −- **Parution** : 17/17 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 17, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 28 (dont **15 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 7/15 actives (47 %)
86 +- **GPS** : 15/15 actives (100 %)
87 +- **Mode** : 0/15 actives (0 %)
88 +- **Parution** : 15/15 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 15, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 266
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Expecting value: line 1 column 1 (char 0) | 4 | 2026-08-30 01:10 |
95 99
96 100 - Rejouer un sync isolé : `.venv/bin/python run.py sync canadian_royalties` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='canadian_royalties' ORDER BY ts DESC LIMIT 5;"`
97 101 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -112,4 +116,6 @@ Aucune erreur dans `sync_log` pour cette source.
112 116
113 117 Commits touchant `jobka/connectors/canadian_royalties.py` :
114 118
119 +- `f6f464f` 2026-08-29 Revert "[ka6] snapshot pré-mission cookit"
120 +- `f729cea` 2026-08-29 [ka6] snapshot pré-mission cookit
115 121 - `856863d` 2026-08-25 Vague D implémentée — 75 nouveaux connecteurs (968 -> 1044 employeurs), ~768 offres QC
modified docs/connecteurs/canadianhelicopters.md +7 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canadianhelicopters.md
7 7 Rôle : Fiche connecteur — Canadian Helicopters (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -62,7 +62,7 @@ Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Spécialiste en acquisition de talents* — Les Cèdres · ∅ · parue le 2026-08-17.
65 +Exemple réel : *Commis à l'outillage* — Les Cèdres · ∅ · parue le 2026-09-14.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Spécialiste en acquisition de talents* — Les Cèdres · ∅
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
82 +- **Offres en base** : 14 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/8 actives (0 %)
84 84 - **GPS** : 8/8 actives (100 %)
85 85 - **Mode** : 0/8 actives (0 %)
86 86 - **Parution** : 8/8 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 8, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 8, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 270
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/canadiantirecorporation.md +18 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canadiantirecorporation.md
7 7 Rôle : Fiche connecteur — Canadian Tire (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,19 +52,19 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 56 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 56 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 60 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 60 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 90 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 89 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 90 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 90 % |
66 66
67 −Exemple réel : *Store Manager* — Gaspe · Our typical hiring range is between $55,000 and $60,000. Salary decisions are also depende… · parue le 2026-08-20.
67 +Exemple réel : *Assistant Manager* — St. Foy · Our typical hiring range is between $37,200 and $46,500. Salary decisions are also depende… · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Store Manager* — Gaspe · Our typical hiring range is between
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 5/9 actives (56 %)
86 −- **GPS** : 9/9 actives (100 %)
87 −- **Mode** : 0/9 actives (0 %)
88 −- **Parution** : 9/9 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 9, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 96
84 +- **Offres en base** : 14 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 6/10 actives (60 %)
86 +- **GPS** : 9/10 actives (90 %)
87 +- **Mode** : 0/10 actives (0 %)
88 +- **Parution** : 10/10 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 10, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 358
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:20 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:07 |
99 +| Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 03:19 |
99 100
100 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync canadiantirecorporation` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='canadiantirecorporation' ORDER BY ts DESC LIMIT 5;"`
101 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/canassurance.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canassurance.md
7 7 Rôle : Fiche connecteur — Rechercher des (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,12 +50,12 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 50 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Agent service à la clientèle (Hybride)* — Montréal · ∅ · parue le 2026-07-29.
67 +Exemple réel : *Chef d'équipe de l'assistance* — Montréal · ∅ · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Agent service à la clientèle (Hybride)* — Montréal · ∅
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/3 actives (0 %)
86 −- **GPS** : 3/3 actives (100 %)
87 −- **Mode** : 3/3 actives (100 %)
88 −- **Parution** : 3/3 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 3, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 8 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/4 actives (0 %)
86 +- **GPS** : 4/4 actives (100 %)
87 +- **Mode** : 2/4 actives (50 %)
88 +- **Parution** : 4/4 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 4, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 270
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/canderel.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/canderel.md
7 7 Rôle : Fiche connecteur — Canderel (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,10 +52,10 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 67 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 67 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -79,15 +79,15 @@ Exemple réel : *Coordonnateur/trice RH et recrutement* — Montréal · Salaire
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 2/3 actives (67 %)
86 −- **GPS** : 3/3 actives (100 %)
87 −- **Mode** : 0/3 actives (0 %)
88 −- **Parution** : 3/3 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 3, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 3 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 2/2 actives (100 %)
86 +- **GPS** : 2/2 actives (100 %)
87 +- **Mode** : 0/2 actives (0 %)
88 +- **Parution** : 2/2 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 0, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 268
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/capco.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/capco.md
7 7 Rôle : Fiche connecteur — Capco (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,12 +48,12 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 40 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 20 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Dynamics Developer (Hybrid Montreal)* — Montréal · $92,000
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 6 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 5/5 actives (100 %)
79 −- **GPS** : 5/5 actives (100 %)
80 −- **Mode** : 2/5 actives (40 %)
81 −- **Parution** : 5/5 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 5, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 6 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 1/1 actives (100 %)
79 +- **GPS** : 1/1 actives (100 %)
80 +- **Mode** : 1/1 actives (100 %)
81 +- **Parution** : 1/1 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 268
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/capintel.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/capintel.md
7 7 Rôle : Fiche connecteur — CapIntel (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Context Engineer* — Montréal · $120,000 — $150,000 CAD ·
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/1 actives (100 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 1/1 actives (100 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 0, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 268
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/capreit.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/capreit.md
7 7 Rôle : Fiche connecteur — CAPREIT (employeur direct, ATS icims)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -45,18 +45,18 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-
45 45 | `url` — URL | lien direct vers l'offre originale | 100 % |
46 46 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 −| `region` — Région | région administrative | 89 % |
48 +| `region` — Région | région administrative | 88 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 100 % |
50 50 | `postal_code` — Code postal | code postal si publié | 100 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 88 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 62 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
@@ -77,15 +77,15 @@ Exemple réel : *Operations Manager 1* — Montréal · ∅ · parue le 2026-07-
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 10 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/9 actives (0 %)
84 −- **GPS** : 9/9 actives (100 %)
85 −- **Mode** : 0/9 actives (0 %)
86 −- **Parution** : 9/9 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 9, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 95
82 +- **Offres en base** : 12 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/8 actives (0 %)
84 +- **GPS** : 8/8 actives (100 %)
85 +- **Mode** : 0/8 actives (0 %)
86 +- **Parution** : 8/8 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 8, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 355
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/captiveaire.md +10 −10
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/captiveaire.md
7 7 Rôle : Fiche connecteur — CaptiveAire (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,10 +50,10 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Commercial HVAC Service Technician* — Montréal · ∅ · parue le 2026-06-05.
65 +Exemple réel : *Commercial HVAC Service Technician* — Montréal · $70-90,000/ year CAD based on experience · parue le 2026-06-05.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Commercial HVAC Service Technician* — Montréal · ∅ · par
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/2 actives (0 %)
78 +- **Salaire** : 2/2 actives (100 %)
79 79 - **GPS** : 2/2 actives (100 %)
80 80 - **Mode** : 0/2 actives (0 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:05 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 268
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/cardinalcouriers.md +9 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cardinalcouriers.md
7 7 Rôle : Fiche connecteur — Linehaul Nuit, Conducteur, classe 1 (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,13 +49,13 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 −| `postal_code` — Code postal | code postal si publié | 50 % |
52 +| `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 50 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 50 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 50 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 75 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Chauffeur Classe 1 (P&D)* — Québec · Rémunération : 28.02$ par heure · parue le 2026-07-15.
67 +Exemple réel : *Opérations Entrepôt, Conducteur de chariot élévateur, client* — Pointe Aux Trembles · Taux horaire : 21.54 $ · parue le 2026-09-15.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Chauffeur Classe 1 (P&D)* — Québec · Rémunération : 28.02
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
84 +- **Offres en base** : 7 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
85 85 - **Salaire** : 2/4 actives (50 %)
86 86 - **GPS** : 4/4 actives (100 %)
87 87 - **Mode** : 2/4 actives (50 %)
88 88 - **Parution** : 4/4 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:06 — trouvées 4, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 4, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 268
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cardinalhealth.md +23 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cardinalhealth.md
7 7 Rôle : Fiche connecteur — Associé (e) d'entrepôt (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 88 % |
50 +| `region` — Région | région administrative | 88 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 71 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 71 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 62 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 62 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 88 % |
66 66
67 −Exemple réel : *Associé (e) d'entrepôt* — Dorval · Taux horaire : 20,60$ · parue le 2026-08-21.
67 +Exemple réel : *Associé (e) d'entrepôt* — Dorval · Taux horaire : 20,60$ · parue le 2026-09-15.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Associé (e) d'entrepôt* — Dorval · Taux horaire : 20,60$
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 5/7 actives (71 %)
86 −- **GPS** : 7/7 actives (100 %)
87 −- **Mode** : 0/7 actives (0 %)
88 −- **Parution** : 7/7 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:07 — trouvées 7, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 19 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/8 actives (62 %)
86 +- **GPS** : 7/8 actives (88 %)
87 +- **Mode** : 0/8 actives (0 %)
88 +- **Parution** : 8/8 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 8, +1, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 268
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 03:08 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:20 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync cardinalhealth` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cardinalhealth' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/carnaval.md +17 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/carnaval.md
7 7 Rôle : Fiche connecteur — Carnaval de Québec Inc. (employeur direct, ATS zoho_recruit)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -37,7 +37,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
37 37
38 38 ## Champs → schéma
39 39
40 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
41 41
42 42 | Champ (`jobs.*`) | Rôle | Complétude |
43 43 |---|---|---|
@@ -49,21 +49,21 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
49 49 | `region` — Région | région administrative | 100 % |
50 50 | `address` — Adresse | adresse du lieu de travail | 0 % |
51 51 | `postal_code` — Code postal | code postal si publié | 0 % |
52 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 −| `employment_type` — Type | temps_plein / temps_partiel / … | 33 % |
52 +| `work_mode` — Mode | presentiel / hybride / teletravail | 33 % |
53 +| `employment_type` — Type | temps_plein / temps_partiel / … | 67 % |
54 54 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
55 55 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
56 56 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
57 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 67 % |
58 58 | `date_posted` — Date de parution | ISO 8601 | 100 % |
59 59 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
60 60 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
61 61 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
62 62 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
63 63 | `apply_url` — Candidature | lien de candidature directe | 0 % |
64 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 65
66 −Exemple réel : *Bénévole Carnaval de Qc 2027* — Québec · ∅ · parue le 2026-08-18.
66 +Exemple réel : *Stagiaire agent(e) de festivités junior - Communication, marketing & commercialisation* — Québec · ∅ · parue le 2026-09-01.
67 67
68 68 ## Fréquence & budgets
69 69
@@ -73,15 +73,15 @@ Exemple réel : *Bénévole Carnaval de Qc 2027* — Québec · ∅ · parue le
73 73
74 74 ## Volumétrie & complétude live
75 75
76 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
76 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
77 77
78 −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Offres en base** : 5 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
79 79 - **Salaire** : 0/3 actives (0 %)
80 −- **GPS** : 0/3 actives (0 %)
81 −- **Mode** : 0/3 actives (0 %)
80 +- **GPS** : 3/3 actives (100 %)
81 +- **Mode** : 1/3 actives (33 %)
82 82 - **Parution** : 3/3 actives (100 %)
83 −- **Dernier sync** : 2026-08-25 08:37 — trouvées 3, +3, ~0, -0
84 −- **Syncs enregistrés** (`sync_log`) : 1
83 +- **Dernier sync** : 2026-09-21 16:41 — trouvées 3, +0, ~0, -0
84 +- **Syncs enregistrés** (`sync_log`) : 261
85 85
86 86 ## Erreurs & dépannage
87 87
@@ -103,3 +103,7 @@ Aucune erreur dans `sync_log` pour cette source.
103 103 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
104 104 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
105 105 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
106 +
107 +Commits touchant `jobka/connectors/carnaval.py` :
108 +
109 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/carrier.md +23 −18
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/carrier.md
7 7 Rôle : Fiche connecteur — Carrier (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 29 % |
49 +| `city` — Ville | municipalité normalisée | 60 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 −| `postal_code` — Code postal | code postal si publié | 86 % |
52 +| `postal_code` — Code postal | code postal si publié | 80 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 43 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 43 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 80 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 80 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 0 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 60 % |
66 66
67 −Exemple réel : *Gestionnaire de service* — ∅ · Le salaire de base prévu pour ce poste se situe entre $89,500.00 CAD - $139,500.00 CAD ann… · parue le 2026-08-11.
67 +Exemple réel : *Gestionnaire de service* — ∅ · Le salaire de base prévu pour ce poste se situe entre $89,500.00 CAD - $139,500.00 CAD ann… · parue le 2026-09-04.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Gestionnaire de service* — ∅ · Le salaire de base prévu p
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 3/7 actives (43 %)
86 −- **GPS** : 0/7 actives (0 %)
87 −- **Mode** : 7/7 actives (100 %)
88 −- **Parution** : 7/7 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:09 — trouvées 7, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 8 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 4/5 actives (80 %)
86 +- **GPS** : 3/5 actives (60 %)
87 +- **Mode** : 5/5 actives (100 %)
88 +- **Parution** : 5/5 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:44 — trouvées 5, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 260
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:09 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:20 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync carrier` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='carrier' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/carters.md +19 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/carters.md
7 7 Rôle : Fiche connecteur — Carters (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,12 +50,12 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 50 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 50 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Temporary Bilingual Call Center Universal Agent, Canada (Remote)* — Québec · ** $18.50/hr · parue le 2026-08-04.
67 +Exemple réel : *Assistant-gerant de magasin - CR1107* — Mascouche · ∅ · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Temporary Bilingual Call Center Universal Agent, Canada (Remote
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 84 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/2 actives (50 %)
85 +- **Salaire** : 0/2 actives (0 %)
86 86 - **GPS** : 2/2 actives (100 %)
87 −- **Mode** : 1/2 actives (50 %)
87 +- **Mode** : 0/2 actives (0 %)
88 88 - **Parution** : 2/2 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:10 — trouvées 38, +0, ~38, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
89 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 38, +0, ~37, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:10 |
99 +| Workday non-JSON après 3 essais (HTTP 200, text/html; charset=UTF-8) : Expecting value: li… | 1 | 2026-09-12 03:35 |
100 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:20 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync carters` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='carters' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cascades.md +17 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cascades.md
7 7 Rôle : Fiche connecteur — Cascades (employeur direct, ATS successfactors)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **99 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **108 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **99 offres actives** de la source (base live, 2026
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 13 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 77 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 77 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 19 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 18 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 74 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 74 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 85 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 0 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 64 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 72 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Électrotechnicien de nuit* — Granby · Salaire horaire de 43,59$/h incluant la prime de nuit de 3,00$, si tu as ta licence CÉ une… · parue le ∅.
65 +Exemple réel : *Machiniste industriel(le) - Moulage* — Kingsey Falls · Salaire horaire compris entre 39,44$ et 43,69$ · parue le ∅.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Électrotechnicien de nuit* — Granby · Salaire horaire de 43
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 109 (dont **99 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 76/99 actives (77 %)
84 −- **GPS** : 99/99 actives (100 %)
85 −- **Mode** : 13/99 actives (13 %)
86 −- **Parution** : 0/99 actives (0 %)
87 −- **Dernier sync** : 2026-08-25 08:10 — trouvées 99, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 96
82 +- **Offres en base** : 199 (dont **108 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 80/108 actives (74 %)
84 +- **GPS** : 108/108 actives (100 %)
85 +- **Mode** : 20/108 actives (19 %)
86 +- **Parution** : 0/108 actives (0 %)
87 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 108, +0, ~0, -4
88 +- **Syncs enregistrés** (`sync_log`) : 353
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/catalystcanada.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/catalystcanada.md
7 7 Rôle : Fiche connecteur — Catalyst Canada (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Coordonnateur des comptes – SEM* — Montréal · ∅ · paru
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/2 actives (0 %)
84 84 - **GPS** : 2/2 actives (100 %)
85 85 - **Mode** : 0/2 actives (0 %)
86 86 - **Parution** : 2/2 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:10 — trouvées 2, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 2, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 265
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/cc.md +24 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cc.md
7 7 Rôle : Fiche connecteur — Chanel (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,33 +38,33 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
45 45 | `title` — Titre | titre du poste | 100 % |
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 −| `description` — Description | texte complet (HTML nettoyé) | 83 % |
48 +| `description` — Description | texte complet (HTML nettoyé) | 86 % |
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 17 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 17 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 14 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 14 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 86 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
62 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 83 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 86 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Chef(fe) des Expéditions* — Candiac · Pendant la période d'essai de 45 jours: 21.00$/heure · parue le 2026-08-13.
67 +Exemple réel : *Conseiller(ère) à la vente* — Montréal · Salaire de base compétitif de 60 000$ par an, plus commissions et primes · parue le 2026-09-03.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Chef(fe) des Expéditions* — Candiac · Pendant la période d
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/6 actives (17 %)
86 −- **GPS** : 0/6 actives (0 %)
87 −- **Mode** : 0/6 actives (0 %)
88 −- **Parution** : 6/6 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:11 — trouvées 6, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 10 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/7 actives (14 %)
86 +- **GPS** : 7/7 actives (100 %)
87 +- **Mode** : 0/7 actives (0 %)
88 +- **Parution** : 7/7 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 7, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 259
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:11 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:20 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync cc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cc' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cca1.md +10 −10
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cca1.md
7 7 Rôle : Fiche connecteur — CCA (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -50,8 +50,8 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Stagiaire curatorial·e AAMD / AAMD Curatorial Intern* — Montréal · Salaire: 25$ CAD / heure · parue le 2026-08-11.
65 +Exemple réel : *Chargé.e de l’administration des projets, Programmes / Project Administration Manager, Pro…* — Montréal · ∅ · parue le 2026-09-08.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Stagiaire curatorial·e AAMD / AAMD Curatorial Intern* — Mont
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 1/1 actives (100 %)
82 +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 0/1 actives (0 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:11 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 266
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/cclfg.md +11 −11
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cclfg.md
7 7 Rôle : Fiche connecteur — Connor, Clark & Lunn Financial Group Ltd. (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 50 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 50 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Analyste, Propositions/Proposal Analyst* — Montréal · ∅ · parue le 2026-08-12.
65 +Exemple réel : *Analyste des Opérations de TI / IT Operations Analyst* — Montréal · ∅ · parue le 2026-08-27.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Analyste, Propositions/Proposal Analyst* — Montréal · ∅
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 3 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/2 actives (0 %)
79 79 - **GPS** : 2/2 actives (100 %)
80 −- **Mode** : 0/2 actives (0 %)
80 +- **Mode** : 1/2 actives (50 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:11 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
82 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 265
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/ccmhockey.md +15 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ccmhockey.md
7 7 Rôle : Fiche connecteur — Ccmhockey (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,22 +49,22 @@ Complétude mesurée sur les **11 offres actives** de la source (base live, 2026
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 −| `postal_code` — Code postal | code postal si publié | 82 % |
52 +| `postal_code` — Code postal | code postal si publié | 64 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 7 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 73 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 79 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Spécialiste en acquisition de talents* — Montréal · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Représentant(e) du service clientèle - Services aux consommateurs* — Montréal · ∅ · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Spécialiste en acquisition de talents* — Montréal · ∅ ·
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 11 (dont **11 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/11 actives (0 %)
86 −- **GPS** : 11/11 actives (100 %)
87 −- **Mode** : 0/11 actives (0 %)
88 −- **Parution** : 11/11 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:11 — trouvées 11, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 16 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/14 actives (0 %)
86 +- **GPS** : 14/14 actives (100 %)
87 +- **Mode** : 0/14 actives (0 %)
88 +- **Parution** : 14/14 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 13, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cdpq.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cdpq.md
7 7 Rôle : Fiche connecteur — CDPQ — Caisse de dépôt et placement du Québec (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **28 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **27 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **28 offres actives** de la source (base live, 2026
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 82 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 89 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 96 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 93 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Premier(-ère) conseiller(-ère)*, Affaires juridiques — Placement privé / transactionnel* — Montréal · ∅ · parue le 2026-08-25.
67 +Exemple réel : *Premier(-ère) conseiller(-ère), Analytique et intelligence de sécurité* — Montréal · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Premier(-ère) conseiller(-ère)*, Affaires juridiques — Plac
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 34 (dont **28 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/28 actives (0 %)
86 −- **GPS** : 26/28 actives (93 %)
87 −- **Mode** : 0/28 actives (0 %)
88 −- **Parution** : 28/28 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:11 — trouvées 28, +1, ~0, -1
90 −- **Syncs enregistrés** (`sync_log`) : 95
84 +- **Offres en base** : 52 (dont **27 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/27 actives (0 %)
86 +- **GPS** : 27/27 actives (100 %)
87 +- **Mode** : 0/27 actives (0 %)
88 +- **Parution** : 27/27 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 27, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 352
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cdpqfiliales.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cdpqfiliales.md
7 7 Rôle : Fiche connecteur — Cdpqfiliales (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,7 +55,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Intern, Finance* — Montréal · ∅ · parue le 2026-08-03.
67 +Exemple réel : *Intern, Accounting* — Montréal · ∅ · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Intern, Finance* — Montréal · ∅ · parue le 2026-08-03.
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/2 actives (0 %)
86 −- **GPS** : 2/2 actives (100 %)
87 −- **Mode** : 0/2 actives (0 %)
88 −- **Parution** : 2/2 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:11 — trouvées 16, +0, ~15, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/3 actives (0 %)
86 +- **GPS** : 3/3 actives (100 %)
87 +- **Mode** : 0/3 actives (0 %)
88 +- **Parution** : 3/3 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 31, +0, ~30, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/centremultiethniquedequbec.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/centremultiethniquedequbec.md
7 7 Rôle : Fiche connecteur — Centre multiethnique de Québec (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Intervenant.e à l’accueil et à l’installation des personn
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 1/1 actives (100 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 1/1 actives (100 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:11 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 28
87 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 285
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/cep.md +15 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cep.md
7 7 Rôle : Fiche connecteur — CEP Forensique (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 17 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 29 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 29 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 71 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Ingénieur Civil & structure - Laval* — Laval · ∅ · parue le 2026-07-28.
67 +Exemple réel : *Estimateur en bâtiment senior* — Laval · ∅ · parue le 2026-08-25.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Ingénieur Civil & structure - Laval* — Laval · ∅ · parue
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/6 actives (0 %)
86 −- **GPS** : 6/6 actives (100 %)
87 −- **Mode** : 0/6 actives (0 %)
88 −- **Parution** : 6/6 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:12 — trouvées 6, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 8 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/7 actives (0 %)
86 +- **GPS** : 7/7 actives (100 %)
87 +- **Mode** : 0/7 actives (0 %)
88 +- **Parution** : 7/7 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 7, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 259
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cerence.md +24 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cerence.md
7 7 Rôle : Fiche connecteur — Cerence (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 33 % |
50 +| `region` — Région | région administrative | 33 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 67 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 50 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 33 % |
66 66
67 −Exemple réel : *Développeur logiciel senior - Android / Senior Software Developer - Android* — Montréal · ∅ · parue le 2026-07-26.
67 +Exemple réel : *Senior Application Developer – Industrial Voice AI & Edge Applications* — ∅ · Salary range $107,900.00 USD - $172,600.00 USD It is not typical for offers to be made at … · parue le 2026-08-22.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Développeur logiciel senior - Android / Senior Software Develo
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/2 actives (0 %)
86 −- **GPS** : 2/2 actives (100 %)
87 −- **Mode** : 0/2 actives (0 %)
88 −- **Parution** : 2/2 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:12 — trouvées 2, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 3/6 actives (50 %)
86 +- **GPS** : 2/6 actives (33 %)
87 +- **Mode** : 4/6 actives (67 %)
88 +- **Parution** : 6/6 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:45 — trouvées 6, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:13 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:20 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync cerence` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cerence' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cfibfcei.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cfibfcei.md
7 7 Rôle : Fiche connecteur — Cfibfcei (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,10 +52,10 @@ Complétude mesurée sur les **10 offres actives** de la source (base live, 2026
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 10 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 10 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 18 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 18 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 27 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **10 offres actives** de la source (base live, 2026
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Spécialiste bilingue en acquisition de talents* — Montréal · Échelle Salariale : 55 000 $ - 62 000 $ · parue le 2026-08-11.
67 +Exemple réel : *Représentant(e) des ventes externe \| Salaberry-de-Valleyfield* — Salaberry-de-Valleyfield · Les meilleurs représentants gagnent bien plus de 135 000 $ par année · parue le 2026-08-27.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Spécialiste bilingue en acquisition de talents* — Montréal
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/10 actives (10 %)
86 −- **GPS** : 10/10 actives (100 %)
87 −- **Mode** : 0/10 actives (0 %)
88 −- **Parution** : 10/10 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:12 — trouvées 10, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 16 (dont **11 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 2/11 actives (18 %)
86 +- **GPS** : 11/11 actives (100 %)
87 +- **Mode** : 0/11 actives (0 %)
88 +- **Parution** : 11/11 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:46 — trouvées 11, +0, ~1, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cfmontreal.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cfmontreal.md
7 7 Rôle : Fiche connecteur — CF Montréal (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -56,13 +56,13 @@ Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 62 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 60 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Chef(e) de projets et production marketing - TEMPORAIRE / Marketing and Production Project…* — Montréal · ∅ · parue le 2026-08-12.
65 +Exemple réel : *Directeur(trice), ventes de partenariats / Director, Partnership Sales* — Montréal · ∅ · parue le 2026-09-14.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Chef(e) de projets et production marketing - TEMPORAIRE / Marke
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 8 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/8 actives (0 %)
84 −- **GPS** : 8/8 actives (100 %)
85 −- **Mode** : 0/8 actives (0 %)
86 −- **Parution** : 8/8 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:12 — trouvées 8, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 107
82 +- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 0/10 actives (0 %)
84 +- **GPS** : 10/10 actives (100 %)
85 +- **Mode** : 0/10 actives (0 %)
86 +- **Parution** : 10/10 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:46 — trouvées 10, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 364
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/cgi.md +20 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cgi.md
7 7 Rôle : Fiche connecteur — CGI (employeur direct, ATS njoyn)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -40,33 +40,33 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
40 40
41 41 ## Champs → schéma
42 42
43 −Complétude mesurée sur les **307 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
43 +Complétude mesurée sur les **185 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
44 44
45 45 | Champ (`jobs.*`) | Rôle | Complétude |
46 46 |---|---|---|
47 47 | `title` — Titre | titre du poste | 100 % |
48 48 | `employer` — Employeur | nom de l'entreprise | 100 % |
49 49 | `url` — URL | lien direct vers l'offre originale | 100 % |
50 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
50 +| `description` — Description | texte complet (HTML nettoyé) | 23 % |
51 51 | `city` — Ville | municipalité normalisée | 100 % |
52 52 | `region` — Région | région administrative | 100 % |
53 53 | `address` — Adresse | adresse du lieu de travail | 0 % |
54 54 | `postal_code` — Code postal | code postal si publié | 0 % |
55 55 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
56 −| `employment_type` — Type | temps_plein / temps_partiel / … | 9 % |
56 +| `employment_type` — Type | temps_plein / temps_partiel / … | 19 % |
57 57 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
58 58 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
59 59 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
60 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
60 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 1 % |
61 61 | `date_posted` — Date de parution | ISO 8601 | 0 % |
62 62 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
63 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 60 % |
64 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 2 % |
63 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 61 % |
64 +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 1 % |
65 65 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
66 66 | `apply_url` — Candidature | lien de candidature directe | 0 % |
67 −| `gps` — GPS | lat/lng (géocodage sans invention) | 95 % |
67 +| `gps` — GPS | lat/lng (géocodage sans invention) | 96 % |
68 68
69 −Exemple réel : *Conseiller en architecture de solution Infrastructure Cloud AWS* — Québec · ∅ · parue le ∅.
69 +Exemple réel : *Développeur(se) ServiceNow Senior – PSDS et Intégrations* — Sherbrooke · ∅ · parue le ∅.
70 70
71 71 ## Fréquence & budgets
72 72
@@ -81,15 +81,15 @@ Exemple réel : *Conseiller en architecture de solution Infrastructure Cloud AWS
81 81
82 82 ## Volumétrie & complétude live
83 83
84 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
84 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
85 85
86 −- **Offres en base** : 340 (dont **307 actives**, 0 masquées comme doublons `dup_of`)
87 −- **Salaire** : 0/307 actives (0 %)
88 −- **GPS** : 292/307 actives (95 %)
89 −- **Mode** : 0/307 actives (0 %)
90 −- **Parution** : 0/307 actives (0 %)
91 −- **Dernier sync** : 2026-08-25 08:13 — trouvées 307, +0, ~0, -0
92 −- **Syncs enregistrés** (`sync_log`) : 85
86 +- **Offres en base** : 490 (dont **185 actives**, 0 masquées comme doublons `dup_of`)
87 +- **Salaire** : 0/185 actives (0 %)
88 +- **GPS** : 177/185 actives (96 %)
89 +- **Mode** : 0/185 actives (0 %)
90 +- **Parution** : 0/185 actives (0 %)
91 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 180, +3, ~129, -1
92 +- **Syncs enregistrés** (`sync_log`) : 344
93 93
94 94 ## Erreurs & dépannage
95 95
@@ -97,6 +97,9 @@ Erreurs relevées dans `sync_log` :
97 97
98 98 | Erreur | Occurrences | Dernière fois |
99 99 |---|---|---|
100 +| njoyn cgi: page liste illisible (vide ou anti-bot, 0 octets) — sync avorté | 17 | 2026-09-07 23:37 |
101 +| njoyn cgi: plateforme Njoyn en maintenance planifiée (redirection maintenance.njoyn.com) —… | 2 | 2026-09-06 02:39 |
102 +| njoyn cgi: page liste illisible (vide ou anti-bot, 29125 octets) — sync avorté | 2 | 2026-09-06 01:55 |
100 103 | SCRAPFLY_API_KEY manquant (voir .env) | 1 | 2026-08-19 06:36 |
101 104
102 105 - Rejouer un sync isolé : `.venv/bin/python run.py sync cgi` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cgi' ORDER BY ts DESC LIMIT 5;"`
modified docs/connecteurs/chagalldesign.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/chagalldesign.md
7 7 Rôle : Fiche connecteur — Chagall Design (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Directeur de projets, Design Commercial* — Sainte-Julie ·
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/7 actives (0 %)
84 84 - **GPS** : 7/7 actives (100 %)
85 85 - **Mode** : 0/7 actives (0 %)
86 86 - **Parution** : 7/7 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:13 — trouvées 7, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 7, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 265
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/challenger.md +20 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/challenger.md
7 7 Rôle : Fiche connecteur — Challenger Motor Freight Inc. (employeur direct, ATS jazzhr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -47,22 +47,22 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
47 47 | `city` — Ville | municipalité normalisée | 100 % |
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 100 % |
50 +| `postal_code` — Code postal | code postal si publié | 71 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 67 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 43 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 67 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 71 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 100 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Safety Supervisor and Recruiter - Challenger (Saint-Rémi)* — Saint-Rémi · ∅ · parue le 2026-08-11.
65 +Exemple réel : *Customer Service Representative - Fastfrate Group (Lachine)* — Lachine · ∅ · parue le 2026-09-14.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Safety Supervisor and Recruiter - Challenger (Saint-Rémi)* —
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 4/6 actives (67 %)
84 −- **GPS** : 0/6 actives (0 %)
85 −- **Mode** : 0/6 actives (0 %)
86 −- **Parution** : 6/6 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:20 — trouvées 6, +6, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 1
82 +- **Offres en base** : 12 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 3/7 actives (43 %)
84 +- **GPS** : 7/7 actives (100 %)
85 +- **Mode** : 0/7 actives (0 %)
86 +- **Parution** : 7/7 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 7, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 258
89 89
90 90 ## Erreurs & dépannage
91 91
@@ -107,3 +107,7 @@ Aucune erreur dans `sync_log` pour cette source.
107 107 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
108 108 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
109 109 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
110 +
111 +Commits touchant `jobka/connectors/challenger.py` :
112 +
113 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/charger_logistics_inc.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/charger_logistics_inc.md
7 7 Rôle : Fiche connecteur — Charger Logistics (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,11 +49,11 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 50 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Security Guard (Trucking Yard)* — Québec · ∅ · parue le 2026-08-21.
65 +Exemple réel : *Truck & Trailer Mechanic* — Québec · ∅ · parue le 2026-09-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Security Guard (Trucking Yard)* — Québec · ∅ · parue le
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/2 actives (0 %)
79 −- **GPS** : 2/2 actives (100 %)
80 −- **Mode** : 0/2 actives (0 %)
81 −- **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:13 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 107
77 +- **Offres en base** : 7 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/1 actives (0 %)
79 +- **GPS** : 1/1 actives (100 %)
80 +- **Mode** : 0/1 actives (0 %)
81 +- **Parution** : 1/1 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 364
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/charlotte_tilbury.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/charlotte_tilbury.md
7 7 Rôle : Fiche connecteur — Charlotte Tilbury (employeur direct, ATS workable)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 50 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Brand Expert - Montreal,Laval Qc (Temps Partiel)* — Montréal
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/2 actives (0 %)
79 79 - **GPS** : 2/2 actives (100 %)
80 80 - **Mode** : 0/2 actives (0 %)
81 81 - **Parution** : 2/2 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:13 — trouvées 2, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 27
82 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 2, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/chewicreative.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/chewicreative.md
7 7 Rôle : Fiche connecteur — Chewi Creative (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Senior 3D Generalist, Augmented Reality* — Montréal · ∅
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/4 actives (0 %)
84 84 - **GPS** : 4/4 actives (100 %)
85 85 - **Mode** : 4/4 actives (100 %)
86 86 - **Parution** : 4/4 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:13 — trouvées 4, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 4, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 265
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/chg.md +21 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/chg.md
7 7 Rôle : Fiche connecteur — C.H. Guenther & Son (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -52,19 +52,19 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 40 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 40 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 58 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 58 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Superviseur d'entrepôt II / Warehouse Supervisor II* — Dollard-des-Ormeaux · $71,880.00 - $127,599.00 · parue le 2026-07-30.
67 +Exemple réel : *Manager, Customer Development* — Dollard-des-Ormeaux · $95,938.00 - $178,010.00 · parue le 2026-09-14.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Superviseur d'entrepôt II / Warehouse Supervisor II* — Dolla
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 2/5 actives (40 %)
86 −- **GPS** : 0/5 actives (0 %)
87 −- **Mode** : 0/5 actives (0 %)
88 −- **Parution** : 5/5 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:13 — trouvées 5, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 2
84 +- **Offres en base** : 14 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 7/12 actives (58 %)
86 +- **GPS** : 12/12 actives (100 %)
87 +- **Mode** : 0/12 actives (0 %)
88 +- **Parution** : 12/12 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 12, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 259
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:16 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:23 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync chg` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='chg' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/childrensplace.md +21 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/childrensplace.md
7 7 Rôle : Fiche connecteur — Associé des ventes (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **26 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **27 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,8 +46,8 @@ Complétude mesurée sur les **26 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 88 % |
50 −| `region` — Région | région administrative | 23 % |
49 +| `city` — Ville | municipalité normalisée | 89 % |
50 +| `region` — Région | région administrative | 22 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
@@ -55,16 +55,16 @@ Complétude mesurée sur les **26 offres actives** de la source (base live, 2026
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 23 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 22 % |
66 66
67 −Exemple réel : *Associé des ventes - Place Versailles (saisonnier)* — 03018-Place Versailles · ∅ · parue le 2026-07-26.
67 +Exemple réel : *Associé en chef - Place Laurier #1 - Temps partiel* — 03021-Place Laurier #1 · ∅ · parue le 2026-09-04.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Associé des ventes - Place Versailles (saisonnier)* — 03018-
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 26 (dont **26 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/26 actives (0 %)
86 −- **GPS** : 6/26 actives (23 %)
87 −- **Mode** : 0/26 actives (0 %)
88 −- **Parution** : 26/26 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 26, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 27 (dont **27 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/27 actives (0 %)
86 +- **GPS** : 6/27 actives (22 %)
87 +- **Mode** : 0/27 actives (0 %)
88 +- **Parution** : 27/27 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 27, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:17 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:23 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync childrensplace` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='childrensplace' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/chu_quebec.md +16 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/chu_quebec.md
7 7 Rôle : Fiche connecteur — CHU de Québec — Université Laval (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **59 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **57 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **59 offres actives** de la source (base live, 2026
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 58 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 7 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 7 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 68 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 5 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 5 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 2 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 85 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 84 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Conseiller.ère cadre – Partenaire d’affaires – Concours 2026-49* — Québec · Selon les normes applicables au personnel d’encadrement du réseau de la santé et des servi… · parue le 2026-08-19.
67 +Exemple réel : *Chef de secteur – Hygiène et salubrité de soir à l’Hôpital du Saint-Sacrement – Concours 2…* — Québec · Selon les normes applicables au personnel d’encadrement du réseau de la santé et des servi… · parue le 2026-09-16.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Conseiller.ère cadre – Partenaire d’affaires – Concours
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 66 (dont **59 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 4/59 actives (7 %)
86 −- **GPS** : 59/59 actives (100 %)
87 −- **Mode** : 0/59 actives (0 %)
88 −- **Parution** : 59/59 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 59, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 122 (dont **57 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 3/57 actives (5 %)
86 +- **GPS** : 57/57 actives (100 %)
87 +- **Mode** : 0/57 actives (0 %)
88 +- **Parution** : 57/57 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 58, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 339
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/chum.md +17 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/chum.md
7 7 Rôle : Fiche connecteur — CHUM (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **30 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **29 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,21 +50,21 @@ Complétude mesurée sur les **30 offres actives** de la source (base live, 2026
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 7 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 10 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 3 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 3 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 3 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 10 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 97 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 93 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Directeur(trice) adjoint(e) – Volet opération et finances (OPL-3914)* — Montréal · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Externe en soins infirmiers – Été 2027* — Montréal · Salaire de 24,50 $/heure · parue le 2026-09-08.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Directeur(trice) adjoint(e) – Volet opération et finances (O
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 35 (dont **30 actives**, 28 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/30 actives (0 %)
86 −- **GPS** : 30/30 actives (100 %)
87 −- **Mode** : 0/30 actives (0 %)
88 −- **Parution** : 30/30 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 30, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 70 (dont **29 actives**, 21 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/29 actives (3 %)
86 +- **GPS** : 29/29 actives (100 %)
87 +- **Mode** : 2/29 actives (7 %)
88 +- **Parution** : 29/29 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 41, +2, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 339
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/churchdwight.md +15 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/churchdwight.md
7 7 Rôle : Fiche connecteur — Church & Dwight Canada (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,16 +55,16 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 33 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 25 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Electromécanicien(ne)* — Montréal · ∅ · parue le 2026-08-12.
67 +Exemple réel : *Spécialiste, Systèmes de la Qualité* — Montréal · ∅ · parue le 2026-09-16.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Electromécanicien(ne)* — Montréal · ∅ · parue le 2026-0
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/6 actives (0 %)
86 −- **GPS** : 6/6 actives (100 %)
87 −- **Mode** : 0/6 actives (0 %)
88 −- **Parution** : 6/6 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 6, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 95
84 +- **Offres en base** : 7 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/4 actives (0 %)
86 +- **GPS** : 4/4 actives (100 %)
87 +- **Mode** : 0/4 actives (0 %)
88 +- **Parution** : 4/4 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:47 — trouvées 4, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 352
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:22 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:18 |
99 +| Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 03:23 |
99 100
100 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync churchdwight` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='churchdwight' ORDER BY ts DESC LIMIT 5;"`
101 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/ci.md +19 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ci.md
7 7 Rôle : Fiche connecteur — Associé(e) au service (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,16 +55,16 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 0 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 33 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Regional Vice President, Wealth* — Montréal · ∅ · parue le 2026-08-18.
67 +Exemple réel : *Adjoint(e) aux ventes* — Montréal · ∅ · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Regional Vice President, Wealth* — Montréal · ∅ · parue
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 3 (dont **2 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/2 actives (0 %)
86 −- **GPS** : 2/2 actives (100 %)
87 −- **Mode** : 0/2 actives (0 %)
88 −- **Parution** : 2/2 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 2, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/3 actives (0 %)
86 +- **GPS** : 3/3 actives (100 %)
87 +- **Mode** : 0/3 actives (0 %)
88 +- **Parution** : 3/3 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:48 — trouvées 3, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 265
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 1 | 2026-09-05 03:14 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:23 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync ci` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ci' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cibc.md +18 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cibc.md
7 7 Rôle : Fiche connecteur — Banque CIBC (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **48 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **69 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **48 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 99 % |
50 +| `region` — Région | région administrative | 99 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 2 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 9 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 97 % |
66 66
67 −Exemple réel : *Mobile Financial Services Representative* — Kirkland · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Administrative Assistant - Bilingual* — Montréal · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Mobile Financial Services Representative* — Kirkland · ∅
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 83 (dont **48 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/48 actives (0 %)
86 −- **GPS** : 48/48 actives (100 %)
87 −- **Mode** : 1/48 actives (2 %)
88 −- **Parution** : 48/48 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 48, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 107
84 +- **Offres en base** : 149 (dont **69 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/69 actives (0 %)
86 +- **GPS** : 67/69 actives (97 %)
87 +- **Mode** : 6/69 actives (9 %)
88 +- **Parution** : 69/69 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:48 — trouvées 69, +0, ~2, -0
90 +- **Syncs enregistrés** (`sync_log`) : 364
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:22 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 1 | 2026-09-05 03:15 |
99 +| Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 03:23 |
99 100 | HTTPSConnectionPool(host='cibc.wd3.myworkdayjobs.com', port=443): Read timed out. (read ti… | 1 | 2026-08-17 21:23 |
100 101
101 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync cibc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cibc' ORDER BY ts DESC LIMIT 5;"`
modified docs/connecteurs/ciena.md +29 −20
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ciena.md
7 7 Rôle : Fiche connecteur — Ciena (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 57 % |
50 −| `region` — Région | région administrative | 57 % |
49 +| `city` — Ville | municipalité normalisée | 60 % |
50 +| `region` — Région | région administrative | 60 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 80 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 14 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 14 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 40 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 40 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 71 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 80 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 57 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 60 % |
66 66
67 −Exemple réel : *Technologue en photonique* — Québec · La fourchette salariale annuelle pour ce poste est de C$55,700 - C$88,900. · parue le 2026-08-06.
67 +Exemple réel : *NPI Test Engineer* — Montréal · Pay range $91,800 - $146,600 CAD · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Technologue en photonique* — Québec · La fourchette salaria
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/7 actives (14 %)
86 −- **GPS** : 4/7 actives (57 %)
87 −- **Mode** : 7/7 actives (100 %)
88 −- **Parution** : 7/7 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 7, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 8 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 2/5 actives (40 %)
86 +- **GPS** : 3/5 actives (60 %)
87 +- **Mode** : 4/5 actives (80 %)
88 +- **Parution** : 5/5 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:48 — trouvées 5, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 267
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 2 | 2026-09-19 03:21 |
99 +| 502 Server Error: Bad Gateway for url: https://ciena.wd5.myworkdayjobs.com/wday/cxs/ciena/… | 11 | 2026-08-29 10:30 |
100 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:23 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync ciena` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ciena' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
@@ -112,4 +118,7 @@ Aucune erreur dans `sync_log` pour cette source.
112 118
113 119 Commits touchant `jobka/connectors/ciena.py` :
114 120
121 +- `ae44d7c` 2026-08-29 [ka6] fix connecteur ciena: repli « détail seulement » pendant la panne d'index Workday du tenant — l'endpoint liste POST /wday/cxs/ciena/Careers/jobs renvoie 502 backend (errorCaseId Workday) pour tout le monde depuis ~12:39 EDT le 2026-08-28 (reconfirmé le 2026-08-29 depuis le nœud, via proxy résidentiel CA Oxylabs et en navigateur réel : le board React rend une page vide), MAIS l'API détail GET /wday/cxs/ciena/Careers/job/<externalPath> répond 200 avec données complètes et ciena.com/careers pointe toujours vers ce board (pas de migration). Le connecteur revalide donc les offres actives connues en base via l'API détail quand la liste échoue en 5xx : 404/posted=false = offre retirée, aucune donnée inventée (tout vient du jobPostingInfo live), et si RIEN n'est validable l'erreur d'origine est propagée (sync en échec, inventaire préservé). Dès que l'index Workday revient, le chemin liste normal reprend seul. Test réel : run.py sync ciena → ok, found=7 (= médiane 7.0), updated=5, removed=0, 7 actives en base. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
122 +- `dab8068` 2026-08-29 Revert "[ka6] fix connecteur ciena: panne PARTIELLE côté Workday (tenant ciena.wd5 uniquement) — l'endpoint liste POST /wday/cxs/ciena/Careers/jobs renvoie 502 avec errorCaseId Workday depuis ~12:39 EDT le 2026-08-28, pour TOUT LE MONDE : vérifié depuis le nœud ET via proxy résidentiel canadien Oxylabs (502 identique, errorCaseId différent = vraie erreur backend), toutes variantes de body/locale/en-têtes testées (GET=400, POST=502). Le reste du tenant est SAIN : board 200, API détail /job/R031484 200 avec données complètes, tenant/siteId inchangés (ciena/Careers dans le HTML), autres tenants wd5 (vfc, dupont, fiserv) 200 depuis ce nœud = ni blocage IP ni panne wd5 globale. Pas de migration d'ATS : ciena.com/careers (403 direct, contourné via Scrapfly) pointe toujours vers ciena.wd5.myworkdayjobs.com/Careers ; l'API legacy refreshFacet répond mais vide (même index de recherche en panne). AUCUN bug dans le connecteur ni changement de code : panne externe transitoire, le cycle horaire de job-ka-sync reprendra seul à la fin de la panne Workday. Les 7 offres actives (médiane 7.0) sont préservées en base — un sync en échec ne purge rien. Sync isolé rejoué pour trace (502 reproduit via le connecteur réel, actives=7 après). Note de contexte ajoutée au connecteur. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200."
123 +- `4faea71` 2026-08-28 [ka6] fix connecteur ciena: panne PARTIELLE côté Workday (tenant ciena.wd5 uniquement) — l'endpoint liste POST /wday/cxs/ciena/Careers/jobs renvoie 502 avec errorCaseId Workday depuis ~12:39 EDT le 2026-08-28, pour TOUT LE MONDE : vérifié depuis le nœud ET via proxy résidentiel canadien Oxylabs (502 identique, errorCaseId différent = vraie erreur backend), toutes variantes de body/locale/en-têtes testées (GET=400, POST=502). Le reste du tenant est SAIN : board 200, API détail /job/R031484 200 avec données complètes, tenant/siteId inchangés (ciena/Careers dans le HTML), autres tenants wd5 (vfc, dupont, fiserv) 200 depuis ce nœud = ni blocage IP ni panne wd5 globale. Pas de migration d'ATS : ciena.com/careers (403 direct, contourné via Scrapfly) pointe toujours vers ciena.wd5.myworkdayjobs.com/Careers ; l'API legacy refreshFacet répond mais vide (même index de recherche en panne). AUCUN bug dans le connecteur ni changement de code : panne externe transitoire, le cycle horaire de job-ka-sync reprendra seul à la fin de la panne Workday. Les 7 offres actives (médiane 7.0) sont préservées en base — un sync en échec ne purge rien. Sync isolé rejoué pour trace (502 reproduit via le connecteur réel, actives=7 après). Note de contexte ajoutée au connecteur. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
115 124 - `c45c753` 2026-08-23 Vague C — +620 connecteurs employeurs directs (350 -> 968)
modified docs/connecteurs/cima2.md +15 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cima2.md
7 7 Rôle : Fiche connecteur — CIMA+ (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **236 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **232 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -48,21 +48,21 @@ Complétude mesurée sur les **236 offres actives** de la source (base live, 202
48 48 | `region` — Région | région administrative | 100 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 85 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 84 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 3 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 3 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 56 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 95 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 91 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 0 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Ingénieure ou Ingénieur senior en hydraulique fluviale (Banque de candidatures)* — Montréal · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Hiver 2027 \| Stage en soutien TI* — Laval · Ce poste varie de 21,40 $ à 23,95 $ de l'heure, selon votre profil académique, le nombre d… · parue le 2026-09-21.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -77,15 +77,15 @@ Exemple réel : *Ingénieure ou Ingénieur senior en hydraulique fluviale (Banqu
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 −- **Offres en base** : 309 (dont **236 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/236 actives (0 %)
84 −- **GPS** : 236/236 actives (100 %)
85 −- **Mode** : 201/236 actives (85 %)
86 −- **Parution** : 236/236 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 236, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 107
82 +- **Offres en base** : 422 (dont **232 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 6/232 actives (3 %)
84 +- **GPS** : 232/232 actives (100 %)
85 +- **Mode** : 196/232 actives (84 %)
86 +- **Parution** : 232/232 actives (100 %)
87 +- **Dernier sync** : 2026-09-21 16:48 — trouvées 232, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 364
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/cineplex.md +25 −20
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cineplex.md
7 7 Rôle : Fiche connecteur — Cineplex (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **22 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 91 % |
49 +| `city` — Ville | municipalité normalisée | 96 % |
50 +| `region` — Région | région administrative | 88 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 5 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 4 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 5 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 5 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 4 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 4 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 58 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 41 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 46 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 96 % |
66 66
67 −Exemple réel : *Représentant du service aux invités Bilingue - Travail de la maison* — Québec · Salaire : 19,35 $/heure + prime de bilinguisme applicable · parue le 2026-08-19.
67 +Exemple réel : *Représentant du service aux invités Bilingue - Travail de la maison* — Québec · Salaire : 19,70 $/heure + prime de bilinguisme applicable · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *Représentant du service aux invités Bilingue - Travail de la
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 24 (dont **22 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 1/22 actives (5 %)
86 −- **GPS** : 22/22 actives (100 %)
87 −- **Mode** : 1/22 actives (5 %)
88 −- **Parution** : 22/22 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:14 — trouvées 22, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 27
84 +- **Offres en base** : 42 (dont **24 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 1/24 actives (4 %)
86 +- **GPS** : 23/24 actives (96 %)
87 +- **Mode** : 1/24 actives (4 %)
88 +- **Parution** : 24/24 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:48 — trouvées 24, +1, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 283
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 1 | 2026-09-05 03:18 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:23 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync cineplex` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cineplex' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/circlek.md +20 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/circlek.md
7 7 Rôle : Fiche connecteur — Couche-Tard / Circle K (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **1032 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **987 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **1032 offres actives** de la source (base live, 20
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 63 % |
49 +| `city` — Ville | municipalité normalisée | 65 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 84 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 62 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 62 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 83 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 64 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 64 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 27 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 79 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 78 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 63 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 65 % |
66 66
67 −Exemple réel : *Préposé(e) service à la clientèle -ACT* — ∅ · Salaire (jour et soir) : 17,10$/h (incluant prime*) · parue le 2026-08-24.
67 +Exemple réel : *Assistant(e) gérant(e)- ACT* — Saint-Jean-sur-Richelieu · Salaire : 18,60 $/h (Incluant prime**) · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Préposé(e) service à la clientèle -ACT* — ∅ · Salaire
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 1229 (dont **1032 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 635/1032 actives (62 %)
86 −- **GPS** : 649/1032 actives (63 %)
87 −- **Mode** : 2/1032 actives (0 %)
88 −- **Parution** : 1032/1032 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:15 — trouvées 1030, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 107
84 +- **Offres en base** : 1859 (dont **987 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 629/987 actives (64 %)
86 +- **GPS** : 641/987 actives (65 %)
87 +- **Mode** : 2/987 actives (0 %)
88 +- **Parution** : 987/987 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:49 — trouvées 983, +2, ~1, -4
90 +- **Syncs enregistrés** (`sync_log`) : 363
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,8 +95,9 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 1 | 2026-09-05 03:19 |
99 +| Expecting value: line 1 column 1 (char 0) | 3 | 2026-08-29 03:23 |
98 100 | 520 Server Error: <none> for url: https://circlek.wd3.myworkdayjobs.com/wday/cxs/circlek/C… | 2 | 2026-08-23 00:18 |
99 −| Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-22 05:04 |
100 101 | 503 Server Error: Service Unavailable for url: https://circlek.wd3.myworkdayjobs.com/wday/… | 1 | 2026-08-19 16:57 |
101 102
102 103 - Rejouer un sync isolé : `.venv/bin/python run.py sync circlek` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='circlek' ORDER BY ts DESC LIMIT 5;"`
modified docs/connecteurs/cirquedusoleil.md +17 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cirquedusoleil.md
7 7 Rôle : Fiche connecteur — Cirque du Soleil (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **23 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **20 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -44,25 +44,25 @@ Complétude mesurée sur les **23 offres actives** de la source (base live, 2026
44 44 | `employer` — Employeur | nom de l'entreprise | 100 % |
45 45 | `url` — URL | lien direct vers l'offre originale | 100 % |
46 46 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 87 % |
48 −| `region` — Région | région administrative | 87 % |
47 +| `city` — Ville | municipalité normalisée | 85 % |
48 +| `region` — Région | région administrative | 85 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 91 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 85 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 70 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 87 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 85 % |
64 64
65 −Exemple réel : *Responsable du développement de produits – Produits de consommation \| Product Development…* — Montréal · ∅ · parue le 2026-08-20.
65 +Exemple réel : *Conseiller(ère) - Fiscalité des particuliers \| Advisor – Individual Taxation* — Montréal · ∅ · parue le 2026-09-18.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Responsable du développement de produits – Produits de conso
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 25 (dont **23 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/23 actives (0 %)
79 −- **GPS** : 20/23 actives (87 %)
80 −- **Mode** : 23/23 actives (100 %)
81 −- **Parution** : 23/23 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:15 — trouvées 23, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 95
77 +- **Offres en base** : 36 (dont **20 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/20 actives (0 %)
79 +- **GPS** : 17/20 actives (85 %)
80 +- **Mode** : 20/20 actives (100 %)
81 +- **Parution** : 20/20 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:49 — trouvées 20, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 351
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/cisco.md +23 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cisco.md
7 7 Rôle : Fiche connecteur — Cisco (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 100 % |
50 −| `region` — Région | région administrative | 100 % |
49 +| `city` — Ville | municipalité normalisée | 80 % |
50 +| `region` — Région | région administrative | 40 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 67 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 20 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 40 % |
66 66
67 −Exemple réel : *Software Technical Leader, Remote, Canada* — Montréal · The starting salary range posted for this position is $169,600.00 to $214,500.00 and refle… · parue le 2026-08-24.
67 +Exemple réel : *Solutions Designer* — ∅ · The starting salary range posted for this position is $201,900.00 to $255,200.00 and refle… · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,25 @@ Exemple réel : *Software Technical Leader, Remote, Canada* — Montréal · The
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 3/3 actives (100 %)
86 −- **GPS** : 3/3 actives (100 %)
87 −- **Mode** : 2/3 actives (67 %)
88 −- **Parution** : 3/3 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:16 — trouvées 3, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 9 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/5 actives (100 %)
86 +- **GPS** : 2/5 actives (40 %)
87 +- **Mode** : 1/5 actives (20 %)
88 +- **Parution** : 5/5 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:49 — trouvées 5, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 264
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html; charset=UTF-8) : Expecting value: li… | 1 | 2026-09-19 03:31 |
99 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 1 | 2026-09-05 03:20 |
100 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:23 |
95 101
96 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync cisco` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cisco' ORDER BY ts DESC LIMIT 5;"`
97 103 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cisss_abitibi.md +13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cisss_abitibi.md
7 7 Rôle : Fiche connecteur — CISSS de l'Abitibi-Témiscamingue (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **140 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **142 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,11 +51,11 @@ Complétude mesurée sur les **140 offres actives** de la source (base live, 202
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 24 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 21 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 96 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 92 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **140 offres actives** de la source (base live, 202
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Technicien ou technicienne en bâtiment* — Rouyn-Noranda · ∅ · parue le 2026-08-24.
67 +Exemple réel : *Chef de service ambulatoire et de l’accès continuum SAPA – MRC de Rouyn-Noranda* — Rouyn-Noranda · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Technicien ou technicienne en bâtiment* — Rouyn-Noranda ·
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 142 (dont **140 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/140 actives (0 %)
86 −- **GPS** : 140/140 actives (100 %)
87 −- **Mode** : 0/140 actives (0 %)
88 −- **Parution** : 140/140 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:16 — trouvées 140, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 159 (dont **142 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/142 actives (0 %)
86 +- **GPS** : 142/142 actives (100 %)
87 +- **Mode** : 0/142 actives (0 %)
88 +- **Parution** : 142/142 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 144, +2, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 338
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cisss_chaudiere_appalaches.md +17 −17
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cisss_chaudiere_appalaches.md
7 7 Rôle : Fiche connecteur — CISSS de Chaudière-Appalaches (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **113 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **101 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **113 offres actives** de la source (base live, 202
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 36 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 8 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 8 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 42 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 3 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 3 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 1 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 87 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 75 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 77 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Conseiller cadre stratégique pour les milieux de vie* — Lévis · De 91 837 $ à 119 388 $ (Classe 37) · parue le 2026-08-21.
67 +Exemple réel : *Coordonnateur d’activités – Alphonse-Desjardins (Lévis) – Temps partiel (7/14) – Soir – IN…* — Lévis · Classe 39 (entre 101 965 $ et 132 555 4) · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Conseiller cadre stratégique pour les milieux de vie* — Lév
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 118 (dont **113 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 9/113 actives (8 %)
86 −- **GPS** : 113/113 actives (100 %)
87 −- **Mode** : 0/113 actives (0 %)
88 −- **Parution** : 113/113 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:16 — trouvées 113, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 156 (dont **101 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 3/101 actives (3 %)
86 +- **GPS** : 101/101 actives (100 %)
87 +- **Mode** : 0/101 actives (0 %)
88 +- **Parution** : 101/101 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 110, +1, ~0, -2
90 +- **Syncs enregistrés** (`sync_log`) : 338
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cisss_lanaudiere.md +16 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cisss_lanaudiere.md
7 7 Rôle : Fiche connecteur — CISSS de Lanaudière (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **131 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **96 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **131 offres actives** de la source (base live, 202
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 58 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 5 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 5 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 66 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 6 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 6 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 93 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 75 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 77 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *CONSEILLER CADRE EN SOINS INFIRMIERS VOLET INFIRMIÈRE PRATICIENNE SPÉCIALISÉE SOINS DE PRE…* — Joliette · Maximum de la classe : 132 555 $ annuel · parue le 2026-08-24.
67 +Exemple réel : *CHEF D’UNITÉ DE SOINS INFIRMIERS EN HÉBERGEMENT (MILIEU DE VIE) CHSLD ST-ANTOINE-DE-PADOUE…* — Joliette · Minimum de la classe : 96 770 $ annuel · parue le 2026-09-15.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *CONSEILLER CADRE EN SOINS INFIRMIERS VOLET INFIRMIÈRE PRATICIE
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 135 (dont **131 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 6/131 actives (5 %)
86 −- **GPS** : 131/131 actives (100 %)
87 −- **Mode** : 0/131 actives (0 %)
88 −- **Parution** : 131/131 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 131, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 170 (dont **96 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 6/96 actives (6 %)
86 +- **GPS** : 96/96 actives (100 %)
87 +- **Mode** : 0/96 actives (0 %)
88 +- **Parution** : 96/96 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 107, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 338
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cisss_laurentides.md +16 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cisss_laurentides.md
7 7 Rôle : Fiche connecteur — CISSS des Laurentides (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **141 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **134 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,12 +50,12 @@ Complétude mesurée sur les **141 offres actives** de la source (base live, 202
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 1 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 21 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 11 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 11 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 4 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 25 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 6 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 6 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 94 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 72 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **141 offres actives** de la source (base live, 202
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Auxiliaire de recherche clinique – Unité de recherche clinique (URC)* — Saint-Jérôme · Salaire : de 25,61 $ à 28,65 $ l’heure · parue le 2026-08-21.
67 +Exemple réel : *Pharmacien(ne)* — Saint-Jérôme · Nouvelle échelle salariale prévue à l’entente : de 53,48 $/h à 74,24 $/h à compter d’octob… · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Auxiliaire de recherche clinique – Unité de recherche cliniq
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 151 (dont **141 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 16/141 actives (11 %)
86 −- **GPS** : 141/141 actives (100 %)
87 −- **Mode** : 1/141 actives (1 %)
88 −- **Parution** : 141/141 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 142, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 220 (dont **134 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 8/134 actives (6 %)
86 +- **GPS** : 134/134 actives (100 %)
87 +- **Mode** : 5/134 actives (4 %)
88 +- **Parution** : 134/134 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 136, +0, ~2, -0
90 +- **Syncs enregistrés** (`sync_log`) : 338
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cisss_laval.md +16 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cisss_laval.md
7 7 Rôle : Fiche connecteur — CISSS de Laval (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **148 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **157 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,11 +51,11 @@ Complétude mesurée sur les **148 offres actives** de la source (base live, 202
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 9 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 1 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 1 % |
57 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 46 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 10 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 3 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 3 % |
57 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 54 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 94 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 90 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **148 offres actives** de la source (base live, 202
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *CHEF DE SERVICE RELATIONS DE TRAVAIL – DRH, REQ26-5439* — Laval · 101 965$ à 132 555$ · parue le 2026-08-21.
67 +Exemple réel : *CHEF DE SERVICE – ARCHIVES MÉDICALES (ACCÈS, PRP ET CODIFICATION) \| DSMSSSRE \| REQ-26-56…* — Laval · 91 837$ à 119 388$ · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *CHEF DE SERVICE RELATIONS DE TRAVAIL – DRH, REQ26-5439* — L
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 158 (dont **148 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 2/148 actives (1 %)
86 −- **GPS** : 148/148 actives (100 %)
87 −- **Mode** : 0/148 actives (0 %)
88 −- **Parution** : 148/148 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 148, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 229 (dont **157 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/157 actives (3 %)
86 +- **GPS** : 157/157 actives (100 %)
87 +- **Mode** : 0/157 actives (0 %)
88 +- **Parution** : 157/157 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 157, +0, ~0, -1
90 +- **Syncs enregistrés** (`sync_log`) : 338
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cisss_outaouais.md +16 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cisss_outaouais.md
7 7 Rôle : Fiche connecteur — CISSS de l'Outaouais (employeur direct, ATS wpjobmanager)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **105 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **95 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **105 offres actives** de la source (base live, 202
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 8 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 31 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 31 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 2 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 29 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 29 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 100 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 84 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 83 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Chef de service – clin. ext., clin. d’ortho., de l’AOC, de la neuro. ambulatoire, de pneum…* — Gatineau · Minimum : 96 770 $ · parue le 2026-08-19.
67 +Exemple réel : *Infirmier clinicien ou infirmière clinicienne* — Gatineau · Recevez jusqu’à 35 000 $ en montant forfaitaire d’installation! · parue le 2026-09-18.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Chef de service – clin. ext., clin. d’ortho., de l’AOC, d
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 108 (dont **105 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 33/105 actives (31 %)
86 −- **GPS** : 105/105 actives (100 %)
87 −- **Mode** : 0/105 actives (0 %)
88 −- **Parution** : 105/105 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 105, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 82
84 +- **Offres en base** : 137 (dont **95 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 28/95 actives (29 %)
86 +- **GPS** : 95/95 actives (100 %)
87 +- **Mode** : 0/95 actives (0 %)
88 +- **Parution** : 95/95 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 98, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 338
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/citronhygiene.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/citronhygiene.md
7 7 Rôle : Fiche connecteur — Citronhygiene (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,22 +49,22 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 −| `postal_code` — Code postal | code postal si publié | 33 % |
52 +| `postal_code` — Code postal | code postal si publié | 40 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 100 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 60 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Spécialiste de produit, consommables* — Brossard · Rémunération globale prévue : 48 000 $ à 70 000 $ · parue le 2026-08-19.
67 +Exemple réel : *Directeur de la conformité et de la sécurité (bilingue – anglais/français)* — Brossard · Salaire : 95 000 $ – 110 000 $ par année + admissibilité en prime · parue le 2026-08-25.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Spécialiste de produit, consommables* — Brossard · Rémuné
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 6/6 actives (100 %)
86 −- **GPS** : 6/6 actives (100 %)
87 −- **Mode** : 0/6 actives (0 %)
88 −- **Parution** : 6/6 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 6, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 7 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 5/5 actives (100 %)
86 +- **GPS** : 5/5 actives (100 %)
87 +- **Mode** : 0/5 actives (0 %)
88 +- **Parution** : 5/5 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 5, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 264
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/ciusss_est_montreal.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ciusss_est_montreal.md
7 7 Rôle : Fiche connecteur — CIUSSS de l'Est-de-l'Île-de-Montréal (employeur direct, ATS taleo)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -39,7 +39,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 ## Champs → schéma
41 41
42 −Complétude mesurée sur les **25 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
42 +Complétude mesurée sur les **23 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
43 43
44 44 | Champ (`jobs.*`) | Rôle | Complétude |
45 45 |---|---|---|
@@ -52,7 +52,7 @@ Complétude mesurée sur les **25 offres actives** de la source (base live, 2026
52 52 | `address` — Adresse | adresse du lieu de travail | 0 % |
53 53 | `postal_code` — Code postal | code postal si publié | 0 % |
54 54 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
55 −| `employment_type` — Type | temps_plein / temps_partiel / … | 4 % |
55 +| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
56 56 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
57 57 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
58 58 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
@@ -65,7 +65,7 @@ Complétude mesurée sur les **25 offres actives** de la source (base live, 2026
65 65 | `apply_url` — Candidature | lien de candidature directe | 0 % |
66 66 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
67 67
68 −Exemple réel : *Technicien(ne) en administration - Dotation interne (remplacement)* — Montréal · ∅ · parue le 2026-08-24.
68 +Exemple réel : *Infirmier(ère) clinicien(ne) de liaison en dépendance et itinérance* — Montréal · ∅ · parue le 2026-09-17.
69 69
70 70 ## Fréquence & budgets
71 71
@@ -80,15 +80,15 @@ Exemple réel : *Technicien(ne) en administration - Dotation interne (remplaceme
80 80
81 81 ## Volumétrie & complétude live
82 82
83 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
83 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
84 84
85 −- **Offres en base** : 26 (dont **25 actives**, 14 masquées comme doublons `dup_of`)
86 −- **Salaire** : 0/25 actives (0 %)
87 −- **GPS** : 25/25 actives (100 %)
88 −- **Mode** : 0/25 actives (0 %)
89 −- **Parution** : 25/25 actives (100 %)
90 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 25, +0, ~0, -0
91 −- **Syncs enregistrés** (`sync_log`) : 95
85 +- **Offres en base** : 37 (dont **23 actives**, 10 masquées comme doublons `dup_of`)
86 +- **Salaire** : 0/23 actives (0 %)
87 +- **GPS** : 23/23 actives (100 %)
88 +- **Mode** : 0/23 actives (0 %)
89 +- **Parution** : 23/23 actives (100 %)
90 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 23, +0, ~0, -0
91 +- **Syncs enregistrés** (`sync_log`) : 351
92 92
93 93 ## Erreurs & dépannage
94 94
modified docs/connecteurs/cliniqued.md +14 −36
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cliniqued.md
7 7 Rôle : Fiche connecteur — Clinique D (employeur direct, ATS jazzhr)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,33 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
40 −
41 −| Champ (`jobs.*`) | Rôle | Complétude |
42 −|---|---|---|
43 −| `title` — Titre | titre du poste | 100 % |
44 −| `employer` — Employeur | nom de l'entreprise | 100 % |
45 −| `url` — URL | lien direct vers l'offre originale | 100 % |
46 −| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 100 % |
48 −| `region` — Région | région administrative | 100 % |
49 −| `address` — Adresse | adresse du lieu de travail | 0 % |
50 −| `postal_code` — Code postal | code postal si publié | 0 % |
51 −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 −| `date_posted` — Date de parution | ISO 8601 | 100 % |
58 −| `date_deadline` — Date limite | date limite pour postuler | 100 % |
59 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 −| `apply_url` — Candidature | lien de candidature directe | 0 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 −
65 −Exemple réel : *Concierge Esthétique / Technicienne en laser – Laval* — Laval · ∅ · parue le 2026-06-16.
39 +*Aucune offre active en base pour cette source.*
66 40
67 41 ## Fréquence & budgets
68 42
@@ -77,15 +51,15 @@ Exemple réel : *Concierge Esthétique / Technicienne en laser – Laval* — La
77 51
78 52 ## Volumétrie & complétude live
79 53
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
54 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 55
82 −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 −- **Salaire** : 0/1 actives (0 %)
84 −- **GPS** : 0/1 actives (0 %)
85 −- **Mode** : 0/1 actives (0 %)
86 −- **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:20 — trouvées 1, +1, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 1
56 +- **Offres en base** : 1 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
57 +- **Salaire** : 0/0 actives (—)
58 +- **GPS** : 0/0 actives (—)
59 +- **Mode** : 0/0 actives (—)
60 +- **Parution** : 0/0 actives (—)
61 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 0, +0, ~0, -0
62 +- **Syncs enregistrés** (`sync_log`) : 258
89 63
90 64 ## Erreurs & dépannage
91 65
@@ -107,3 +81,7 @@ Aucune erreur dans `sync_log` pour cette source.
107 81 - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;
108 82 - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ;
109 83 - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
84 +
85 +Commits touchant `jobka/connectors/cliniqued.py` :
86 +
87 +- `df3faf0` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/cloudchamberen.md +11 −11
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cloudchamberen.md
7 7 Rôle : Fiche connecteur — Cloud Chamber (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Lead Animator* — Montréal · ∅ · parue le 2026-08-19.
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 13 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/12 actives (0 %)
79 −- **GPS** : 12/12 actives (100 %)
80 −- **Mode** : 0/12 actives (0 %)
81 −- **Parution** : 12/12 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 12, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 8
77 +- **Offres en base** : 13 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/9 actives (0 %)
79 +- **GPS** : 9/9 actives (100 %)
80 +- **Mode** : 0/9 actives (0 %)
81 +- **Parution** : 9/9 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 9, +0, ~0, -1
83 +- **Syncs enregistrés** (`sync_log`) : 264
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/cloudchamberfr.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cloudchamberfr.md
7 7 Rôle : Fiche connecteur — Cloud Chamber Montréal (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -49,11 +49,11 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 −| `employment_type` — Type | temps_plein / temps_partiel / … | 8 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Chef·fe d’équipe animation* — Montréal · ∅ · parue l
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 13 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 0/12 actives (0 %)
79 −- **GPS** : 12/12 actives (100 %)
80 −- **Mode** : 0/12 actives (0 %)
81 −- **Parution** : 12/12 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 12, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 28
77 +- **Offres en base** : 13 (dont **9 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 0/9 actives (0 %)
79 +- **GPS** : 9/9 actives (100 %)
80 +- **Mode** : 0/9 actives (0 %)
81 +- **Parution** : 9/9 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 9, +0, ~0, -1
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/cloudimperiumgames.md +12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cloudimperiumgames.md
7 7 Rôle : Fiche connecteur — Comptable (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -55,7 +55,7 @@ Complétude mesurée sur les **14 offres actives** de la source (base live, 2026
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **14 offres actives** de la source (base live, 2026
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Comptable* — Montréal · ∅ · parue le 2026-08-10.
67 +Exemple réel : *Responsable Programmation Gameplay / Lead Gameplay Programmer* — Montréal · ∅ · parue le 2026-09-14.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Comptable* — Montréal · ∅ · parue le 2026-08-10.
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 14 (dont **14 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/14 actives (0 %)
86 −- **GPS** : 14/14 actives (100 %)
87 −- **Mode** : 0/14 actives (0 %)
88 −- **Parution** : 14/14 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 14, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 17 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/12 actives (0 %)
86 +- **GPS** : 12/12 actives (100 %)
87 +- **Mode** : 0/12 actives (0 %)
88 +- **Parution** : 12/12 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 12, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 264
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/clubassurance.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/clubassurance.md
7 7 Rôle : Fiche connecteur — Club Assurance (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Courtier/Courtière en assurance de dommages des particuliers*
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 1/1 actives (100 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 0/1 actives (0 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 264
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/clubmonaco.md +6 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/clubmonaco.md
7 7 Rôle : Fiche connecteur — Club Monaco (employeur direct, ATS greenhouse)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -72,15 +72,15 @@ Exemple réel : *Assistant Manager/Gestionnaire adjoint à temps plein* — Lava
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 77 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 0/1 actives (0 %)
79 79 - **GPS** : 1/1 actives (100 %)
80 80 - **Mode** : 0/1 actives (0 %)
81 81 - **Parution** : 1/1 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 1, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 28
82 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 1, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 284
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/clydeco.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/clydeco.md
7 7 Rôle : Fiche connecteur — Avocat·e de litige / Litigation Associate (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -50,12 +50,12 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 80 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 83 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 83 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 61 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Adjoint·e juridique, Litige /Legal Assistant, Litigation* — Montréal · ∅ · parue le 2026-08-19.
67 +Exemple réel : *Adjoint·e administratif·ve / Administrative Assistant* — Montréal · ∅ · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Adjoint·e juridique, Litige /Legal Assistant, Litigation* —
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/5 actives (0 %)
86 −- **GPS** : 5/5 actives (100 %)
87 −- **Mode** : 4/5 actives (80 %)
88 −- **Parution** : 5/5 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 5, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 8 (dont **6 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/6 actives (0 %)
86 +- **GPS** : 6/6 actives (100 %)
87 +- **Mode** : 5/6 actives (83 %)
88 +- **Parution** : 6/6 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 6, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 263
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cmlabs.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cmlabs.md
7 7 Rôle : Fiche connecteur — CM Labs (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *Développeur Logiciel Senior - Vortex Studio /Senior Software D
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 1/1 actives (100 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:17 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 8
87 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 263
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/cmpams.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cmpams.md
7 7 Rôle : Fiche connecteur — Cmpams (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **19 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 95 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 75 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 84 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Technologue en Industrialisation* — Châteauguay · ∅ · parue le 2026-07-13.
67 +Exemple réel : *Opérateur* — Châteauguay · ∅ · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Technologue en Industrialisation* — Châteauguay · ∅ · pa
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 12 (dont **12 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/12 actives (0 %)
86 −- **GPS** : 12/12 actives (100 %)
87 −- **Mode** : 0/12 actives (0 %)
88 −- **Parution** : 12/12 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 12, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 25 (dont **19 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/19 actives (0 %)
86 +- **GPS** : 19/19 actives (100 %)
87 +- **Mode** : 0/19 actives (0 %)
88 +- **Parution** : 19/19 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 19, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 263
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/cogeco.md +21 −20
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cogeco.md
7 7 Rôle : Fiche connecteur — Cogeco (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **45 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **43 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -46,25 +46,25 @@ Complétude mesurée sur les **45 offres actives** de la source (base live, 2026
46 46 | `employer` — Employeur | nom de l'entreprise | 100 % |
47 47 | `url` — URL | lien direct vers l'offre originale | 100 % |
48 48 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
49 −| `city` — Ville | municipalité normalisée | 89 % |
50 −| `region` — Région | région administrative | 58 % |
49 +| `city` — Ville | municipalité normalisée | 88 % |
50 +| `region` — Région | région administrative | 44 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 −| `work_mode` — Mode | presentiel / hybride / teletravail | 2 % |
53 +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 16 % |
56 −| `salary_label` — Libellé salaire | texte salarial original | 16 % |
55 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 14 % |
56 +| `salary_label` — Libellé salaire | texte salarial original | 14 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 74 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 42 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 33 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 −| `gps` — GPS | lat/lng (géocodage sans invention) | 62 % |
65 +| `gps` — GPS | lat/lng (géocodage sans invention) | 49 % |
66 66
67 −Exemple réel : *Technician, Customer and Network Facing* — Grasonville · For candidates whose primary place of work will be in Maryland, the expected salary range … · parue le 2026-08-12.
67 +Exemple réel : *Technicien de réseau* — Baie St-Paul · Le salaire horaire varie de 29,44 $ à 47,96$ · parue le 2026-09-17.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Technician, Customer and Network Facing* — Grasonville · For
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 55 (dont **45 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 7/45 actives (16 %)
86 −- **GPS** : 28/45 actives (62 %)
87 −- **Mode** : 1/45 actives (2 %)
88 −- **Parution** : 45/45 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 45, +0, ~1, -0
90 −- **Syncs enregistrés** (`sync_log`) : 107
84 +- **Offres en base** : 79 (dont **43 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 6/43 actives (14 %)
86 +- **GPS** : 21/43 actives (49 %)
87 +- **Mode** : 0/43 actives (0 %)
88 +- **Parution** : 43/43 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 43, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 362
91 91
92 92 ## Erreurs & dépannage
93 93
@@ -95,7 +95,8 @@ Erreurs relevées dans `sync_log` :
95 95
96 96 | Erreur | Occurrences | Dernière fois |
97 97 |---|---|---|
98 −| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-22 03:23 |
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 1 | 2026-09-05 03:22 |
99 +| Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 03:24 |
99 100 | 503 Server Error: Service Unavailable for url: https://cogeco.wd3.myworkdayjobs.com/wday/c… | 1 | 2026-08-19 16:57 |
100 101
101 102 - Rejouer un sync isolé : `.venv/bin/python run.py sync cogeco` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cogeco' ORDER BY ts DESC LIMIT 5;"`
modified docs/connecteurs/cohere.md +16 −16
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cohere.md
7 7 Rôle : Fiche connecteur — Cohere (employeur direct, ATS ashby)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **42 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **40 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -44,25 +44,25 @@ Complétude mesurée sur les **42 offres actives** de la source (base live, 2026
44 44 | `employer` — Employeur | nom de l'entreprise | 100 % |
45 45 | `url` — URL | lien direct vers l'offre originale | 100 % |
46 46 | `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 −| `city` — Ville | municipalité normalisée | 14 % |
47 +| `city` — Ville | municipalité normalisée | 10 % |
48 48 | `region` — Région | région administrative | 2 % |
49 49 | `address` — Adresse | adresse du lieu de travail | 0 % |
50 50 | `postal_code` — Code postal | code postal si publié | 0 % |
51 51 | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % |
52 52 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 17 % |
54 −| `salary_label` — Libellé salaire | texte salarial original | 17 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 92 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 92 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 40 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 60 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 61 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 −| `gps` — GPS | lat/lng (géocodage sans invention) | 36 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 32 % |
64 64
65 −Exemple réel : *Member of Technical Staff, Multilingual* — ∅ · - For candidates in the US, the Compensation Range is: $110,000 - $370,000 [USD] · parue le 2026-08-17.
65 +Exemple réel : *Software Engineer, Security* — ∅ · $180K - $325K · parue le 2026-09-17.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Member of Technical Staff, Multilingual* — ∅ · - For candi
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 47 (dont **42 actives**, 0 masquées comme doublons `dup_of`)
78 −- **Salaire** : 7/42 actives (17 %)
79 −- **GPS** : 15/42 actives (36 %)
80 −- **Mode** : 42/42 actives (100 %)
81 −- **Parution** : 42/42 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 42, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 108
77 +- **Offres en base** : 51 (dont **40 actives**, 0 masquées comme doublons `dup_of`)
78 +- **Salaire** : 37/40 actives (92 %)
79 +- **GPS** : 13/40 actives (32 %)
80 +- **Mode** : 40/40 actives (100 %)
81 +- **Parution** : 40/40 actives (100 %)
82 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 40, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 363
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/colabor.md +15 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/colabor.md
7 7 Rôle : Fiche connecteur — Colabor (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **18 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **13 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -49,22 +49,22 @@ Complétude mesurée sur les **18 offres actives** de la source (base live, 2026
49 49 | `city` — Ville | municipalité normalisée | 100 % |
50 50 | `region` — Région | région administrative | 100 % |
51 51 | `address` — Adresse | adresse du lieu de travail | 100 % |
52 −| `postal_code` — Code postal | code postal si publié | 67 % |
52 +| `postal_code` — Code postal | code postal si publié | 69 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 28 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 31 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 85 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 89 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 92 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *Commis entrepôt syndiqué/Commise entrepôt syndiquée* — Saint-Nicolas · ∅ · parue le 2026-08-21.
67 +Exemple réel : *Contremaître/Contremaîtresse* — Saint-Nicolas · ∅ · parue le 2026-09-21.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Commis entrepôt syndiqué/Commise entrepôt syndiquée* — Sa
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 18 (dont **18 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/18 actives (0 %)
86 −- **GPS** : 18/18 actives (100 %)
87 −- **Mode** : 0/18 actives (0 %)
88 −- **Parution** : 18/18 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 18, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 27 (dont **13 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/13 actives (0 %)
86 +- **GPS** : 13/13 actives (100 %)
87 +- **Mode** : 0/13 actives (0 %)
88 +- **Parution** : 13/13 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 13, +0, ~2, -0
90 +- **Syncs enregistrés** (`sync_log`) : 263
91 91
92 92 ## Erreurs & dépannage
93 93
modified docs/connecteurs/coledesentrepreneursduqubec.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/coledesentrepreneursduqubec.md
7 7 Rôle : Fiche connecteur — École des entrepreneurs du Québec (employeur direct, ATS smartrecruiters)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,15 +77,15 @@ Exemple réel : *CONSEILLER.ÈRE AUX ENTREPRENEURS* — Montréal · ∅ · paru
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 0/1 actives (0 %)
84 84 - **GPS** : 1/1 actives (100 %)
85 85 - **Mode** : 1/1 actives (100 %)
86 86 - **Parution** : 1/1 actives (100 %)
87 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 1, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 28
87 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 283
89 89
90 90 ## Erreurs & dépannage
91 91
modified docs/connecteurs/colliers.md +20 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/colliers.md
7 7 Rôle : Fiche connecteur — Colliers (employeur direct, ATS workday)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 39 ## Champs → schéma
40 40
41 −Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
41 +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
42 42
43 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 44 |---|---|---|
@@ -51,20 +51,20 @@ Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-
51 51 | `address` — Adresse | adresse du lieu de travail | 0 % |
52 52 | `postal_code` — Code postal | code postal si publié | 0 % |
53 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 −| `employment_type` — Type | temps_plein / temps_partiel / … | 57 % |
54 +| `employment_type` — Type | temps_plein / temps_partiel / … | 70 % |
55 55 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 0 % |
56 56 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
57 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
58 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 57 % |
61 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
62 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 64 | `apply_url` — Candidature | lien de candidature directe | 100 % |
65 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67 −Exemple réel : *un(e) Chef(fe) de projet en construction \| Construction Project Manager* — Montréal · ∅ · parue le 2026-08-17.
67 +Exemple réel : *Un Administrateur Immobilier \| Property Administrator* — Montréal · ∅ · parue le 2026-09-16.
68 68
69 69 ## Fréquence & budgets
70 70
@@ -79,19 +79,24 @@ Exemple réel : *un(e) Chef(fe) de projet en construction \| Construction Projec
79 79
80 80 ## Volumétrie & complétude live
81 81
82 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
82 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
83 83
84 −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`)
85 −- **Salaire** : 0/7 actives (0 %)
86 −- **GPS** : 7/7 actives (100 %)
87 −- **Mode** : 0/7 actives (0 %)
88 −- **Parution** : 7/7 actives (100 %)
89 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 7, +0, ~0, -0
90 −- **Syncs enregistrés** (`sync_log`) : 8
84 +- **Offres en base** : 11 (dont **10 actives**, 0 masquées comme doublons `dup_of`)
85 +- **Salaire** : 0/10 actives (0 %)
86 +- **GPS** : 10/10 actives (100 %)
87 +- **Mode** : 0/10 actives (0 %)
88 +- **Parution** : 10/10 actives (100 %)
89 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 10, +0, ~0, -0
90 +- **Syncs enregistrés** (`sync_log`) : 263
91 91
92 92 ## Erreurs & dépannage
93 93
94 −Aucune erreur dans `sync_log` pour cette source.
94 +Erreurs relevées dans `sync_log` :
95 +
96 +| Erreur | Occurrences | Dernière fois |
97 +|---|---|---|
98 +| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 1 | 2026-09-05 03:23 |
99 +| Expecting value: line 1 column 1 (char 0) | 1 | 2026-08-29 03:24 |
95 100
96 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync colliers` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='colliers' ORDER BY ts DESC LIMIT 5;"`
97 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified docs/connecteurs/cologix.md +8 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cologix.md
7 7 Rôle : Fiche connecteur — Cologix (employeur direct, ATS lever)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,7 @@ Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-25 08:45 EDT).
39 +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-09-21 18:06 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -53,7 +53,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
53 53 | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 25 % |
54 54 | `salary_label` — Libellé salaire | texte salarial original | 0 % |
55 55 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57 57 | `date_posted` — Date de parution | ISO 8601 | 100 % |
58 58 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
59 59 | `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-
62 62 | `apply_url` — Candidature | lien de candidature directe | 100 % |
63 63 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64 64
65 −Exemple réel : *Technicien (ne), Opérations de Centre de Données- Horaires 00H- 08H* — Montréal · ∅ · parue le 2026-08-24.
65 +Exemple réel : *Superviseur de la sécurité* — Québec · ∅ · parue le 2026-09-10.
66 66
67 67 ## Fréquence & budgets
68 68
@@ -72,15 +72,15 @@ Exemple réel : *Technicien (ne), Opérations de Centre de Données- Horaires 00
72 72
73 73 ## Volumétrie & complétude live
74 74
75 −*(mesuré le 2026-08-25 08:45 EDT dans `data/jobka.db`)*
75 +*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
76 76
77 −- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
77 +- **Offres en base** : 5 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
78 78 - **Salaire** : 1/4 actives (25 %)
79 79 - **GPS** : 4/4 actives (100 %)
80 80 - **Mode** : 4/4 actives (100 %)
81 81 - **Parution** : 4/4 actives (100 %)
82 −- **Dernier sync** : 2026-08-25 08:18 — trouvées 4, +0, ~0, -0
83 −- **Syncs enregistrés** (`sync_log`) : 28
82 +- **Dernier sync** : 2026-09-21 16:50 — trouvées 4, +0, ~0, -0
83 +- **Syncs enregistrés** (`sync_log`) : 283
84 84
85 85 ## Erreurs & dépannage
86 86
modified docs/connecteurs/cominar.md +1 −1
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cominar.md
7 7 Rôle : Fiche connecteur — Cominar (employeur direct, ATS dayforce)
8 −Généré : 2026-08-25 08:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->

Diff truncated — file too large.