[ka6] fix connecteur trener_robotics: faux positif supervision « volume QC nul » (50e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Trener Robotics (trener.ai, « physical AI » pour robots industriels, plateforme Acteris) est un employeur international (HQ San Jose CA, bureaux Trondheim Norvège et Barcelone) à présence montréalaise occasionnelle ; son unique offre QC jamais vue (c9446546 « Senior Software Engineer, Integration Suite », parue 2026-06-30, médiane historique 0.5) était MULTI-LIEUX « San Jose OR Montreal OR Trondheim » — c'est le lieu SECONDAIRE Montréal qui passait le filtre _keep (lieu principal donc location_label/city en base = « Trondheim, Norway », ce qui intriguait au premier regard : le filtre est sain, is_quebec_location re-testé False sur tous les libellés non-QC). Elle a été DÉPUBLIÉE par l'employeur entre 10:34 et 12:53 EDT le 2026-10-07 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss à 15:08), sync_log VERT en continu (ok=1). Marqueur Ashby confirmé live (2e confirmation après blockstream e270bec) : détail dépublié = HTTP 200 (SPA) + window.__appData.posting = null. Board re-vérifié vivant : API 200, 4 offres (San Jose US-HQ ×3, Trondheim+Barcelone), is_quebec_location False sur tous les libellés, AUCUN lieu QC. Pas de migration d'ATS : trener.ai/company#careers (200) embarque toujours jobs.ashbyhq.com/Trener-Robotics (slug insensible à la casse, mêmes ids d'offres que l'API). Artefact vague C comblé dans sources.json : url employeur vide → https://trener.ai (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant que Trener ne republie pas d'offre avec un lieu québécois, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que blockstream e270bec / pokafr 035acb7 / reallygreatreading 8d4d3df / jove 8c2fc01). Docstring trener_robotics.py enrichie (chronologie + nature du volume + mécanique multi-lieux). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme ashby sur tenant vivant lightspeedhq : found=62, ok=1, 0,4 s. Fiches docs/connecteurs/ trener_robotics.md + ats-ashby.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1131 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
5 changed files +71 −75
modified
data/sources.json
+1 −1
@@ -4711,7 +4711,7 @@ | ||
| 4711 | 4711 | { |
| 4712 | 4712 | "id": "trener_robotics", |
| 4713 | 4713 | "name": "Trener", |
| 4714 | − "url": "", | |
| 4714 | + "url": "https://trener.ai", | |
| 4715 | 4715 | "careers_url": "https://jobs.ashbyhq.com/trener-robotics", |
| 4716 | 4716 | "sectors": [ |
| 4717 | 4717 | "Sport", |
modified
docs/connecteurs/INDEX.md
+23 −23
@@ -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-10-07 15:45 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-10-07 16:05 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-10-07 15: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-10-07 16:05 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 **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25260 offres actives** (23406 directes, 1854 portails ; 109 masquées comme doublons inter-sources, soit 25151 visibles). 1134 fiches. | |
| 17 | +**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25252 offres actives** (23398 directes, 1854 portails ; 109 masquées comme doublons inter-sources, soit 25143 visibles). 1134 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,12 +22,12 @@ 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) | 232 | 7780 | 45 % | 87 % | | |
| 25 | +| [`workday`](ats-workday.md) | 232 | 7778 | 45 % | 87 % | | |
| 26 | 26 | | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 3008 | 17 % | 99 % | |
| 27 | −| [`dayforce`](ats-dayforce.md) | 129 | 1882 | 9 % | 100 % | | |
| 27 | +| [`dayforce`](ats-dayforce.md) | 129 | 1879 | 9 % | 100 % | | |
| 28 | 28 | | [`workable`](ats-workable.md) | 71 | 1866 | 18 % | 100 % | |
| 29 | −| [`successfactors`](ats-successfactors.md) | 12 | 1691 | 20 % | 98 % | | |
| 30 | −| [`workland`](ats-workland.md) | 1 | 1222 | 35 % | 100 % | | |
| 29 | +| [`successfactors`](ats-successfactors.md) | 12 | 1694 | 20 % | 98 % | | |
| 30 | +| [`workland`](ats-workland.md) | 1 | 1217 | 35 % | 100 % | | |
| 31 | 31 | | [`njoyn`](ats-njoyn.md) | 11 | 1205 | 68 % | 85 % | |
| 32 | 32 | | [`greenhouse`](ats-greenhouse.md) | 132 | 845 | 19 % | 100 % | |
| 33 | 33 | | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 750 | 5 % | 100 % | |
@@ -41,7 +41,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 41 | 41 | | [`teamtailor`](ats-teamtailor.md) | 9 | 155 | 32 % | 95 % | |
| 42 | 42 | | [`jazzhr`](ats-jazzhr.md) | 28 | 152 | 14 % | 92 % | |
| 43 | 43 | | [`adp`](ats-adp.md) | 17 | 144 | 41 % | 95 % | |
| 44 | −| [`taleo`](ats-taleo.md) | 5 | 129 | 0 % | 100 % | | |
| 44 | +| [`taleo`](ats-taleo.md) | 5 | 128 | 0 % | 100 % | | |
| 45 | 45 | | [`digitalrecruiters`](ats-digitalrecruiters.md) | 2 | 83 | 95 % | 47 % | |
| 46 | 46 | | [`ultipro`](ats-ultipro.md) | 4 | 61 | 48 % | 100 % | |
| 47 | 47 | | [`eightfold`](ats-eightfold.md) | 1 | 59 | 81 % | 100 % | |
@@ -61,24 +61,24 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 61 | 61 | |
| 62 | 62 | | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK | |
| 63 | 63 | |---|---|---|---|---|---| |
| 64 | −| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1222 | 35 % | 100 % | ✅ | | |
| 65 | −| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1038 | 69 % | 66 % | ✅ | | |
| 64 | +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1217 | 35 % | 100 % | ✅ | | |
| 65 | +| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1037 | 69 % | 66 % | ✅ | | |
| 66 | 66 | | [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 1029 | 98 % | 91 % | ✅ | |
| 67 | −| [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 859 | 0 % | 99 % | ✅ | | |
| 67 | +| [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 861 | 0 % | 99 % | ✅ | | |
| 68 | 68 | | [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 844 | 26 % | 100 % | ✅ | |
| 69 | 69 | | [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 745 | 98 % | 98 % | ✅ | |
| 70 | 70 | | [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 574 | 32 % | 100 % | ✅ | |
| 71 | 71 | | [TEHORA](tehora.md) | [`workable`](ats-workable.md) | 409 | 0 % | 100 % | ✅ | |
| 72 | 72 | | [Globalhr](globalhr.md) | [`workday`](ats-workday.md) | 302 | 0 % | 83 % | ✅ | |
| 73 | 73 | | [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 299 | 0 % | 96 % | ✅ | |
| 74 | −| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 284 | 1 % | 93 % | ✅ | | |
| 74 | +| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 288 | 1 % | 92 % | ✅ | | |
| 75 | 75 | | [Go RH](gorh.md) | [`lever`](ats-lever.md) | 265 | 18 % | 98 % | ✅ | |
| 76 | 76 | | [Slihrms](slihrms.md) | [`workday`](ats-workday.md) | 254 | 11 % | 94 % | ✅ | |
| 77 | 77 | | [Alstom](alstom.md) | [`successfactors`](ats-successfactors.md) | 247 | 9 % | 100 % | ✅ | |
| 78 | −| [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 244 | 1 % | 100 % | ✅ | | |
| 78 | +| [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 242 | 1 % | 100 % | ✅ | | |
| 79 | 79 | | [Rechercher des](gianttiger.md) | [`workday`](ats-workday.md) | 242 | 1 % | 100 % | ✅ | |
| 80 | −| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 219 | 25 % | 100 % | ✅ | | |
| 81 | −| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 209 | 4 % | 99 % | ✅ | | |
| 80 | +| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 220 | 25 % | 100 % | ✅ | | |
| 81 | +| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 208 | 4 % | 98 % | ✅ | | |
| 82 | 82 | | [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 185 | 96 % | 96 % | ✅ | |
| 83 | 83 | | [Consignaction (AQRCB)](consignaction.md) | [`workday`](ats-workday.md) | 170 | 84 % | 99 % | ✅ | |
| 84 | 84 | | [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 169 | 21 % | 100 % | ✅ | |
@@ -93,15 +93,15 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 93 | 93 | | [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | [`workday`](ats-workday.md) | 138 | 99 % | 100 % | ✅ | |
| 94 | 94 | | [Groupe Helios](groupehelios.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 124 | 1 % | 100 % | ✅ | |
| 95 | 95 | | [Intact Corporation financière](intactfc.md) | [`workday`](ats-workday.md) | 121 | 0 % | 79 % | ✅ | |
| 96 | −| [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 119 | 0 % | 100 % | ✅ | | |
| 96 | +| [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 120 | 0 % | 100 % | ✅ | | |
| 97 | 97 | | [CISSS des Laurentides](cisss_laurentides.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 117 | 3 % | 98 % | ✅ | |
| 98 | 98 | | [Vidéotron](videotron.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 116 | 7 % | 100 % | ✅ | |
| 99 | 99 | | [Deloitte Canada](deloitte.md) | [`successfactors`](ats-successfactors.md) | 114 | 98 % | 100 % | ✅ | |
| 100 | 100 | | [Genetec](genetec_inc.md) | [`workable`](ats-workable.md) | 99 | 0 % | 100 % | ✅ | |
| 101 | −| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 98 | 91 % | 80 % | ✅ | | |
| 101 | +| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 97 | 91 % | 79 % | ✅ | | |
| 102 | 102 | | [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 97 | 4 % | 100 % | ✅ | |
| 103 | 103 | | [Dentalcorp](dentalcorp.md) | [`workday`](ats-workday.md) | 97 | 16 % | 100 % | ✅ | |
| 104 | −| [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 95 | 79 % | 100 % | ✅ | | |
| 104 | +| [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 96 | 79 % | 99 % | ✅ | | |
| 105 | 105 | | [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 92 | 51 % | 10 % | ✅ | |
| 106 | 106 | | [HIKINEX](recruiting.md) | [`breezy`](ats-breezy.md) | 87 | 0 % | 100 % | ✅ | |
| 107 | 107 | | [Linen Chest](linenchest.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 87 | 8 % | 100 % | ✅ | |
@@ -110,9 +110,9 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 110 | 110 | | [Renaud-Bray](renaud_bray.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 83 | 1 % | 100 % | ✅ | |
| 111 | 111 | | [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 82 | 24 % | 99 % | ✅ | |
| 112 | 112 | | [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 82 | 5 % | 100 % | ✅ | |
| 113 | −| [Bulkbarn](bulkbarn.md) | [`dayforce`](ats-dayforce.md) | 77 | 0 % | 100 % | ✅ | | |
| 114 | 113 | | [Promutuel Assurance](promutuel.md) | [`workday`](ats-workday.md) | 76 | 1 % | 100 % | ✅ | |
| 115 | 114 | | [Agnico Eagle Mines](agnico_eagle.md) | [`taleo`](ats-taleo.md) | 75 | 0 % | 100 % | ✅ | |
| 115 | +| [Bulkbarn](bulkbarn.md) | [`dayforce`](ats-dayforce.md) | 74 | 0 % | 100 % | ✅ | | |
| 116 | 116 | | [iA Groupe financier](ia_groupe.md) | [`workday`](ats-workday.md) | 73 | 100 % | 97 % | ✅ | |
| 117 | 117 | | [Gflenv](gflenv.md) | [`workday`](ats-workday.md) | 72 | 6 % | 92 % | ✅ | |
| 118 | 118 | | [Dexterra](dexterra.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 66 | 0 % | 100 % | ✅ | |
@@ -136,8 +136,8 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 136 | 136 | | [Automobileendirect](automobileendirect.md) | [`dayforce`](ats-dayforce.md) | 54 | 0 % | 100 % | ✅ | |
| 137 | 137 | | [Groupe Canam](groupecanam.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 54 | 76 % | 98 % | ✅ | |
| 138 | 138 | | [McKesson Canada](mckesson.md) | [`workday`](ats-workday.md) | 54 | 81 % | 85 % | ✅ | |
| 139 | −| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 53 | 96 % | 96 % | ✅ | | |
| 140 | 139 | | [PwC Canada](pwc.md) | [`workday`](ats-workday.md) | 53 | 98 % | 72 % | ✅ | |
| 140 | +| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 52 | 96 % | 96 % | ✅ | | |
| 141 | 141 | | [Gray Collection (Groupe Antonopoulos)](graycollection.md) | [`dayforce`](ats-dayforce.md) | 52 | 0 % | 100 % | ✅ | |
| 142 | 142 | | [Laura Canada](lauracanada.md) | [`dayforce`](ats-dayforce.md) | 49 | 0 % | 100 % | ✅ | |
| 143 | 143 | | [CHU de Québec — Université Laval](chu_quebec.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 47 | 2 % | 100 % | ✅ | |
@@ -162,9 +162,9 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 162 | 162 | | [Cogeco](cogeco.md) | [`workday`](ats-workday.md) | 41 | 20 % | 49 % | ✅ | |
| 163 | 163 | | [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 41 | 0 % | 100 % | ✅ | |
| 164 | 164 | | [Manuvie](manulife.md) | [`workday`](ats-workday.md) | 41 | 95 % | 59 % | ✅ | |
| 165 | −| [Advanceauto](advanceauto.md) | [`workday`](ats-workday.md) | 40 | 0 % | 45 % | ✅ | | |
| 166 | 165 | | [Lesymcaquebec](lesymcaquebec.md) | [`dayforce`](ats-dayforce.md) | 40 | 20 % | 100 % | ✅ | |
| 167 | 166 | | [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 40 | 55 % | 100 % | ✅ | |
| 167 | +| [Advanceauto](advanceauto.md) | [`workday`](ats-workday.md) | 39 | 0 % | 44 % | ✅ | | |
| 168 | 168 | | [Info-Ways](info_ways.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 39 | 0 % | 100 % | ✅ | |
| 169 | 169 | | [Sopra Steria](soprasteria1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 39 | 0 % | 100 % | ✅ | |
| 170 | 170 | | [Cohere](cohere.md) | [`ashby`](ats-ashby.md) | 38 | 92 % | 29 % | ✅ | |
@@ -252,12 +252,12 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 252 | 252 | | [Préparateur de commandes](sysco.md) | [`workday`](ats-workday.md) | 22 | 9 % | 91 % | ✅ | |
| 253 | 253 | | [Wolseley Canada](wolseley.md) | [`workday`](ats-workday.md) | 22 | 0 % | 100 % | ✅ | |
| 254 | 254 | | [Alsglobal](alsglobal.md) | [`workday`](ats-workday.md) | 21 | 5 % | 90 % | ✅ | |
| 255 | −| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 21 | 0 % | 100 % | ✅ | | |
| 256 | 255 | | [Cmpams](cmpams.md) | [`dayforce`](ats-dayforce.md) | 21 | 0 % | 100 % | ✅ | |
| 257 | 256 | | [dcbel](dcbel.md) | [`bamboohr`](ats-bamboohr.md) | 21 | 0 % | 100 % | ✅ | |
| 258 | 257 | | [Groupe Mach](groupemach.md) | [`dayforce`](ats-dayforce.md) | 21 | 10 % | 100 % | ✅ | |
| 259 | 258 | | [mthree](mthreerecruitingportal.md) | [`greenhouse`](ats-greenhouse.md) | 21 | 0 % | 100 % | ✅ | |
| 260 | 259 | | [Talan](talan.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 21 | 0 % | 100 % | ✅ | |
| 260 | +| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 20 | 0 % | 100 % | ✅ | | |
| 261 | 261 | | [Fund Accountant / Comptable de Fonds](sagardholdings.md) | [`workday`](ats-workday.md) | 20 | 15 % | 100 % | ✅ | |
| 262 | 262 | | [Galderma](galderma.md) | [`workday`](ats-workday.md) | 20 | 20 % | 100 % | ✅ | |
| 263 | 263 | | [OPAL-RT Technologies](opalrt.md) | [`bamboohr`](ats-bamboohr.md) | 20 | 0 % | 100 % | ✅ | |
@@ -299,7 +299,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 299 | 299 | | [Premierparks](premierparks.md) | [`dayforce`](ats-dayforce.md) | 17 | 6 % | 100 % | ✅ | |
| 300 | 300 | | [Scalian](scalian.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 17 | 18 % | 100 % | ✅ | |
| 301 | 301 | | [AECOM](aecom2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 16 | 0 % | 94 % | ✅ | |
| 302 | −| [CAA-Québec](caaquebec.md) | [`workday`](ats-workday.md) | 16 | 38 % | 100 % | ✅ | | |
| 303 | 302 | | [Cuisinier(ère) 2, Restaurant Marcus & Lounge (Sur appel) / Cook 2 ...](fourseasons.md) | [`workday`](ats-workday.md) | 16 | 0 % | 100 % | ✅ | |
| 304 | 303 | | [Egis Group](egisgroup.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 16 | 0 % | 100 % | ✅ | |
| 305 | 304 | | [Frima Studio](frimastudio.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 16 | 0 % | 100 % | ✅ | |
@@ -313,6 +312,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 313 | 312 | | [Allstate Canada](allstate.md) | [`workday`](ats-workday.md) | 15 | 20 % | 73 % | ✅ | |
| 314 | 313 | | [Aylo](aylo.md) | [`greenhouse`](ats-greenhouse.md) | 15 | 0 % | 100 % | ✅ | |
| 315 | 314 | | [Aylo](aylofr.md) | [`greenhouse`](ats-greenhouse.md) | 15 | 0 % | 100 % | ✅ | |
| 315 | +| [CAA-Québec](caaquebec.md) | [`workday`](ats-workday.md) | 15 | 40 % | 100 % | ✅ | | |
| 316 | 316 | | [CONTRÔLEUR](novatech.md) | [`dayforce`](ats-dayforce.md) | 15 | 27 % | 100 % | ✅ | |
| 317 | 317 | | [dentago](dentago.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 15 | 7 % | 67 % | ✅ | |
| 318 | 318 | | [DRW](drweng.md) | [`greenhouse`](ats-greenhouse.md) | 15 | 0 % | 100 % | ✅ | |
modified
docs/connecteurs/ats-ashby.md
+13 −13
@@ -5,7 +5,7 @@ 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-10-07 15:25 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-10-07 16:05 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,10 +40,10 @@ Généré : 2026-10-07 15:25 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 40 | 40 | |
| 41 | 41 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 42 | 42 | |---|---|---|---|---|---|---| |
| 43 | −| [Lightspeed Commerce](lightspeedhq.md) | 62 | 3 % | 100 % | 100 % | 2026-10-07 15:24 | ✅ | | |
| 43 | +| [Lightspeed Commerce](lightspeedhq.md) | 62 | 3 % | 100 % | 100 % | 2026-10-07 16:05 | ✅ | | |
| 44 | 44 | | [MaintainX](maintainx.md) | 61 | 70 % | 72 % | 100 % | 2026-10-07 14:49 | ✅ | |
| 45 | −| [Cohere](cohere.md) | 38 | 92 % | 29 % | 100 % | 2026-10-07 14:18 | ✅ | | |
| 46 | −| [Baseten](baseten.md) | 23 | 100 % | 0 % | 100 % | 2026-10-07 14:04 | ✅ | | |
| 45 | +| [Cohere](cohere.md) | 38 | 92 % | 29 % | 100 % | 2026-10-07 16:03 | ✅ | | |
| 46 | +| [Baseten](baseten.md) | 23 | 100 % | 0 % | 100 % | 2026-10-07 15:50 | ✅ | | |
| 47 | 47 | | [Directive](directive.md) | 22 | 5 % | 0 % | 100 % | 2026-10-07 14:20 | ✅ | |
| 48 | 48 | | [Tetrix](tetrix.md) | 10 | 100 % | 10 % | 100 % | 2026-10-07 15:06 | ✅ | |
| 49 | 49 | | [Maya HTT](maya_htt.md) | 10 | 0 % | 100 % | 100 % | 2026-10-07 14:49 | ✅ | |
@@ -53,7 +53,7 @@ Généré : 2026-10-07 15:25 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 53 | 53 | | [Eli Health](eli.md) | 5 | 0 % | 100 % | 100 % | 2026-10-07 14:23 | ✅ | |
| 54 | 54 | | [SOVRA](sovra.md) | 5 | 0 % | 100 % | 100 % | 2026-10-07 15:04 | ✅ | |
| 55 | 55 | | [Neo Financial](neofinancial.md) | 4 | 100 % | 100 % | 0 % | 2026-10-07 14:52 | ✅ | |
| 56 | −| [AMI](ami.md) | 4 | 0 % | 0 % | 100 % | 2026-10-07 14:02 | ✅ | | |
| 56 | +| [AMI](ami.md) | 4 | 0 % | 0 % | 100 % | 2026-10-07 15:49 | ✅ | | |
| 57 | 57 | | [inBeat Agency](inbeat_agency.md) | 4 | 0 % | 50 % | 100 % | 2026-10-07 14:39 | ✅ | |
| 58 | 58 | | [Fuse Energy](fuse.md) | 3 | 0 % | 100 % | 0 % | 2026-10-07 14:26 | ✅ | |
| 59 | 59 | | [Hopper](hopper.md) | 3 | 0 % | 67 % | 100 % | 2026-10-07 14:39 | ✅ | |
@@ -64,23 +64,23 @@ Généré : 2026-10-07 15:25 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 64 | 64 | | [Paradox](paradox.md) | 3 | 0 % | 0 % | 100 % | 2026-10-07 14:54 | ✅ | |
| 65 | 65 | | [Periodic Labs](periodic_labs.md) | 3 | 100 % | 67 % | 33 % | 2026-10-07 14:54 | ✅ | |
| 66 | 66 | | [Serve Robotics](serverobotics.md) | 3 | 100 % | 0 % | 100 % | 2026-10-07 15:01 | ✅ | |
| 67 | −| [Billups](billups.md) | 2 | 100 % | 100 % | 100 % | 2026-10-07 14:06 | ✅ | | |
| 67 | +| [Billups](billups.md) | 2 | 100 % | 100 % | 100 % | 2026-10-07 15:52 | ✅ | | |
| 68 | 68 | | [Exegy](exegy.md) | 2 | 0 % | 100 % | 100 % | 2026-10-07 14:24 | ✅ | |
| 69 | −| [AtoB](atob.md) | 2 | 50 % | 50 % | 100 % | 2026-10-07 14:03 | ✅ | | |
| 69 | +| [AtoB](atob.md) | 2 | 50 % | 50 % | 100 % | 2026-10-07 15:49 | ✅ | | |
| 70 | 70 | | [Hinge Health](hinge_health.md) | 2 | 100 % | 100 % | 100 % | 2026-10-07 14:36 | ✅ | |
| 71 | 71 | | [No Saint](no_saint.md) | 1 | 0 % | 100 % | 100 % | 2026-10-07 14:52 | ✅ | |
| 72 | −| [Alan Canada](alan.md) | 1 | 0 % | 100 % | 0 % | 2026-10-07 14:01 | ✅ | | |
| 72 | +| [Alan Canada](alan.md) | 1 | 0 % | 100 % | 0 % | 2026-10-07 15:47 | ✅ | | |
| 73 | 73 | | [Lambda](lambda.md) | 1 | 100 % | 100 % | 100 % | 2026-10-07 14:47 | ✅ | |
| 74 | −| [Alygra Advisory](alygra.md) | 1 | 0 % | 100 % | 100 % | 2026-10-07 14:02 | ✅ | | |
| 75 | −| [Canadavisa](canadavisa.md) | 1 | 0 % | 100 % | 100 % | 2026-10-07 14:08 | ✅ | | |
| 74 | +| [Alygra Advisory](alygra.md) | 1 | 0 % | 100 % | 100 % | 2026-10-07 15:48 | ✅ | | |
| 75 | +| [Canadavisa](canadavisa.md) | 1 | 0 % | 100 % | 100 % | 2026-10-07 15:53 | ✅ | | |
| 76 | 76 | | [Myperch](myperch.md) | 1 | 100 % | 100 % | 100 % | 2026-10-07 14:52 | ✅ | |
| 77 | 77 | | [Infirmière Praticienne Spécialisée (IPS)](phoenix.md) | 1 | 0 % | 100 % | 100 % | 2026-10-07 14:54 | ✅ | |
| 78 | 78 | | [Industrious](industrious.md) | 0 | — | — | — | 2026-10-07 14:39 | ✅ | |
| 79 | 79 | | [OXIO Corporation](oxio.md) | 0 | — | — | — | 2026-10-07 14:54 | ✅ | |
| 80 | −| [Blockstream](blockstream.md) | 0 | — | — | — | 2026-10-07 15:24 | ✅ | | |
| 81 | −| [Delos Data](delos_data.md) | 0 | — | — | — | 2026-10-07 14:19 | ✅ | | |
| 80 | +| [Blockstream](blockstream.md) | 0 | — | — | — | 2026-10-07 15:52 | ✅ | | |
| 81 | +| [Delos Data](delos_data.md) | 0 | — | — | — | 2026-10-07 16:04 | ✅ | | |
| 82 | 82 | | [Rollstack](rollstack.md) | 0 | — | — | — | 2026-10-07 14:59 | ✅ | |
| 83 | −| [Trener](trener_robotics.md) | 0 | — | — | — | 2026-10-07 15:08 | ✅ | | |
| 83 | +| [Trener](trener_robotics.md) | 0 | — | — | — | 2026-10-07 16:05 | ✅ | | |
| 84 | 84 | |
| 85 | 85 | ## Licence / conformité |
| 86 | 86 | |
modified
docs/connecteurs/trener_robotics.md
+11 −37
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/trener_robotics.md |
| 7 | 7 | Rôle : Fiche connecteur — Trener (employeur direct, ATS ashby) |
| 8 | −Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-10-07 16:05 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-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 16 | 16 | |
| 17 | 17 | ## Description |
| 18 | 18 | |
| 19 | −- **Site** : [Trener]() | |
| 19 | +- **Site** : [Trener](https://trener.ai) | |
| 20 | 20 | - **Page carrières** : https://jobs.ashbyhq.com/trener-robotics |
| 21 | 21 | - **Secteurs** : Sport, SaaS |
| 22 | 22 | - **Région** : Montréal |
@@ -36,33 +36,7 @@ Généré : 2026-09-21 18:06 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-09-21 18:06 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 | 0 % | | |
| 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) | 0 % | | |
| 64 | − | |
| 65 | −Exemple réel : *Senior Software Engineer, Integration Suite* — Trondheim · ∅ · parue le 2026-06-30. | |
| 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 : *Senior Software Engineer, Integration Suite* — Trondheim · | ||
| 72 | 46 | |
| 73 | 47 | ## Volumétrie & complétude live |
| 74 | 48 | |
| 75 | −*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)* | |
| 49 | +*(mesuré le 2026-10-07 16:05 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** : 0/1 actives (0 %) | |
| 80 | −- **Mode** : 1/1 actives (100 %) | |
| 81 | −- **Parution** : 1/1 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-09-21 17:38 — trouvées 1, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 220 | |
| 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-10-07 16:05 — trouvées 0, +0, ~0, -0 | |
| 57 | +- **Syncs enregistrés** (`sync_log`) : 384 | |
| 84 | 58 | |
| 85 | 59 | ## Erreurs & dépannage |
| 86 | 60 | |
modified
jobka/connectors/trener_robotics.py
+23 −1
@@ -5,12 +5,34 @@ | ||
| 5 | 5 | # Fichier : jobka/connectors/trener_robotics.py |
| 6 | 6 | # Rôle : Connecteur Trener — ashby (org « trener-robotics ») |
| 7 | 7 | # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23] |
| 8 | −# Créé : 2026-08-23 Modifié : 2026-08-23 | |
| 8 | +# Créé : 2026-08-23 Modifié : 2026-10-07 | |
| 9 | 9 | # ============================================================================= |
| 10 | 10 | from .ashby import AshbyConnector |
| 11 | 11 | |
| 12 | 12 | |
| 13 | 13 | class TrenerRoboticsConnector(AshbyConnector): |
| 14 | + """Trener Robotics (trener.ai) — « physical AI » pour robots industriels | |
| 15 | + (plateforme Acteris), HQ San Jose CA + bureaux Trondheim (Norvège) et | |
| 16 | + Barcelone, avec une présence montréalaise occasionnelle. | |
| 17 | + | |
| 18 | + Volume structurellement FAIBLE côté Québec (médiane historique 0.5) : | |
| 19 | + l'unique offre QC jamais vue (c9446546 « Senior Software Engineer, | |
| 20 | + Integration Suite », parue 2026-06-30) était multi-lieux « San Jose OR | |
| 21 | + Montreal OR Trondheim » — c'est son lieu SECONDAIRE Montréal qui passait | |
| 22 | + le filtre `_keep` (le lieu principal, donc `location_label`/`city` en | |
| 23 | + base, était « Trondheim, Norway »). Elle a été DÉPUBLIÉE par l'employeur | |
| 24 | + entre 10:34 et 12:53 EDT le 2026-10-07 (found 1 → 0, puis removed=1 via | |
| 25 | + le garde-fou 2-miss) ; marqueur Ashby confirmé live : détail dépublié = | |
| 26 | + HTTP 200 (SPA) + window.__appData.posting = null. Board re-vérifié | |
| 27 | + vivant le 2026-10-07 : API 200, 4 offres (San Jose ×3, Trondheim/ | |
| 28 | + Barcelone), AUCUN lieu QC. Pas de migration d'ATS : trener.ai/company | |
| 29 | + #careers embarque toujours jobs.ashbyhq.com/Trener-Robotics (slug | |
| 30 | + insensible à la casse, mêmes ids que l'API). Tant que Trener ne republie | |
| 31 | + pas d'offre avec un lieu québécois, found=0 est le comportement CORRECT | |
| 32 | + — ce connecteur sera re-signalé périodiquement : structurel, pas une | |
| 33 | + panne (50e cas du pattern « volume QC nul », même classe Ashby que | |
| 34 | + blockstream e270bec).""" | |
| 35 | + | |
| 14 | 36 | source_id = 'trener_robotics' |
| 15 | 37 | EMPLOYER = 'Trener' |
| 16 | 38 | ORG = 'trener-robotics' |
| 17 | 39 | |