[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.
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.